Heim > Java > javaLernprogramm > Wie kann ich Text nach einer Regex-Übereinstimmung extrahieren, ohne den passenden Text einzuschließen?

Wie kann ich Text nach einer Regex-Übereinstimmung extrahieren, ohne den passenden Text einzuschließen?

DDD
Freigeben: 2024-11-07 09:51:03
Original
966 Leute haben es durchsucht

How Can I Extract Text Following a Regex Match Without Including the Matching Text?

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).*
Nach dem Login kopieren

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");
        }
    }
}
Nach dem Login kopieren

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)
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage