需要匹配的字符串:MoffettNathanson LLC的Lisa Ellis分析师Q嗨。大家下午好,欢迎光临,布莱恩我期待与您合作。
正则表达式已尝试:[^.]*Analyst[^.]*
匹配的输出:Lisa Ellis分析师,MoffettNathanson LLC Q Hi
有人可以告诉我如何匹配整个段落,以便它在第一个句段后不会停止吗?
此正则表达式将匹配整个段。^.*Analyst.*$/m
我认为您只需要设置多行标志即可。
我假设段落由一个或多个换行符分隔,也就是说,组成段落的句子没有嵌入换行符。然后,在multiline模式下,除了输入字符串的开始和结束,锚点^
和$
分别与行的开始和结束匹配。您还希望确保您要查找的单词在单词边界上,即在任一侧由非单词字符分隔。这样,如果您要查找Analyst
,则不会匹配Analysts
:
\bAnalyst\b
如果要匹配Analyst
或Analysts
,请明确显示:
\bAnalysts?\b
如果要匹配以Analyst
开头的any单词:
\bAnalyst\w+\b
完整的正则表达式:
(?m)^.*?\bAnalyst\b.*?$
(m)
打开多行模式。^
匹配字符串的开头或行的开头。.*?
至少匹配0个或多个字符,直到:\bAnalyst\b
在单词边界上匹配Analyst
(对于以\bAnalyst\w+\b
开头的任何单词都使用Analyst
)。.*?$
至少匹配0个或更多字符,直到行尾或字符串末尾。您可以使用.*
贪婪匹配,因为.
永远不会匹配换行符,因此在段落末尾确实没有匹配的危险。代码:
import re
text = """This is sentence 1 in paragraph 1. This is sentence 2 in paragraph 1.
This is sentence 1 in paragraph 2. This is sentence 2 in paragraph 2 with the word Analyst contained within.
"""
l = re.findall(r'(?m)^.*?\bAnalyst\b.*?$', text)
print(l)
打印:
['This is sentence 1 in paragraph 2. This is sentence 2 in paragraph 2 with the word Analyst contained within.']