python中正则表达式的变化

时间:2013-12-26 17:30:19

标签: python regex

我在python中尝试了以下代码

>>> pattern="(.*?)\s+in\s+[^\(](.*?)"
>>> a=" i am in (india)"
>>> re.search(pattern,a).group()

得到了这个,这是预期的输出

'NoneType' object has no attribute 'group'

>>> b="i am in india"
>>> re.search(pattern,b).group()
'i am in i'

这也是预期的输出

>>> c=' i am in               (india)'
>>> re.search(pattern,c).group()
' i am in               '

在这里,我期待NoneType,但获得了上述输出。为什么案例在ac之间有所不同?

2 个答案:

答案 0 :(得分:1)

[^\(]匹配除(之外的任何内容,包括空格(空格)。

.(点)匹配除\n(换行符)之外的所有内容(包括空格)

答案 1 :(得分:0)

[^\(]也匹配空格,.也是如此。

如果 A \s+一个空间匹配,但无法与(匹配。但是,如果 B \s+匹配(之前的所有空格,除了最后一个空格,其中[^\(]与最后一个空格匹配,满足该模式。