使用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