在Python 中將多行文字區塊與正規表示式配對
在Python 中,處理多行文字時,正規表示式匹配可能具有挑戰性。例如,考慮以下文本,其中“n”代表換行符:
some Varying TEXT DSJFKDAFJKDAFJDSAKFJADSFLKDLAFKDSAF [more of the above, ending with a newline] [yep, there is a variable number of lines here] [repeat the above a few hundred times].
目標是捕獲兩個元素:
先前已嘗試使用以下正規表示式的變體不成功:
re.compile(r"^>(\w+)$$(\[.$]+)^$", re.MULTILINE) re.compile(r"(^[^>]\[\w\s]+)$", re.MULTILINE|re.DOTALL)
解:
要正確配對多行文本,請使用以下正規表示式:
re.compile(r"^(.+)\n((?:\n.+)+)", re.MULTILINE)
這個模式來匹配以下內容:
要點:
替代解決方案:
如果目標文字可能包含換行符(n) 以外的其他類型的換行符,請使用下列更具包容性的版本:
re.compile(r"^(.+)(?:\n|\r\n?)((?:(?:\n|\r\n?).+)+)", re.MULTILINE)
以上是如何在Python中將多行文字區塊與正規表示式配對?的詳細內容。更多資訊請關注PHP中文網其他相關文章!