Regex.Replace mówi:Regex zastępuje tylko pasujące grupy i ignoruje niezgodne grupy?
w określonym ciągu wejściowego, zastępuje wszystkie ciągi, które pasują do podanego wyrażenia regularnego z określonym ciągiem zastępczym.
W moim przypadku:
string w_name = "0x010102_default_prg_L2_E2_LDep1_LLC";
string regex_exp = @"(?:E\d)([\w\d_]+)(?:_LLC)";
w_name = Regex.Replace(w_name, regex_exp, string.Empty);
wyjściowa:
0x010102_default_prg_L2_
ale spodziewałem
0x010102_default_prg_L2_E2_LLC
Dlaczego jest zastąpienie moje niedopasowanych grup (grupa 1 i 3)? I jak to naprawić, aby uzyskać oczekiwany wynik?
to działa: pls naprawić wyboru grupy z "$ 1 $ 2" na "$ 1 $ 3". Czy możesz wyjaśnić, jak to działa? Co się stanie, jeśli będę musiał zastąpić ciągiem "abc" zamiast pustego ciągu znaków? – greenfeet
@ green-size, dlaczego muszę zmienić '$ 1 $ 2' na' $ 1 $ 3', ponieważ usunąłem drugą grupę capów obecnych w twoim regex. 2. Po prostu dodaj 'abc' inbetween' $ 1' i '$ 2', tj.' $ 1abc $ 2'. Dla drugiej odpowiedzi wystarczy '' abc "' zamiast 'string.Empty'. –
masz rację, nie zauważyłem, że usunąłeś drugą grupę, dzięki! – greenfeet