大家好,我是正则表达式新手:
我有一个字符串等被视为句子结尾,我怎样才能使等不被视为现有正则表达式中的句子结尾。
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 上完成。”]
请您参考如下方法:
在示例中,这非常困难,因为它是句子的有效结尾。下一个字母是大写字母。
向前看,不仅可以查看行尾,还可以查看下一个字母是否为大写字母,这样可以捕获大多数情况:
var sentences = stringSentence.match(/(.*?(?:[.?!])\s*)(?=([A-Z])|$)/g);
但在这个例子中,由于 I 是大写字母,所以它仍然会损坏。但是,如果在等之后添加逗号和/或单词“because”,则匹配将有效(并且在语法上会更正确)
如果这还不够,可以添加某些异常(exception)来表示缩写。问题是,该缩写实际上可能位于句子的末尾...... 例如,我要去度假放松等
应该匹配。