我希望收到大量文字(例如书籍章节),并创建一系列句子。
我目前的代码是:
text.match( /[^\.!\?]+[\.!\?]+["']?/g );
仅当文本以[。之一结尾时才有效。 ! ?]。如果最后一句话在结尾没有标点符号,那就丢失了。
如何将文本分成句子,允许最后一句没有标点符号?
答案 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))