我正在编写一个相当复杂的正则表达式。 表达式的一部分匹配诸如'+a','-57'等字符串。+或-后面跟着任意数量的字母或数字。 我想匹配0个或多个匹配此模式的字符串。
这是我想出来的正则表达式:
([\+-][a-zA-Z0-9]+)*
如果我用这个模式搜索字符串“-56+a”,我期望能够得到两个匹配项:
+a 和 -56
但是,实际上只返回了最后一个匹配项:
>>> m = re.match("([\+-][a-zA-Z0-9]+)*", '-56+a')
>>> m.groups()
('+a',)
查看Python文档后,我发现:
如果一个组匹配了多次,只有最后一次匹配是可访问的:
所以,我的问题是:如何访问多个组匹配?>>> m = re.match(r"(..)+", "a1b2c3") # Matches 3 times. >>> m.group(1) # Returns only the last match. 'c3'