Python论坛  - 讨论区

标题:[python-chinese] [求助]规则表达式问题

2005年09月09日 星期五 22:16

gyb tension tensiongyb at gmail.com
Fri Sep 9 22:16:33 HKT 2005

问题描述:
有2个规则表达式a和b,b是a的子集,就是说满足b的也满足a,满足a不一定满足b.
现在我有一个文件,里面可能出现如下多种情形:
a*b*a
a*b
a*b*a*b*a*b*a
a*b*b*b*a
等等...(*代表其它乱七八糟的字符,其中a和b出现的次数也没准)
我想把其中以b打头且b结尾的那一段取出来,中间有a要保留,但两头的a必须去掉.
我要搜索b,中间的a就丢了,先搜索b,再搜索a,就有可能加入多余的a.
我觉得这个逻辑问题好像要转化为实际操作问题,re模块好像没有能够同时判断两种属性的方法
大侠们帮忙,看看还有什么招?

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年09月09日 星期五 23:04

boyeestudio boyee118 at gmail.com
Fri Sep 9 23:04:23 HKT 2005

这要使用"贪人匹配"和"懒人匹配"。
我给个例子,你可以参考参考,琢磨一下,我也是刚入门。不好意思!

#!/usr/bin/perl

$aa="a*b*b*b*a";

$aa=~m/a*(b.*)([*].*?)a$/;

print "long char: $1";
 其中"贪婪匹配"是用".*",而"懒人匹配"是用".*?".
我写的这个可以找出a*b*a*b*a*b*a等等,但对a*b不行,我先写这个,你参考一下吧!
关于上面的那两个名字,是《Perl5编程核心技术》上的译文说明。


 在05-9-9,gyb tension <tensiongyb at gmail.com> 写道: 
> 
> 问题描述:
> 有2个规则表达式a和b,b是a的子集,就是说满足b的也满足a,满足a不一定满足b.
> 现在我有一个文件,里面可能出现如下多种情形:
> a*b*a
> a*b
> a*b*a*b*a*b*a
> a*b*b*b*a
> 等等...(*代表其它乱七八糟的字符,其中a和b出现的次数也没准)
> 我想把其中以b打头且b结尾的那一段取出来,中间有a要保留,但两头的a必须去掉.
> 我要搜索b,中间的a就丢了,先搜索b,再搜索a,就有可能加入多余的a.
> 我觉得这个逻辑问题好像要转化为实际操作问题,re模块好像没有能够同时判断两种属性的方法
> 大侠们帮忙,看看还有什么招?
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050909/7bd540c0/attachment.htm

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年09月09日 星期五 23:08

boyeestudio boyee118 at gmail.com
Fri Sep 9 23:08:48 HKT 2005

我晕,我竟用perl写的。

在05-9-9,boyeestudio <boyee118 at gmail.com> 写道: 
> 
> 这要使用"贪人匹配"和"懒人匹配"。
> 我给个例子,你可以参考参考,琢磨一下,我也是刚入门。不好意思!
> 
> #!/usr/bin/perl
> 
> $aa="a*b*b*b*a";
> 
> $aa=~m/a*(b.*)([*].*?)a$/;
> 
> print "long char: $1";
>  其中"贪婪匹配"是用".*",而"懒人匹配"是用".*?".
> 我写的这个可以找出a*b*a*b*a*b*a等等,但对a*b不行,我先写这个,你参考一下吧!
> 关于上面的那两个名字,是《Perl5编程核心技术》上的译文说明。
> 
> 
>  在05-9-9,gyb tension <tensiongyb at gmail.com> 写道: 
> > 
> > 问题描述:
> > 有2个规则表达式a和b,b是a的子集,就是说满足b的也满足a,满足a不一定满足b.
> > 现在我有一个文件,里面可能出现如下多种情形:
> > a*b*a
> > a*b
> > a*b*a*b*a*b*a 
> > a*b*b*b*a
> > 等等...(*代表其它乱七八糟的字符,其中a和b出现的次数也没准)
> > 我想把其中以b打头且b结尾的那一段取出来,中间有a要保留,但两头的a必须去掉.
> > 我要搜索b,中间的a就丢了,先搜索b,再搜索a,就有可能加入多余的a.
> > 我觉得这个逻辑问题好像要转化为实际操作问题,re模块好像没有能够同时判断两种属性的方法
> > 大侠们帮忙,看看还有什么招?
> > 
> > _______________________________________________ 
> > python-chinese list
> > python-chinese at lists.python.cn
> > http://python.cn/mailman/listinfo/python-chinese 
> > 
> > 
> > 
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050909/01680d40/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年09月09日 星期五 23:17

鸦来 yalai.mho at gmail.com
Fri Sep 9 23:17:11 HKT 2005

搞得我很怀疑是不是进了Perl的社区了。
鸦来,yalai.mho at gmail.com
2005-9-9 
----- 收到以下来信内容 ----- 
发件人: boyeestudio 
收件人: tensiongyb,python-chinese 
时  间: 2005-09-09, 23:08:48
主  题: Re: [python-chinese] [求助]规则表达式问题


我晕,我竟用perl写的。


在05-9-9,boyeestudio <boyee118 at gmail.com> 写道: 
这要使用"贪人匹配"和"懒人匹配"。
我给个例子,你可以参考参考,琢磨一下,我也是刚入门。不好意思!
#!/usr/bin/perl
$aa="a*b*b*b*a";
$aa=~m/a*(b.*)([*].*?)a$/;
print "long char: $1";

其中"贪婪匹配"是用".*",而"懒人匹配"是用".*?".
我写的这个可以找出a*b*a*b*a*b*a等等,但对a*b不行,我先写这个,你参考一下吧!
关于上面的那两个名字,是《Perl5编程核心技术》上的译文说明。


 
在05-9-9,gyb tension <tensiongyb at gmail.com > 写道: 
问题描述:
有2个规则表达式a和b,b是a的子集,就是说满足b的也满足a,满足a不一定满足b.
现在我有一个文件,里面可能出现如下多种情形:
a*b*a
a*b
a*b*a*b*a*b*a 
a*b*b*b*a
等等...(*代表其它乱七八糟的字符,其中a和b出现的次数也没准)
我想把其中以b打头且b结尾的那一段取出来,中间有a要保留,但两头的a必须去掉. 
我要搜索b,中间的a就丢了,先搜索b,再搜索a,就有可能加入多余的a.
我觉得这个逻辑问题好像要转化为实际操作问题,re模块好像没有能够同时判断两种属性的方法
大侠们帮忙,看看还有什么招?


_______________________________________________ 
python-chinese list
python-chinese at lists.python.cn
http://python.cn/mailman/listinfo/python-chinese 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050909/fb164435/attachment.htm

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年09月10日 星期六 00:51

shhgs shhgs.efhilt at gmail.com
Sat Sep 10 00:51:40 HKT 2005

pat_b = ",,,"   ## b的pattern
re.findall( pat_b + ".+?" + pat_b, s)

感觉没a什么事

Non-Greedy匹配

On 9/9/05, gyb tension <tensiongyb at gmail.com> wrote:
> 问题描述:
> 有2个规则表达式a和b,b是a的子集,就是说满足b的也满足a,满足a不一定满足b.
> 现在我有一个文件,里面可能出现如下多种情形:
> a*b*a
> a*b
> a*b*a*b*a*b*a
> a*b*b*b*a
> 等等...(*代表其它乱七八糟的字符,其中a和b出现的次数也没准)
> 我想把其中以b打头且b结尾的那一段取出来,中间有a要保留,但两头的a必须去掉.
> 我要搜索b,中间的a就丢了,先搜索b,再搜索a,就有可能加入多余的a.
> 我觉得这个逻辑问题好像要转化为实际操作问题,re模块好像没有能够同时判断两种属性的方法
> 大侠们帮忙,看看还有什么招?
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年09月10日 星期六 09:34

王伟 王伟 buttonww at hotmail.com
Sat Sep 10 09:34:16 HKT 2005

如何实现象 sqlserver 那样的dateadd(-1, day, getdate()) 函数的功能. 
顺便谢谢上次帮我解答问题的friends!

_________________________________________________________________
与联机的朋友进行交流,请使用 MSN Messenger:  http://messenger.msn.com/cn  


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年09月10日 星期六 10:16

limodou limodou at gmail.com
Sat Sep 10 10:16:24 HKT 2005

在 05-9-10,王伟 王伟<buttonww at hotmail.com> 写道:
> 如何实现象 sqlserver 那样的dateadd(-1, day, getdate()) 函数的功能.
> 顺便谢谢上次帮我解答问题的friends!
> 

查一下datetime模块,使用timedelta类就可以了。

-- 
I like python! 
My Donews Blog: http://www.donews.net/limodou

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年09月10日 星期六 18:56

gyb tension tensiongyb at gmail.com
Sat Sep 10 18:56:31 HKT 2005

任意一串字符怎么表示?
我试[.\n]*不行,
>>>re.findall(r'[.\n]*','kfdj')
['', '', '', '', '']
是为什么呢?

 在05-9-9,gyb tension <tensiongyb at gmail.com> 写道: 
> 
> 问题描述:
> 有2个规则表达式a和b,b是a的子集,就是说满足b的也满足a,满足a不一定满足b.
> 现在我有一个文件,里面可能出现如下多种情形:
> a*b*a
> a*b
> a*b*a*b*a*b*a
> a*b*b*b*a
> 等等...(*代表其它乱七八糟的字符,其中a和b出现的次数也没准)
> 我想把其中以b打头且b结尾的那一段取出来,中间有a要保留,但两头的a必须去掉.
> 我要搜索b,中间的a就丢了,先搜索b,再搜索a,就有可能加入多余的a.
> 我觉得这个逻辑问题好像要转化为实际操作问题,re模块好像没有能够同时判断两种属性的方法
> 大侠们帮忙,看看还有什么招?
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050910/a5cde23a/attachment.htm

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年09月10日 星期六 23:56

shhgs shhgs.efhilt at gmail.com
Sat Sep 10 23:56:56 HKT 2005

你知道这个正则表达式的意思吗?

r'[.\n]*'

首先[],表示几个里面取一个,这里表示在.和\n里面取,由于有了[],因此原本就不需做escape,因此这里的.表示.而不是任意字符了。

然后*,表示一个或者多个。

所以这个正则表达式的意思是,找0个或多个连续的.或\n。

为了便于学习re,给你一个函数,你可以用这个试试

 def disp_pat(pat, s, count = 0) :
    def mark(m) :
        return '<' + m.group() + '>'
    result = re.sub(pat, mark, s, count)
    return result


On 9/10/05, gyb tension <tensiongyb at gmail.com> wrote:
> 任意一串字符怎么表示? 
> 我试[.\n]*不行, 
> >>>re.findall(r'[.\n]*','kfdj') 
> ['', '', '', '', ''] 
> 是为什么呢?
> 
>   
> 在05-9-9,gyb tension <tensiongyb at gmail.com> 写道: 
> > 问题描述:
> > 有2个规则表达式a和b,b是a的子集,就是说满足b的也满足a,满足a不一定满足b.
> > 现在我有一个文件,里面可能出现如下多种情形:
> > a*b*a
> > a*b
> > a*b*a*b*a*b*a 
> > a*b*b*b*a
> > 等等...(*代表其它乱七八糟的字符,其中a和b出现的次数也没准)
> > 我想把其中以b打头且b结尾的那一段取出来,中间有a要保留,但两头的a必须去掉.
> > 我要搜索b,中间的a就丢了,先搜索b,再搜索a,就有可能加入多余的a.
> > 我觉得这个逻辑问题好像要转化为实际操作问题,re模块好像没有能够同时判断两种属性的方法
> > 大侠们帮忙,看看还有什么招?
> > 
> 
>  
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年09月11日 星期日 00:11

shhgs shhgs.efhilt at gmail.com
Sun Sep 11 00:11:47 HKT 2005

没仔细看你的信,乱回了一封。这里解决你的问题

^表示行的开头
$表示行的结尾

所以一行用
^.*$
不过很遗憾,这样却不行。

前一封信里给了你一个函数,你用这个函数研究一下,看看为什么不行。自己研究得出的结果远比别人说的印象深。


On 9/10/05, gyb tension <tensiongyb at gmail.com> wrote:
> 任意一串字符怎么表示? 
> 我试[.\n]*不行, 
> >>>re.findall(r'[.\n]*','kfdj') 
> ['', '', '', '', ''] 
> 是为什么呢?
> 
> 
> 在05-9-9,gyb tension <tensiongyb at gmail.com> 写道: 
> > 问题描述:
> > 有2个规则表达式a和b,b是a的子集,就是说满足b的也满足a,满足a不一定满足b.
> > 现在我有一个文件,里面可能出现如下多种情形:
> > a*b*a
> > a*b
> > a*b*a*b*a*b*a 
> > a*b*b*b*a
> > 等等...(*代表其它乱七八糟的字符,其中a和b出现的次数也没准)
> > 我想把其中以b打头且b结尾的那一段取出来,中间有a要保留,但两头的a必须去掉.
> > 我要搜索b,中间的a就丢了,先搜索b,再搜索a,就有可能加入多余的a.
> > 我觉得这个逻辑问题好像要转化为实际操作问题,re模块好像没有能够同时判断两种属性的方法
> > 大侠们帮忙,看看还有什么招?
> > 
> 
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050910/a0c05441/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号