我试图从一段文本中拆分句子,我目前的解决方案可以工作,但它并不总是工作。
text.replaceAll(/[^Mr|^mr|^Mrs|^mrs|^Ms|^ms](\.|\?|\!)\s[A-Z]/g, r => r.replace(/\s/, "{break}")).split("{break}");
它的工作方式应该是先找到一个句点,然后是一个空格,后面是一个大写字母,Mr、Mr、Mrs、Mrs、Ms或ms除外。它目前是这样做的,除非句子以s、m或r结尾。我知道这是因为[]与其中的任何字符匹配,我的问题是如何编写它,以便它能按我的要求工作(匹配整个单词,而不是单个字符)
失败的字符串示例如下
"A string with words. A new string."
一个通过
"A string. A new string."
1条答案
按热度按时间dgiusagp1#
如何拆分一个句子,而不打断姓名标题。
你喜欢正则表达式,你想把结果分组,只抓取句点。然后我们把我们用的作为标识符组,并用{break}条目替换为$1变量。
Codepen