什么是将整个段落与单词条件匹配的正则表达式? (段落可能包含多个句点/句号)

字符串需要匹配:MoffettNathanson LLC Q Hi,Lisa Ellis分析师。大家下午好,欢迎光临,布莱恩我期待着与您合作。

正则表达式已尝试[^.]*Analyst[^.]*

匹配的输出结果 MoffettNathanson LLC的Lisa Ellis分析员Q Hi

如您在上面看到的,它在第一个句号停止后就停止匹配。

有人可以告诉我如何匹配整个段落,以便在第一段之后不停止吗?

kouder 回答:什么是将整个段落与单词条件匹配的正则表达式? (段落可能包含多个句点/句号)

此正则表达式将匹配整个段。 ^.*Analyst.*$/m 我认为您只需要设置多行标志即可。

,

我假设段落由一个或多个换行符分隔,也就是说,组成段落的句子没有嵌入换行符。然后,在 multiline 模式下,除了输入字符串的开头和结尾之外,锚点^$分别与行的开头和结尾匹配。您还希望确保您要查找的单词在单词边界上,即在任一侧由非单词字符分隔。这样,如果您正在寻找Analyst,则不会匹配Analysts

\bAnalyst\b

如果要匹配AnalystAnalysts,请明确匹配:

\bAnalysts?\b

如果要匹配以Analyst开头的任何单词:

\bAnalyst\w+\b

完整的正则表达式:

(?m)^.*?\bAnalyst\b.*?$
  1. (m)启用多行模式。
  2. ^匹配字符串的开头或行的开头。
  3. .*?至少匹配0个或多个字符,直到:
  4. \bAnalyst\b在单词边界上匹配Analyst(对于以\bAnalyst\w+\b开头的任何单词,请使用Analyst)。
  5. .*?$至少匹配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.']
本文链接:https://www.f2er.com/3036676.html

大家都在问