[\s][[:punct:]]*(@anybody)[[:punct:]]*[\s]hello, @anybody! How are you?
replaceAll, то он заменит весь , @anybody!, а хотелось бы, чтобы заменялся только group, т.е. @anybody. Как это можно реализовать? (...)(@anybody)(...), а в строке замены ссылаться на них $1, $3.(\s\p{Punct}*)(@anybody)(\p{Punct}*\s)$1text$3(?<=...) lookahead (?=...)(?<=\s|\p{Punct})@anybody(?=\p{Punct}|\s)text