Регулярное выражение JavaScript Split сохраняет разделитель

Используя JavaScript, я пытаюсь разбить абзац на его предложения с помощью регулярных выражений. Мое регулярное выражение не учитывает предложение внутри скобок, и я хотел бы оставить разделитель.

Я поместил пример кода в jsFiddle.net здесь

3 ответа

Решение

Я выбрал подход матча, а не раскол. Это может быть жестче (например, что, если предложение заканчивается ..., так далее).

text.match(/\(?[A-Z][^\.]+[\.!\?]\)?(\s+|$)/g);

http://jsfiddle.net/DepKF/1/

Использовать шаблон предпросмотра (?=pattern) в примере с регулярным выражением

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' ]

@Utkanos Ты хорошая идея, но я думаю replace может лучше

text.replace(/\(?[A-Z][^\.]+[\.!\?]\)?/g, function (sentence) {
    output += '<p>'+ sentence + '</p>';
});

http://jsfiddle.net/juGT7/1/

Вам не нужно снова зацикливаться.

Другие вопросы по тегам