为什么以下代码块与parantheses不匹配?
In [27]: import re
In [28]: re.match('.*?([\(]*)', ' (((( ' ).groups()
Out[28]: ('',)
答案 0 :(得分:2)
展示我的评论:
import re
>>> re.match('.*?([\(]*)', ' (((( ' ).groups()
('',)
>>> re.match('.*?([\(]+)', ' (((( ' ).groups()
('((((',)
>>>
注意 - 你甚至不需要[]
内的反斜杠 - 因为特殊字符会失去意义。所以
>>> re.match('.*?([(]+)', ' (((( ' ).groups()
('((((',)
>>>
也有效......
这是因为你的“非贪婪”第一个量词(*?
)不需要给第二个量词提供任何东西 - 因为第二个量词对零匹配感到满意。
答案 1 :(得分:1)
在您的情况下.*?
表示一切,因为您使用了[\(]*
,这意味着0或更多。因此,将*
更改为+
对您有用,因为+
表示1或更多。
re.match('.*?([\(]+)', ' (((( ' ).groups()