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

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

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

Если я засуну регулярку в replaceAll, то он заменит весь , @anybody!, а хотелось бы, чтобы заменялся только group, т.е. @anybody. Как это можно реализовать?
  • Вопрос задан
  • 80 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Java-разработчик
    10 месяцев
    Далее
  • Skillfactory
    Профессия Java-разработчик
    14 месяцев
    Далее
  • Хекслет
    Java-разработчик
    10 месяцев
    Далее
Решения вопроса 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
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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