Комбинации регулярных выражений (Pattern) Java

198
16 ноября 2021, 08:40

Имеется метод String.replaceAll(String regex, String replacement).

https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html#sum

Допустим мне нужно заменить каждый символ в строке. Следовательно, в regex я записываю ".".

Если мне нужно заменить каждый символ в строке таким же символом дважды ("а" заменяю на "аа", "в" заменяю на "вв" и так далее), то мне нужно прописать в replacement такую комбинацию "$0$0".

Как получилась такая комбинация "$0$0"? По ссылке выше такого нету. Не могу понять.

Answer 1
System.out.println("test".replaceAll(".", "$0$0"));

Тут надо понимать, что при разборе текста регулярным выражением можно использовать группы. У нас случай простой, и групп в принципе нет. Обращаются к группам по индексу, начиная с единицы.

Вот пример работы с группами:

System.out.println("1-2".replaceAll("(\\d)(.*)(\\d)", "$3$2$1"));

Мы переставляем первое и последнее число местами. Результат:

2-1

А что же с $0? Это означает, что берётся полное найденное совпадение (если есть).

System.out.println("41-2".replaceAll("\\d(\\d)(.*)(\\d)", "$3$2$1 \"$0\""));

Результат:

2-1 "41-2"
READ ALSO
Уменьшение времени на обход двух изображений при сравнении

Уменьшение времени на обход двух изображений при сравнении

Есть класс, где происходит сравнение двух изображений Bitmap

212
Почему в сущностях вместо примитивов используют классы-оболочки?

Почему в сущностях вместо примитивов используют классы-оболочки?

Видел очень много примеров создания сущностей, но почему-то всегда вместо любых числовых значений используют не примитивы, а классы-оболочкиНапример,...

103
Как определить какая сущность должна содержать ссылку на другую в БД

Как определить какая сущность должна содержать ссылку на другую в БД

Есть две сущности: User и AddressОни в моем случае должны быть связаны связью один-к-одному, то есть в одной из них должна быть ссылка на другую:...

159