读书人

[D][求教] 正则表达式 非贪婪匹配有关

发布时间: 2012-04-07 17:31:51 作者: rapoo

[D][求教] 正则表达式 非贪婪匹配问题

Python code
import redata = 'Thu Feb 15 17:46:04 2007::uzifzf@dpyivihw.gov:: 2341123-6-8'patt = '.+(\d-\d-\d+)'print re.match(patt,data).group(1)


运行结果为:3-6-8,这是贪心匹配时的情况。 现在我希望活得data末尾的所有数据 ,即'2341123-6-8'
看书上说要用“非贪婪”匹配,在"+"后边加"?"

更改后的代码如下:
Python code
import redata = 'Thu Feb 15 17:46:04 2007::uzifzf@dpyivihw.gov:: 2341123-6-8'patt = '.+?(\d-\d-\d+)'print re.match(patt,data).group(1)


运行结果仍然为:3-6-8 求教这是为什么?如果想获得我想要的字符段的话应该怎样做啊?

谢谢各位大神赐教!
---------------------------------
Double行动:
原帖分数:40
加分:40

[解决办法]
用search吧,匹配多位数字应该都用\d+。

>>> import re
>>> s = 'Thu Feb 15 17:46:04 2007::uzifzf@dpyivihw.gov:: 2341123-6-8'
>>> m = re.search(r'\d+-\d+-\d+', s)
>>> m
<_sre.SRE_Match object at 0x00C06A68>
>>> m.group(0)
'2341123-6-8'
>>>
[解决办法]
Python code
data='Thu Feb 15 17:46:04 2007::uzifzf@dpyivihw.gov::2341123-6-8'patt2='.+?(\d+-\d-\d+)'print(re.match(patt2,data).group(1)) 

读书人网 >perl python

热点推荐