3
我試圖使用python RE蟒RE:非貪婪匹配,repitition和分組
input_string匹配重複線圖案:
start_of_line:X
線1
線2
start_of_line:Y
線1
線2
線3
start_of_line位:Z
線1
基本上我想在一個循環中,以提取字符串(每個字符串從start_of_line開始,直到下一個start_of_line之前的所有字符)
我可以使用for循環容易解決這個問題,但不知道是否有一個蟒蛇RE做到這一點,盡我所能,但陷入了分組部分。
它類似於像一個解決方案,我最近事情是
pattern= re.compile(r"start_of_line:.*?", re.DOTALL)
for match in re.findall(pattern, input_string):
print "Match =", match
但它打印
Match = start_of_line:
Match = start_of_line:
Match = start_of_line:
如果我做什麼別的組,我失去了比賽。
你並不真的需要先行進行超前
這種模式是比第一更高效,就是不讓它匹配的部分組。你也可能想要'| $)'。所以:'r'start_of_line:(。*?)(?: start_of_line | $)'然後在組1上工作。 –
@andrewcooke:'| $'的好處,但是如果使用組,則會產生重疊問題。 –
工程就像一個魅力(沒有$分隔符,最後一個字符串不匹配),感謝您分享您的專業知識。 – sysuser