我正在整理一个相当复杂的正则表达式.表达式的一部分匹配字符串,例如'+ a',' - 57'等.A +或a - 后跟任意数量的字母或数字.我想匹配匹配此模式的0个或更多字符串.
这是我提出的表达方式:
([\+-][a-zA-Z0-9]+)*
Run Code Online (Sandbox Code Playgroud)
如果我使用这种模式搜索字符串'-56 + a',我希望得到两个匹配:
+ a和-56
但是,我只返回了最后一场比赛:
>>> m = re.match("([\+-][a-zA-Z0-9]+)*", '-56+a')
>>> m.groups()
('+a',)
Run Code Online (Sandbox Code Playgroud)
看看python文档,我看到:
如果一个组匹配多次,则只能访问最后一个匹配:
Run Code Online (Sandbox Code Playgroud)>>> m = re.match(r"(..)+", "a1b2c3") # Matches 3 times. >>> m.group(1) # Returns only the last match. 'c3'
所以,我的问题是:如何做您可以访问多个小组赛?
Eri*_*ric 28
该regex
模块通过添加.captures
方法修复此问题:
>>> m = regex.match(r"(..)+", "a1b2c3")
>>> m.captures(1)
['a1', 'b2', 'c3']
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
74428 次 |
最近记录: |