Задать вопрос
ZiEnTenIn
@ZiEnTenIn

Как реплейсить не всю регулярку, а только group?

RegEx: [\s][[:punct:]]*(@anybody)[[:punct:]]*[\s]
String: hello, @anybody! How are you?
6289f83547d4e655052949.png

Если я засуну регулярку в replaceAll, то он заменит весь , @anybody!, а хотелось бы, чтобы заменялся только group, т.е. @anybody. Как это можно реализовать?
  • Вопрос задан
  • 78 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@dodo512
Добавить ещё сохраняющих групп (...)(@anybody)(...), а в строке замены ссылаться на них $1, $3.
(\s\p{Punct}*)(@anybody)(\p{Punct}*\s)
$1text$3
https://regex101.com/r/zmFdtc/1

Или применить lookbehind (?<=...) lookahead (?=...)
(?<=\s|\p{Punct})@anybody(?=\p{Punct}|\s)
text
https://regex101.com/r/zmFdtc/2
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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