首页 > 解决方案 > 使用 re 匹配包含换行符的文本

问题描述

我有一个 Python 代码,它解析一个文本文件并在 tag 中找到单词的实例@(my word)。为此,我使用,例如:

import re

DEF_RE = r"(@\()(?P<text>.+?)\)"

sometext = "find the @(tagged text)."

m = re.search(DEF_RE, sometext)

print(m.group("text"))
tagged text

但是,如果文件包含分成两行的标记文本,则上述方法不起作用,例如,

sometext = "find the @(tagged\ntext)."

m = re.search(DEF_RE, sometext)

print(m)
None

有没有办法更改我的正则表达式字符串以允许将文本拆分为一行?

标签: pythonregexre

解决方案


您应该在ing时打开DOTALL标志。search

您可以替换re.search(DEF_RE, sometext)re.search(DEF_RE, sometext, flags=re.DOTALL)

证明


推荐阅读