寻找用于捕获短语直到点的正则表达式模式

Looking for a regex pattern for capturing phrases until dot

我有一个像这样的长文本:

text = 'Quisiera yo detectar los puntos... pero solo los puntos aislados. Los puntos suspensivos no los quiero detectar. A eso me refiero.'

我想得到这个输出:

phrases = ['Quisiera yo detectar los puntos... pero solo los puntos aislados.',
' Los puntos suspensivos no los quiero detectar.',
' A eso me refiero.']

问题是第一个短语中的三个点。我找不到将它们与常见的单点分隔符区分开来的正则表达式。有没有办法用正则表达式实现它?

您想以不同的方式处理 ..(或 ... 等)并将其与否定前瞻相结合:

(?:[^.]|\.{2,})+\.

解释:

  • (?:[^.]|\.{2,})+ 将匹配任何由非 . 字符组成的字符串 or 组 2 个或更多 .s
  • \.当然需要句号

这是 demo

您可以使用正后视来仅在前面没有超过一个点的空白处进行拆分。这种方法会忽略任何 2 个或更多点的序列。

例如:

import re

s = 'Quisiera yo detectar los puntos... pero solo los puntos aislados. Los puntos suspensivos no los quiero detectar. A eso me refiero.'

sentences = re.split(r'(?<=[^.]\.)\s', s)
print(sentences)
# ['Quisiera yo detectar los puntos... pero solo los puntos aislados.', 'Los puntos suspensivos no los quiero detectar.', 'A eso me refiero.']

试试这个...

import re

text = 'Quisiera yo detectar los puntos... pero solo los puntos aislados. Los puntos suspensivos no los quiero detectar. A eso me refiero.'

pattern = r"(?<=\.)\s(?=[A-Z])"
re.split(pattern, text)

结果应该是...

['Quisiera yo detectar los puntos... pero solo los puntos aislados.',
 'Los puntos suspensivos no los quiero detectar.',
 'A eso me refiero.']

我的回答基于this SO answer

更新:
使用 regex 标签查看一些答案,我发现了这个 metadiscussion as well as this answer。我的答案并非来自对正则表达式的先天知识,而是来自花费大约 17 分钟的时间在谷歌上搜索不同的搜索词并浏览 Stack Overflow。在中间的 17 分钟左右,我花了我的时间来制作我的答案,其他两个答案出现了。
我意识到我的答案更像是 "show me the code" 而不是 "teach a man to fish" 之类的答案。最重要的是,我会说,当我急需帮助时,我希望有人向我展示代码。但是能够 google 解决问题是一项重要的技能,但也是一种可怕的药物。希望我的解决方案有所帮助,但我也强烈建议您查看更新中的链接。关于 regex 标记的状态以及使堆栈溢出更有意义的观点。