Python 寻找一个正则表达式模式来捕获短语直到点
我有一段很长的文字如下:Python 寻找一个正则表达式模式来捕获短语直到点,python,regex,lookahead,Python,Regex,Lookahead,我有一段很长的文字如下: 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
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个或更多
字符组成的任何字符串
当然需要一段时间\。
这里有一个。您希望以不同的方式处理
。
(或…
,等等),并将其与负面前瞻相结合:
(?:[^.]|\.{2,})+\.
说明:
将匹配由非(?:[^.]\.{2,})+
字符或2个或更多
字符组成的任何字符串
当然需要一段时间\。
这里有一个。您可以使用正向查找来只拆分前面不超过一个点的空白。这种方法将忽略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.']
重新导入
s='Quisiera yo detectar los puntos。。。这是一个独奏曲。不,不,不,不。一个eso-me refiero。”
句子=re.split(r’(?您可以使用正向查找来只拆分前面没有多个点的空白。这种方法将忽略任何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.']
重新导入
s=‘你可以在平托星上发现……你可以在平托星上独奏。你可以在悬念星上发现,你不能在安静的状态下发现。你可以在这里看到我。’
句子=re.split(r’(?试试这个
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)
我的答案是基于
更新:
使用regex
标记查看一些答案时,我遇到了这个和这个。我的答案不是来自正则表达式的固有知识,而是花了17分钟左右的时间在谷歌上搜索不同的搜索词并搜索堆栈溢出。在这17分钟左右的时间里,我花了17分钟左右的时间设计了一个回答:另外两个答案出现了。
我意识到我的答案更多的是“给我看代码”,而不是“教人钓鱼”这算是一种回答。我的观点是,当我急需帮助时,我希望有人能给我看代码。但能够通过谷歌搜索问题的解决方案是一项重要的技能,但也是一种可怕的药物。希望我的解决方案有所帮助,但我也强烈建议查看更新中的链接。如果有什么需要的话关于regex
标记状态的透视图,以及关于使堆栈溢出更有意义的透视图。试试这个
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)
我的答案是基于
更新:
使用regex
标记查看一些答案时,我遇到了这个和这个。我的答案不是来自正则表达式的固有知识,而是花了17分钟左右的时间在谷歌上搜索不同的搜索词并搜索堆栈溢出。在这17分钟左右的时间里,我花了17分钟左右的时间设计了一个回答:另外两个答案出现了。
我意识到我的答案更多的是“给我看代码”,而不是“教人钓鱼”这算是一种回答。我的观点是,当我急需帮助时,我希望有人能给我看代码。但能够通过谷歌搜索问题的解决方案是一项重要的技能,但也是一种可怕的药物。希望我的解决方案有所帮助,但我也强烈建议查看更新中的链接。如果有什么需要的话关于regex
标记状态的透视图,以及关于使堆栈溢出更有意义的透视图。这种方法与re.findall
配合得很好。例如:re.findall(r'(?:[^.]\.{2,})+\.,text)
这是我首选的解决方案,因为它不会对句点后的字符进行假设。因此,如果缺少空格或存在某种类型的标点符号,正则表达式仍然可以工作。这种方法与re.findall
很好地配合使用。例如:re.findall(r'(?:[^.]\.{2,})+\.,text)
这是我首选的解决方案,因为它不会对句点后的字符进行假设。因此,如果缺少空格或存在某种类型的标点符号,则正则表达式仍然有效。