Ich brauche Substrings in Java zu finden und zu ersetzen, zum Beispiel Variablennamen, die mit ‚%‘ beginnen, regex wie die Verwendung von:Gibt es eine Möglichkeit, in java matcher regex nur eine erfasste Gruppe zu ersetzen?
[\s,(](%variable)[\s,)$]
Ich möchte alle Variablen finden, die ihre Namen speichern und zu ersetzen, sie zu einem Platzhalter, zum Beispiel %%. Kann nicht finden, wie es in Java möglich ist, bitte helfen Sie. Matcher # replaceAll ersetzt die ganze regexp, aber ich muss nur die erste Gruppe ersetzen, nicht das ganze Vorkommen.
Hier ist das Code-Beispiel, das ich für die Suche verwenden:
Matcher m=Pattern.compile(regex).matcher(str);
while(m.find())
{
System.println(m.group(1));
}
Upd: Die Lösung besteht darin, die Captures ganze Regex zu setzen:
([\s,(])(%variable)([\s,)$])
Und replaceAll ("$ 1" + Ersatz zu verwenden + "$ 3") dann
Haben Sie versucht, 'replaceFirst' Methode? – developer033
@ developer033 Das wird nichts mit Capture-Gruppen tun. Das ersetzt nur die erste Übereinstimmung der Regex, anstatt alle Übereinstimmungen zu ersetzen. – 4castle
Nun, er sagte: "Ich muss nur die erste Gruppe ersetzen, nicht das ganze Vorkommnis." – developer033