Как использовать Matcher, чтобы правильно заменить все вхождения шаблона внутри строки - PullRequest
0 голосов
/ 22 января 2012

Я использую Matcher, чтобы найти конкретные шаблоны в String, который содержит текст.
Регулярное выражение проверяет различные шаблоны, например, для простоты:
\\bword1\\b|(\\b(?:word2(?:(\\s+)word3)?)?) и т. Д.

В любом случае, я могу найти шаблоны в строке.
Пока все хорошо.

Что я хочу, так это возможность использовать Matcher.replaceAll для замены каждого найденного шаблона, на тот же шаблон , но с некоторым дополнением.

например.

Если совпадение находит где-то word1, я хочу заменить его на {v}word1{v}.

Как это лучше всего сделать? Я попытался добавить группы, которые находит совпадение, в список, а затем перебрать строку ввода, чтобы заменить все, но, очевидно, это не сработало.

UPDATE:
Я могу соответствовать условиям, которые мне нужны, и @Luis regex заменяет их, но мне нужно заменить all в моей строке.
Зацикливая и выполняя регулярное выражение "pattern", "{v}$0{v}") внутри строки, я нарушаю предыдущие вхождения. Мне нужно как-то включить отрицательный взгляд назад в replaceAll, чтобы понять, когда термин уже заменен

UPDATE:
Используя регулярное выражение @Luis и отрицательный взгляд, это сработало

1 Ответ

1 голос
/ 22 января 2012

ОБНОВЛЕНО:

"pattern".replaceAll("pattern", "{v}$0{v}"))

Я проверил это, и он возвращает "{v} pattern {v}" как требуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...