在 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中文网其他相关文章!