Регулярное выражение JavaScript Split сохраняет разделитель
Используя JavaScript, я пытаюсь разбить абзац на его предложения с помощью регулярных выражений. Мое регулярное выражение не учитывает предложение внутри скобок, и я хотел бы оставить разделитель.
Я поместил пример кода в jsFiddle.net здесь
3 ответа
Решение
Я выбрал подход матча, а не раскол. Это может быть жестче (например, что, если предложение заканчивается ...
, так далее).
text.match(/\(?[A-Z][^\.]+[\.!\?]\)?(\s+|$)/g);
Использовать шаблон предпросмотра (?=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>';
});
Вам не нужно снова зацикливаться.