首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

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

2012-04-07 
[D][求教] 正则表达式 非贪婪匹配问题Python codeimport redata Thu Feb 15 17:46:04 2007::uzifzf@dpy

[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)) 

热点排行