Ich habe dieses Code-Snippet einer Code-Basis, die ich pflegen soll.ersetzen Regex-String mit Parameter/Token
String number = "1";
String value = "test";
String output = "";
output = value.replaceAll("\\Q{#}", number);
Der Wert von output
Aufenthalten als „Test“ und ich kann nur raten, was dieser Code tun soll: Der Wert der number
sollte angefügt werden, was auch immer in Wert ist. Vielleicht etwas in der Art: test1
oder ersetzen Sie den Wert vollständig durch die Zahl.
Ich fand heraus, dass \\Q
ist die Regex-Option, alles bis \\E
zu zitieren, aber es gibt keine \\E
. Jedenfalls tut es gar nichts und ich frage mich, ob ich etwas beaufsichtige?
Die Regex entspricht nur einem Literal '{#}'. Wenn Ihr 'Wert' 'test {#}' ist, wird '{#}' durch die Zahl ersetzt. Siehe [diese Demo] (https://ideone.com/Zizftn). '\\ E' hört einfach auf zu zitieren, wenn es fehlt, wird das ganze Muster zitiert, das ist alles. –
AFAIK '#' ist kein Sonderzeichen in Regex. Wenn man also annimmt, dass Java Regex '\ Q' versteht, würde es nach der literalen Zeichenfolge' {#} 'suchen, die in' value' nicht vorhanden ist. Abgesehen davon ist Ihre Vermutung falsch: 'replaceAll' ersetzt die Übereinstimmung durch' number' - wenn Sie etwas am Ende anhängen möchten, müssen Sie das Ende der Eingabe, z. benutze einfach den Ausdruck '$'. – Thomas
Ich kann keine Frage in der Post sehen. Wonach suchen Sie? –