基本上我試圖找到一系列使用具有正則表達式的蟒連續重複圖案:匹配依次重複括號與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]+)+)