Строка заменяет определенную подходящую группу, а не все совпадение - PullRequest
2 голосов
/ 07 мая 2019

В js я хочу заменить символы новой строки в строке некоторым текстом, но только когда \ n предшествует точка и, возможно, пробел (ы). Образец текста:

Первое предложение приходит
разделить на две строки.

Это было бы новое предложение.

И конец

Должен стать

"First sentence comes split in two lines.<br>This would be a new sentence.<br>And the end"

Использование регулярного выражения:

text = text.replace(/\.\s(*\n)/g, "<br>");

заменяет все совпадение, таким образом, съедая точку, и, насколько мне известно, RegEx.repace не предоставляет способ заменить только совпадающую группу.

Какой самый простой способ добиться этого?

1 Ответ

1 голос
/ 07 мая 2019

Вы можете захватить буквальную точку в группе, затем новую строку, за которой следуют 0+ пробельных символов.

В группе замены 1 с перерывом: $1<br>

\s*(\.)?\n\s*

Regex demo

const regex = /\s*(\.)?\n\s*/gm;
const str = `First sentence comes   
split in two lines.

This would be a new sentence.

And the end`;
const subst = `$1<br>`;
const result = str.replace(regex, subst);

console.log(result);

Если вы также хотите удалить первый <br>, вы можете также сделать это в 2 шага:

const str = `First sentence comes   
split in two lines.

This would be a new sentence.

And the end`;
const result = str.replace(/\s*(\.)\s*/g, "$1<br>").replace(/\s*\n+\s*/g, " ");
console.log(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...