2015-06-03 42 views
1

卡住這個正則表達式問題現在有點 - 我不知道這是表達這個問題的正確方式,但我想連續提取匹配組,例如字符串「a- > b-> c「我想爲」a-> b「創建匹配組」b「> c」以及單個字符,所以還有「a」,「b」和「c」。到目前爲止,我有這個表達式:正則表達式幫助匹配多個連續的組

"(([A-Z a-z 0-9 _]+)(?:\s*->\s*)([A-Z a-z 0-9 _]+))" 

僅成功匹配組 「A-> B」, 「A」 & 「B」,而不是 「B-> C」 & 「C」。

我將不勝感激任何幫助,謝謝。

+1

Python的,謝謝。 – robobbo

回答

1
(?=((\w+)\s*->\s*(\w+))) 

re.findall。看到demo.The原因,你的正則表達式是不工作是因爲重疊matches.Once第一場比賽做的試試這個,有->之前沒有元素match.To克服這一點,我們使用lookahead這沒有抓住,但斷言

https://regex101.com/r/pG1kU1/32

import re 
p = re.compile(r'(?=((\w+)\s*->\s*(\w+)))') 
test_str = "a->b->c" 

re.findall(p, test_str) 
+0

看起來不錯,謝謝! – robobbo