使用JavaScript我试图用正则表达式将一个段落分成它的句子。我的正则表达式不包含括号内的句子,我想保留分隔符。JavaScript分割正则表达式保留分隔符
我已经把一个例子的代码在jsFiddle.net here
使用JavaScript我试图用正则表达式将一个段落分成它的句子。我的正则表达式不包含括号内的句子,我想保留分隔符。JavaScript分割正则表达式保留分隔符
我已经把一个例子的代码在jsFiddle.net here
我把比赛方法,而不是分裂。它可能更紧张(例如,如果句子以...
等结尾,那该怎么办)。
text.match(/\(?[A-Z][^\.]+[\.!\?]\)?(\s+|$)/g);
@Utkanos你的想法是好的,但我认为replace
可以更好地:
text.replace(/\(?[A-Z][^\.]+[\.!\?]\)?/g, function (sentence) {
output += '<p>'+ sentence + '</p>';
});
您无需再次循环。
我没有想过如果沿着这条路线走下去。非常感谢,但我需要以后的其他事情循环。 –
@wiky - 我确实给了这个方法一些想法,但最终没有计算保存,因为有一个循环 - 在这种情况下,循环是迭代回调。 – Utkanos
使用(?=模式)前瞻图案在正则表达式 例如
var string = '500x500-11*90~1+1';
string = string.replace(/(?=[$-/:-?{-~!"^_`\[\]])/gi, ",");
string = string.split(",");
这会给你以下结果。
[ '500x500', '-11', '*90', '~1', '+1' ]
也可直接拆分
string = string.split(/(?=[$-/:-?{-~!"^_`\[\]])/gi);
给予同样的结果
[ '500x500', '-11', '*90', '~1', '+1' ]
你很可能使用'match',因为JS没有一个分隔符捕捉选项为'分裂'。 – chaos
我应该提到的一个好点。 – Utkanos
是的,你可以使用拆分。但是你需要一个前瞻(那个没有捕获组) 'text.split(/ \ b(?![\?\。\!\])/);' – bavo