JS将文本分成句子

时间:2016-12-04 11:28:01

标签: javascript regex

我希望收到大量文字(例如书籍章节),并创建一系列句子。

我目前的代码是:

text.match( /[^\.!\?]+[\.!\?]+["']?/g );

仅当文本以[。之一结尾时才有效。 ! ?]。如果最后一句话在结尾没有标点符号,那就丢失了。

如何将文本分成句子,允许最后一句没有标点符号?

4 个答案:

答案 0 :(得分:2)

使用$匹配字符串的结尾:

/[^\.!\?]+[\.!\?]+["']?|$/g

或许你想在最后允许空格字符:

/[^\.!\?]+[\.!\?]+["']?|\s*$/g

答案 1 :(得分:1)

这取决于文字中的字符,但

text.match( /[^\.!\?]+[\.!\?]+|[^\.!\?]+/g );

可以胜任。

(如果它没有工作,你可以提供一些你无法匹敌的句子吗?)

答案 2 :(得分:1)

根据您是否需要在结果中使用句子的标点符号,您可以使用" split"

var txt="One potato. Two Potato. Three";
txt.split( /[\.!\?]+/ );
[ 'One potato', ' Two Potato', ' Three' ]

答案 3 :(得分:-1)

你可以使用[^\.!\?]+,你不需要其余的:

text = "Mr. Brown Fox. hello world. hi again! hello one more time"
console.log(text.match(/[^\.!\?]+/g))