Załóżmy, że mam następujące wyrażenie regularne:
-(\d+)-
i chcę, aby zastąpić, przy użyciu C #, Grupę 1 (\d+)
z AA
, aby uzyskać:
-AA-
Teraz zastępuję go za pomocą:
var text = "example-123-example";
var pattern = @"-(\d+)-";
var replaced = Regex.Replace(text, pattern, "-AA-");
Ale tak naprawdę nie podoba mi się to, ponieważ jeśli _(\d+)_
zamiast tego zmienię wzór, aby dopasować , będę musiał również zmienić ciąg zastępujący _AA_
, co jest sprzeczne z zasadą DRY.
Szukam czegoś takiego:
Zachowaj dopasowany tekst dokładnie tak, jak jest, ale zmień Grupę 1 według this text
i Grupę 2 według another text
...
Edycja:
To był tylko przykład. Po prostu szukam ogólnego sposobu robienia tego, co powiedziałem powyżej.
Powinien działać dla:
anything(\d+)more_text
i każdy wzór, jaki możesz sobie wyobrazić.
Wszystko, co chcę zrobić, to zastąpić tylko grupy i zachować resztę meczu.
:)
. Moim zdaniem to rozwiązanie jest znacznie lepsze i czystsze niż korzystanie z funkcji lookahead i lookbehinds.