相关疑难解决方法(0)

正则表达式:如何访问组的多个匹配项?

我正在整理一个相当复杂的正则表达式.表达式的一部分匹配字符串,例如'+ 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文档,我看到:

如果一个组匹配多次,则只能访问最后一个匹配:

>>> m = re.match(r"(..)+", "a1b2c3")  # Matches 3 times.
>>> m.group(1)                        # Returns only the last match.
'c3'
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是:如何您可以访问多个小组赛?

python regex

63
推荐指数
2
解决办法
7万
查看次数

RegEx有多个组?

我很困惑在Python中返回多个组.我的RegEx是这样的:

lun_q = 'Lun:\s*(\d+\s?)*'
Run Code Online (Sandbox Code Playgroud)

我的字符串是

s = '''Lun:                     0 1 2 3 295 296 297 298'''`
Run Code Online (Sandbox Code Playgroud)

我返回一个匹配的对象,然后想要查看这些组,但它显示的是最后一个数字(258):

r.groups()  
(u'298',)
Run Code Online (Sandbox Code Playgroud)

为什么不回归0,1,2,3,4等等?

python regex

34
推荐指数
4
解决办法
4万
查看次数

正则表达式组捕获多个匹配

快速正则表达式问题.
我试图在python中捕获捕获组的多个实例(不要认为它是特定于python的),但后续捕获似乎覆盖了之前的捕获.

在这个过于简化的示例中,我实际上是在尝试拆分字符串:

x = 'abcdef'
r = re.compile('(\w){6}')
m = r.match(x)
m.groups()     # = ('f',) ?!?
我想得到('a', 'b', 'c', 'd', 'e', 'f'),但因为正则表达式覆盖了后续的捕获,我得到了('f',)

这是正则表达式应该如何表现?有没有办法做我想要的,而不必重复六次语法?

提前致谢!
安德鲁

python regex

9
推荐指数
2
解决办法
9587
查看次数

标签 统计

python ×3

regex ×3