相关疑难解决方法(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 正则表达式?

我正在尝试为“用可选的多个空格或可选的单个逗号分隔的一位或两位数字序列”创建一个 python 正则表达式。

例如:

"   1"  Should tests good
"    1  2     3 3  4 5 7 17" Should test good
" 1, 2,3,11,74" Should test good
"1,11,14, 15" Should test good

"111, 101" Should not test good
"1 2 3  a" Should not test good
"1, 25, 5.0 " Should not test good
"1,, 7, 80" Should not test good
"1,11,14," Should not test good
Run Code Online (Sandbox Code Playgroud)

逗号符号只能出现在数字(或空格)之间。这就是为什么最后一个例子测试不理想的原因。

我尝试过这个

^\s*\d{1,2}(\s*\,?\d{1,2}\s*\,?)*\s*$
Run Code Online (Sandbox Code Playgroud)

但得到的结果并不好,例如“11111”就测试得很好。我应该如何编写我的正则表达式?

python regex

6
推荐指数
1
解决办法
2万
查看次数

标签 统计

python ×4

regex ×4