@Ankozar

Чем отличаются два варианта регулярки?

Вот находит и меняет " на «.
newText.replace(/((слово\s*.*?))"(?=\n*.*»)/giu, "«")
но меняет всё, что слева от " в регулярке. Вместе с кавычками.

А вот тут я пытаюсь исключить левую часть, но обудто её не видит.
newText.replace(/(?=(слово\s*.*?))"(?=\n*.*»)/giu, "«")
То есть тут вообще замены не происходит.

Смысл - найти кусок текста, который начинается с определённого слова и заканчивается ». В этом куске заменить первую попавшуюся двойную кавычку.

Это я так пытаюсь придумать логику замены двойных кавычек на ёлочки.

upd
решил вот так:
newText = newText.replace(/((слово\s*.*?))"(?=\n*.*»)/giu, (match) => match.slice(0,-1) + "«")
  • Вопрос задан
  • 57 просмотров
Пригласить эксперта
Ответы на вопрос 1
OrlovEvgenii
@OrlovEvgenii
golang developer / DevOps
Вторая регулярка (?=(слово\s*.*?))"(?=\n*.*»)использует positive lookahead, чтобы найти первую двойную кавычку после слова "слово", за которой следует символ переноса строки, а затем где-то далее в тексте находится символ «. Она не заменяет текст, а только находит первую двойную кавычку, соответствующую критериям.

Я бы сделал вот так
newText = newText.replace(/(слово\s*.*?)"(?=\n*.*»)/giu, function(match, group) {
    return group + "«";
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы