用正则表达式匹配python中由空格包围的括号

用正则表达式匹配python中由空格包围的括号,python,regex,Python,Regex,为什么下面的代码块不匹配这些参数 In [27]: import re In [28]: re.match('.*?([\(]*)', ' (((( ' ).groups() Out[28]: ('',) 展示我的评论: import re >>> re.match('.*?([\(]*)', ' (((( ' ).groups() ('',) >>> re.match('.*?([\(]+)', ' (((( ' ).groups() ('((

为什么下面的代码块不匹配这些参数

In [27]: import re

In [28]: re.match('.*?([\(]*)', '  (((( ' ).groups()
Out[28]: ('',)

展示我的评论:

import re
>>> re.match('.*?([\(]*)', '   (((( ' ).groups()
('',)
>>> re.match('.*?([\(]+)', '   (((( ' ).groups()
('((((',)
>>> 
注意-您甚至不需要在
[]
中使用反斜杠,因为特殊字符失去了意义。所以

>>> re.match('.*?([(]+)', '   (((( ' ).groups()
('((((',)
>>> 
也很有效


这是因为您的“非贪婪”第一个量词(
*?
)不需要给第二个量词任何东西-因为第二个量词对零匹配感到满意。

演示我的评论:

import re
>>> re.match('.*?([\(]*)', '   (((( ' ).groups()
('',)
>>> re.match('.*?([\(]+)', '   (((( ' ).groups()
('((((',)
>>> 
注意-您甚至不需要在
[]
中使用反斜杠,因为特殊字符失去了意义。所以

>>> re.match('.*?([(]+)', '   (((( ' ).groups()
('((((',)
>>> 
也很有效


这是因为您的“非贪婪”第一个量词(
*?
)不需要给第二个量词任何东西-因为第二个量词对零匹配感到满意。

演示我的评论:

import re
>>> re.match('.*?([\(]*)', '   (((( ' ).groups()
('',)
>>> re.match('.*?([\(]+)', '   (((( ' ).groups()
('((((',)
>>> 
注意-您甚至不需要在
[]
中使用反斜杠,因为特殊字符失去了意义。所以

>>> re.match('.*?([(]+)', '   (((( ' ).groups()
('((((',)
>>> 
也很有效


这是因为您的“非贪婪”第一个量词(
*?
)不需要给第二个量词任何东西-因为第二个量词对零匹配感到满意。

演示我的评论:

import re
>>> re.match('.*?([\(]*)', '   (((( ' ).groups()
('',)
>>> re.match('.*?([\(]+)', '   (((( ' ).groups()
('((((',)
>>> 
注意-您甚至不需要在
[]
中使用反斜杠,因为特殊字符失去了意义。所以

>>> re.match('.*?([(]+)', '   (((( ' ).groups()
('((((',)
>>> 
也很有效


这是因为您的“非贪婪”第一个量词(
*?
)不需要给第二个量词任何东西,因为第二个量词对零匹配感到满意。

在您的情况下,
*?
意味着一切,因为您使用了
[\(]*
表示0或更多。因此,将
*
更改为
+
将适用于您,因为
+
表示1或更多

re.match('.*?([\(]+)', '  (((( ' ).groups()

在您的情况下,
*?
意味着一切,因为您使用了
[\(]*
,表示0或更多。因此,将
*
更改为
+
将对您起作用,因为
+
意味着1或更多

re.match('.*?([\(]+)', '  (((( ' ).groups()

在您的情况下,
*?
意味着一切,因为您使用了
[\(]*
,表示0或更多。因此,将
*
更改为
+
将对您起作用,因为
+
意味着1或更多

re.match('.*?([\(]+)', '  (((( ' ).groups()

在您的情况下,
*?
意味着一切,因为您使用了
[\(]*
,表示0或更多。因此,将
*
更改为
+
将对您起作用,因为
+
意味着1或更多

re.match('.*?([\(]+)', '  (((( ' ).groups()

将第二个星号设为a
+
:由于“零匹配”,所以“非贪婪”第一个量词没有理由“给予”第二个量词。将第二个星号设为a
+
:由于“零匹配”,所以“非贪婪”第一个量词没有理由“给予”第二个量词可以。将第二个星号设为a
+
:非贪婪的第一个量词没有理由“给予”第二个量词,因为“零匹配”是可以的。将第二个星号设为a
+
:非贪婪的第一个量词没有理由“给予”第二个量词,因为“零匹配”是可以的。