RegEx заменяет второй закрывающий тег в строке - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь заменить второй закрывающий тег > в String Something="<!-- comm --!><tag titi="string1" toto="string2">", используя регулярное выражение в java.

Something.replaceFirst( "^?>","XXXX")

заменить первый >

Я хотел бы заменить второй закрывающий тег > после string2, чтобы получить этот результат

Something="<!-- comm --!><tag titi="string1" toto="string2"XXXX"

Я не очень знаком с регулярным выражением. Что я должен делать? Спасибо

1 Ответ

1 голос
/ 28 мая 2020

Вы можете сопоставить все, но используйте группы захвата, чтобы вы могли вставить все обратно вокруг XXXX.

String something = "<!-- comm --!><tag titi=\"string1\" toto=\"string2\">";
System.out.println(something.replaceFirst("(^.+?>.+?)>(.*$)", "$1XXXX$2"));
  • (запускает первую группу захвата
  • ^ привязывает к началу строки
  • . +? соответствует одному или нескольким любым символам столько раз, сколько должно
  • > соответствует '>' буквально
  • ) заканчивает первую группу захвата
  • > буквально снова соответствует '>', это единственное не в группе захвата
  • (начинает захват группы 2
  • . * Соответствует 0 или более любых символов
  • $ привязки к концу строки

  • $ 1 относится к первой группе захвата (все, что было до второй '>')

  • $ 2 относится ко второй группе захвата (все, что может быть после второго '>')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...