Regex.Replace sagt:Regex ersetzt nur übereinstimmende Gruppen und ignoriert nicht übereinstimmende Gruppen?
In einer Eingabezeichenfolge angegeben, alle Strings ersetzt, die einen angegebenen regulären Ausdruck mit einer bestimmten Ersatzzeichenfolge entsprechen.
In meinem Fall:
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);
Ausgang:
0x010102_default_prg_L2_
aber ich erwartete
0x010102_default_prg_L2_E2_LLC
Warum ist es meine nicht-passenden Gruppen (Gruppe 1 zu ersetzen und 3)? Und wie behebe ich das, um die erwartete Ausgabe zu bekommen?
Dies funktioniert: pls Gruppenauswahl fixieren von "$ 1 $ 2" auf "$ 1 $ 3". Kannst du erklären, wie es funktioniert? Was wäre, wenn ich anstelle von Leerstring die Zeichenfolge "abc" ersetzen müsste? – greenfeet
@greenfeet Warum muss ich '$ 1 $ 2' in' $ 1 $ 3' ändern, da ich die zweite Cap-Gruppe in Ihrer Regex entfernt habe. 2. Fügen Sie 'abc' zwischen' $ 1' und '$ 2' hinzu, dh' $ 1abc $ 2'. Für die zweite Antwort wäre nur "abc" statt "string.Empty" ausreichend. –
Sie haben Recht, ich habe nicht bemerkt, dass Sie die zweite Gruppe entfernt haben, danke! – greenfeet