需要正则表达式只接受前两句话,即使其他情况发生

2024-06-25 23:49:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一个正则表达式的帮助,它在开头找到前两个单词,然后在后面只取前两个句子,不管文本中出现了多少实例。你知道吗

text = "The Smithsonian museum is home to a variety of different art displays.  According various reports art appreciation is on the rise.  Blah blah blah blah.  The Smithsonian museum blah blah blah.  Blah blah blah blah."

我的代码如下所示:

(re.findall(r"""((The Smithsonian|The Metropolitan)[^\.]*\.[^\.]*\.)""", text))

然而,这是返回多个实例,而不仅仅是前两句话,而且常常返回垃圾,如“史密森尼”,在最后。你能帮忙吗?谢谢!你知道吗


Tags: theto实例text文本homeis单词
3条回答

我不是python开发人员,但问题似乎是您正在使用findall,因此据我所知,您可以使用finditer(并搜索第一次迭代)或search来查找一个匹配对象。你知道吗

但是,如果要使用findall,则可以将^锚点添加到正则表达式中:

^((The Smithsonian|The Metropolitan)[^\.]*\.[^\.]*\.)

regex demo

试试这个:

^(The Smithsonian|The Metropolitan).+?(?>\.).+?(?>\.)

有了这个regex,你不必为句子的任何开头短语编写硬代码。它将精确匹配一个句子的两次出现,后跟下一个句子前面的空格。你知道吗

^((?:\w+(?:\s|\.))+\s+){2}

下面是它的测试链接:https://regex101.com/r/mJ4oR7/2

这是假设string中没有特殊字符。你知道吗

相关问题 更多 >