Предположим, у меня есть следующее регулярное выражение:
-(\d+)-
и я хочу заменить, используя C #, группу 1 (\d+)
на AA
, чтобы получить:
-AA-
Теперь я заменяю его, используя:
var text = "example-123-example";
var pattern = @"-(\d+)-";
var replaced = Regex.Replace(text, pattern, "-AA-");
Но мне это не очень нравится, потому что если я _(\d+)_
вместо этого изменю шаблон , мне придется изменить строку замены _AA_
тоже, и это противоречит принципу СУХОЙ.
Я ищу что-то вроде:
Сохраняйте сопоставленный текст в точности таким, какой он есть, но измените Группу 1 на this text
и Группу 2 на another text
...
Редактировать:
это был просто пример. Я просто ищу общий способ сделать то, что я сказал выше.
Это должно работать для:
anything(\d+)more_text
и любой шаблон, который вы можете себе представить.
Все, что я хочу сделать, это заменить только группы и сохранить остаток матча.
:)
. На мой взгляд, это решение намного лучше и чище, чем использование lookahead и lookbehinds.