IT虾米网

javascript之正则表达式排除单词

oomusou 2024年12月31日 程序员 24 0

大家好,我是正则表达式新手:

我有一个字符串等被视为句子结尾,我怎样才能使等不被视为现有正则表达式中的句子结尾。

sentence: 'hello how are you, can you pass me pen, book etc. I am going to travel abroad. I am going on vacation. Let me know if anything needs to be done in something.com.';  
regex: (/(.*?(?:\.|\?|!))(?: |$)/g); 

电流输出:

  • [“你好,你好吗,可以给我笔、书等吗?”,“我要去 出国旅行。 ”,“我要去度假。 “, “如果.......请告知我们 任何事情都需要在 Something.com 上完成。”]

预期输出:

  • [“你好,你好吗,你能给我笔、书等吗?我要去 出国旅行。 ”,“我要去度假。 “, “如果.......请告知我们 任何事情都需要在 Something.com 上完成。”]

JSfiddle

请您参考如下方法:

在示例中,这非常困难,因为它是句子的有效结尾。下一个字母是大写字母。

向前看,不仅可以查看行尾,还可以查看下一个字母是否为大写字母,这样可以捕获大多数情况:

var sentences = stringSentence.match(/(.*?(?:[.?!])\s*)(?=([A-Z])|$)/g); 

但在这个例子中,由于 I 是大写字母,所以它仍然会损坏。但是,如果在等之后添加逗号和/或单词“because”,则匹配将有效(并且在语法上会更正确)

如果这还不够,可以添加某些异常(exception)来表示缩写。问题是,该缩写实际上可能位于句子的末尾...... 例如,我要去度假放松等应该匹配。


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!