我正在尝试使用 javascript 的拆分从字符串中获取句子,但保留分隔符,例如 !?。
到目前为止我有
sentences = text.split(/[\\.!?]/);
哪个有效但不包括每个句子的结尾标点符号 (.!?)。
有谁知道这样做的方法吗?
我正在尝试使用 javascript 的拆分从字符串中获取句子,但保留分隔符,例如 !?。
到目前为止我有
sentences = text.split(/[\\.!?]/);
哪个有效但不包括每个句子的结尾标点符号 (.!?)。
有谁知道这样做的方法吗?
您需要使用匹配而不是拆分。
试试这个。
var str = "I like turtles. Do you? Awesome! hahaha. lol!!! What's going on????";
var result = str.match( /[^\.!\?]+[\.!\?]+/g );
var expect = ["I like turtles.", " Do you?", " Awesome!", " hahaha.", " lol!!!", " What's going on????"];
console.log( result.join(" ") === expect.join(" ") )
console.log( result.length === 6);
以下是 Larry 的答案的一个小补充,它也将匹配附加句:
text.match(/\(?[^\.\?\!]+[\.!\?]\)?/g);
应用于:
text = "If he's restin', I'll wake him up! (Shouts at the cage.)
'Ello, Mister Polly Parrot! (Owner hits the cage.) There, he moved!!!"
给:
["If he's restin', I'll wake him up!", " (Shouts at the cage.)",
" 'Ello, Mister Polly Parrot!", " (Owner hits the cage.)", " There, he moved!!!"]
试试这个:-
sentences = text.split(/[\\.!\?]/);
?
是正则表达式中的特殊字符,因此需要进行转义。
对不起,我想念你的问题 - 如果你想保留分隔符,那么你需要使用match
not split
see this question
mircealungu 的回答略有改进:
string.match(/[^.?!]+[.!?]+[\])'"`’”]*/g);
'...'
,'!!!'
,'!?'
等包括内部的句子。在这里改进 Mia 的答案是一个版本,其中还包括没有标点符号的结尾句子:
string.match(/[^.?!]+[.!?]+[\])'"`’”]*|.+/g)