用 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
有没有办法更改我的正则表达式字符串以允许将文本拆分成一行?
您应该在 search
ing 时打开 DOTALL
标志。
您可以将 re.search(DEF_RE, sometext)
替换为 re.search(DEF_RE, sometext, flags=re.DOTALL)
我有一个 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
有没有办法更改我的正则表达式字符串以允许将文本拆分成一行?
您应该在 search
ing 时打开 DOTALL
标志。
您可以将 re.search(DEF_RE, sometext)
替换为 re.search(DEF_RE, sometext, flags=re.DOTALL)