【发布时间】:2014-05-25 14:09:44
【问题描述】:
学习正则表达式越来越难了,看下面的python正则表达式代码sn-p。
>>> import re
>>> str = "demo"
>>> re.search("d?mo",str)
<_sre.SRE_Match object at 0x00B65330>
在上面的例子中,为什么它返回了匹配的对象,甚至不是?
我知道,符号“?”表示它将匹配前面字符的 0 次或 1 次重复,但是
从上面的例子中,
1.'d' is matched with 'd'
2.'m' is matched with 'm'
3.'o' is matched with 'o'
但是与哪个字符'e'匹配?根据我的理解,只有 'dmo' 或 'mo' 必须与给定的模式匹配,但为什么是 'demo'。
如果我只想匹配“dmo”或“mo”,正确的模式是什么?
【问题讨论】:
-
不要命名变量
str,因为你会屏蔽内置的str function