我在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
,但获得了上述输出。为什么案例在a
和c
之间有所不同?
答案 0 :(得分:1)
[^\(]
匹配除(
之外的任何内容,包括空格(空格)。
.
(点)匹配除\n
(换行符)之外的所有内容(包括空格)
答案 1 :(得分:0)
[^\(]
也匹配空格,.
也是如此。
如果 A \s+
与一个空间匹配,但无法与(
匹配。但是,如果 B \s+
匹配(
之前的所有空格,除了最后一个空格,其中[^\(]
与最后一个空格匹配,满足该模式。