Heim >Java >javaLernprogramm >Wie extrahiere ich Text nach einem Regex-Match mithilfe von Lookbehind-Assertions?
Text nach Regex-Übereinstimmung abrufen
Bei Ihrem Bestreben, Regex effektiv zu nutzen, sind Sie auf eine Herausforderung gestoßen: Text nach einem übereinstimmenden Muster zu extrahieren . Lassen Sie uns in die Lösung eintauchen.
Ihr ursprüngliches Regex-Muster „sentence(.*)“ erreicht Ihr Ziel fast. Es erfasst jedoch unterschiedslos sowohl die übereinstimmende Zeichenfolge („Satz“) als auch den nachfolgenden Text. Um dies zu ändern, müssen wir ein Konzept einführen, das als „Lookbehind-Behauptung“ bekannt ist.
Verwendung einer Lookbehind-Behauptung
Eine positive Lookbehind-Behauptung (?<=. ..) entspricht einer bestimmten Position in der Zeichenfolge, unmittelbar nach einem bestimmten Ausdruck. In diesem Fall möchten wir eine Position direkt nach der Zeichenfolge „Satz“ abgleichen:
(?<=sentence).*
Dieses Muster lautet: „Übereinstimmung mit null oder mehr Zeichen nach einer Position, an der ‚Satz‘ unmittelbar davor steht.“ Somit wird der gewünschte Text erfolgreich extrahiert.
Implementierung in Java
Um dies in Java zu implementieren, können Sie Ihren Code wie folgt ändern:
Pattern pattern = Pattern.compile("(?<=sentence).*"); Matcher matcher = pattern.matcher("some lame sentence that is awesome"); boolean found = false; while (matcher.find()) { System.out.println("I found the text: " + matcher.group().toString()); found = true; } if (!found) { System.out.println("I didn't find the text"); }
Wenn der Regex nun auf die Eingabezeichenfolge angewendet wird, wird nur der folgende Text abgeglichen und gedruckt „Satz“:
I found the text: that is awesome
Das obige ist der detaillierte Inhalt vonWie extrahiere ich Text nach einem Regex-Match mithilfe von Lookbehind-Assertions?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!