用 re 匹配包含换行符的文本

Match text including a line break with re

我有一个 Python 代码可以解析文本文件并在标签 @(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

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

您应该在 searching 时打开 DOTALL 标志。

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

Proof