使用正規表示式來搭配多行區塊
使用Python 的正規表示式來符合跨多行的文字時,您可能會遇到困難。考慮以下範例文本:
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 )$$(\n[.$] )^$", re.MULTILINE) # Capture both parts
re.compile(r"([^>][\w\s] )$", re.MULTILINE|re.DOTALL) # Just textlines
要解決此問題,請使用以下正規表示式:
re.compile(r"^(. )\n((?:\n. ) )", re.MULTILINE)
請記住,錨點「^ ”和“$”不符換行符。因此,在多行模式下,「^」在換行符之後,「$」在換行符之前。
此外,請注意各種換行符號格式。對於可能包含換行符號、回車符號或兩者的文本,請使用以下更具包容性的正規表示式:
re.compile(r"^(. )(?:\n|\r\n?)((?:(?:\n|\r\n?). ) )", re.MULTILINE)
這裡不需要DOTALL 修飾符,因為點已經排除了換行符。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3