Regex для замены любого символа в данной позиции - PullRequest
1 голос
/ 19 марта 2020

Я хотел бы заменить один отдельный символ другим, который находится в указанной позиции c в строке. Пример:

This is a test string! Now comes a different one! And yet an another one to demonstrate what I want! Hello there! How can I achieve to replace all exclamation mark to point!

Я знаю, что мой персонаж находится на позиции 21 st , поэтому я попытался: .{21}(.)\K(.*?\1)+ Первая группа захвата имеет символ I хочу, и я могу использовать \ K, чтобы начать с последнего матча. Но тогда как я могу сопоставить остальную часть строки?

Желаемый результат будет: This is a test string. Now comes a different one. And yet an another one to demonstrate what I want. Hello there. How can I achieve to replace all exclamation mark to point. Заранее спасибо!

1 Ответ

1 голос
/ 19 марта 2020

Вы можете использовать

^.{21}\K.

или, если есть разрывы строк,

(?s)^.{21}\K.

См. Демонстрационную версию regex

Подробности

  • (?s) - модификатор точек, который делает . совпадением с символами разрыва строки
  • ^ - начало строки
  • .{21} - любые 21 символ
  • \K - оператор сброса совпадения
  • . - любой символ.

Обратите внимание, что во многих случаях вы можете просто использовать группу и обратную ссылку, ^(.{21}). -> $1<<YOUR_REPLACEMENT_STRING>>.

...