基本上我试图找到一系列使用具有正则表达式的蟒连续重复图案:匹配依次重复括号与Python正则表达式
(X[0-9]+)+
例如,给输入字符串:
YYYX4X5Z3X2
获取结果的列表:
["X4X5", "X2"]
不过我不是得到:
["X5", "X2"]
我已经测试了regexpal正则表达式并验证它是正确的。然而,由于蟒蛇的方式对待“()”我无法得到期望的结果。有人可以建议吗?
基本上我试图找到一系列使用具有正则表达式的蟒连续重复图案:匹配依次重复括号与Python正则表达式
(X[0-9]+)+
例如,给输入字符串:
YYYX4X5Z3X2
获取结果的列表:
["X4X5", "X2"]
不过我不是得到:
["X5", "X2"]
我已经测试了regexpal正则表达式并验证它是正确的。然而,由于蟒蛇的方式对待“()”我无法得到期望的结果。有人可以建议吗?
把你捕获组转化为非捕获(?:...)
组代替...
>>> import re
>>> re.findall(r'(?:X[0-9]+)+', 'YYYX4X5Z3X2')
['X4X5', 'X2']
又如:
>>> re.findall(r'(?:X[0-9]+)+', 'YYYX4X5Z3X2Z4X6X7X8Z5X9')
['X4X5', 'X2', 'X6X7X8', 'X9']
修改你的模式,像这样
((?:X[0-9]+)+)
( # Capturing Group (1)
(?: # Non Capturing Group
X # "X"
[0-9] # Character Class [0-9]
+ # (one or more)(greedy)
) # End of Non Capturing Group
+ # (one or more)(greedy)
) # End of Capturing Group (1)
您需要为第一图案非捕获组(?:<pattern>)
给:
((?:X[0-9]+)+)