Heim > Java > javaLernprogramm > Wie kann ich mehrzeiligen Text mit regulären Java-Ausdrücken korrekt zuordnen?

Wie kann ich mehrzeiligen Text mit regulären Java-Ausdrücken korrekt zuordnen?

Barbara Streisand
Freigeben: 2024-12-10 11:30:10
Original
223 Leute haben es durchsucht

How Can I Correctly Match Multiline Text Using Java Regular Expressions?

Mehrzeiligen Text mit regulärem Ausdruck abgleichen

Beim Versuch, mehrzeiligen Text mit Java abzugleichen, kann es bei der Verwendung des Pattern.MULTILINE-Modifikators und zu Problemen kommen der (?m)-Ausdruck. Hier ist ein Beispiel, das den Unterschied erklärt und eine Lösung bietet:

Wir haben den folgenden mehrzeiligen Text:

User Comments: This is \t a\ta \n test \n\n message \n
Nach dem Login kopieren

Muster mit Pattern.MULTILINE-Modifikator:

String pattern1 = "User Comments: (\W)*(\S)*";
Pattern p = Pattern.compile(pattern1, Pattern.MULTILINE);
System.out.println(p.matcher(test).find()); // true
Nach dem Login kopieren

Dieses Muster stimmt erfolgreich mit dem Text überein, da der Modifikator Pattern.MULTILINE die Übereinstimmung der ^- und $-Anker am Anfang und ermöglicht Ende jeder Zeile.

Muster mit (?m)-Ausdruck:

String pattern2 = "(?m)User Comments: (\W)*(\S)*";
System.out.println(test.matches(pattern2)); // false
Nach dem Login kopieren

Dieses Muster stimmt nicht überein, da der (?m)-Ausdruck falsch ist. Es sollte (?s) sein, um den DOTALL-Modus zu aktivieren, der es ermöglicht, dass der Punkt (.) mit Zeilenumbruchzeichen übereinstimmt.

Außerdem wird die Methode matches() verwendet, um zu prüfen, ob die gesamte Zeichenfolge mit dem Muster übereinstimmt. In diesem Fall stimmt das Muster nur mit einem Teil der Zeichenfolge überein, daher gibt „matches()“ „false“ zurück.

Lösung:

Um den mehrzeiligen Text mithilfe eines regulären Ausdrucks korrekt abzugleichen , können Sie das folgende Muster mit dem Modifikator Pattern.DOTALL verwenden:

Pattern regex = Pattern.compile("^\s*User Comments:\s+(.*)", Pattern.DOTALL);
Matcher regexMatcher = regex.matcher(subjectString);
if (regexMatcher.find()) {
    ResultString = regexMatcher.group(1);
}
Nach dem Login kopieren

Dieses Muster erfasst den Text nach „Benutzerkommentare:“ und speichert ihn in ErgebnisString.

Das obige ist der detaillierte Inhalt vonWie kann ich mehrzeiligen Text mit regulären Java-Ausdrücken korrekt zuordnen?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage