我有这么长的文字:
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,})+
将匹配任何由非.
字符或2个或更多.
s组成的字符串\.
需要一段时间这是一个demo。
您可以使用正向lookbehind仅分割在前面没有多个点的空白处。该方法将忽略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以及这个answer。我的答案并非来自对正则表达式的固有知识,而是花费大约17分钟来搜索不同的搜索术语并且围绕Stack Overflow。在大约17分钟的时间里,我花了我的答案,另外两个答案出现了。
我意识到我的答案更多的是“告诉我代码”,而不是“教人钓鱼”的答案。根据我的观点,我会说,当我急需帮助时,我希望有人向我展示代码。但能够谷歌解决问题是一项重要的技能,但也是一种可怕的药物。希望我的解决方案有所帮助,但我强烈建议您查看我的更新中的链接。如果对于regex
标签的状态以及使堆栈溢出更有意义的观点有什么。