2016-06-13 5 views
-2

Ich habe eine Zeichenfolge, <parameter name="Browser" value="chrome" />. Ich möchte chrome durch Firefox ersetzen. Mein relevanter Java-Code:Verstehen, wie Java replaceFirst mit regulären Ausdrücken funktioniert

l = l.replaceFirst("value=\"*\"", "value=\"" + browser + '"'); 

Kehrt das Original String in

<parameter name="Browser" value="Firefox"chrome" />. Ich bin verwirrt, wie chrome" nicht entfernt wird, da die Regex in replaceFirst den öffnenden und schließenden Klammern entspricht.

Antwort

2

In der ersten Regex, value=\"*\", die \"*\" entspricht 0 oder mehr " Zeichen, keine beliebige Anzahl von Zeichen, wie Sie beabsichtigt. Die korrekte Syntax dafür wäre value=\".*\".

Sie können eine Regex auf http://regexr.com/ testen, um eine Vorstellung davon zu bekommen, wie Ihre Regex funktioniert, mit Syntaxhervorhebung.

+0

Oh lieber Herr, mein Fehler danke! – Steve

2

Ihre Regex ist falsch. \"*\" entspricht null oder mehr " Zeichen (\"*), gefolgt von ". Da c kein " ist, ist es nicht abgestimmt, so dass nur das offene Angebot enthalten ist.

Sie sollten stattdessen \".*\" verwenden (beachten Sie die Hinzufügung der .), um null oder mehr beliebiger Zeichen zwischen zwei Anführungszeichen zu entsprechen.

Verwandte Themen