Heim  >  Artikel  >  Java  >  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
DDDOriginal
2024-11-07 09:51:03814Durchsuche

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).*

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!

Stellungnahme:
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