Text nach einer Regex-Übereinstimmung finden
Sie haben sich in den Bereich von Regex vorgewagt und sind auf ein bestimmtes Bedürfnis gestoßen: Text extrahieren, der auf a folgt spezifische Übereinstimmung, ohne die Übereinstimmung selbst einzuschließen. Lassen Sie uns untersuchen, wie dies erreicht werden kann.
In Ihrem bereitgestellten Code stimmt das anfängliche Muster „Satz(.*)“ genau mit „Satz“ überein, erfasst aber auch den folgenden Text, was zu „Satz, der großartig ist“ führt ." Um nur den nachfolgenden Text zu isolieren, verwenden wir eine Technik namens „positive Lookbehind-Behauptung“.
Positive Lookbehind-Behauptung
Eine positive Lookbehind-Behauptung (?<= Satz) stimmt mit einer Stelle in der Zeichenfolge unmittelbar nach dem angegebenen Text („Satz“) überein, ohne ihn in die Übereinstimmung einzubeziehen. Mithilfe dieser Behauptung können wir ein neues Muster erstellen:
(?<=sentence).*
Java-Implementierung
Um dies in Java zu implementieren, ändern Sie Ihren Code wie folgt:
import java.util.regex.*; public class RegexPostMatch { public static void main(String[] args) { String example = "Some lame sentence that is awesome"; Pattern pattern = Pattern.compile("(?<=sentence).*"); Matcher matcher = pattern.matcher(example); if (matcher.find()) { System.out.println("Text after 'sentence': " + matcher.group()); } else { System.out.println("No match found"); } } }
Dieser überarbeitete Code gibt das gewünschte Ergebnis aus: „Das ist großartig.“
Zusätzliche Hinweise
In Java sind positive Lookbehind-Behauptungen beschränkt auf Teilausdrücke endlicher Länge. Dies bedeutet, dass Muster wie „(?<=Sätze*)“ nicht funktionieren. Erwägen Sie stattdessen die Verwendung von Alternativen wie:
(?<=sentence\s+|\W+sentence)
Das obige ist der detaillierte Inhalt vonWie kann ich Text nach einer Regex-Übereinstimmung extrahieren, ohne den passenden Text einzuschließen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!