Heim >Java >javaLernprogramm >Wie ordne ich mehrzeiligen Text korrekt den regulären Java-Ausdrücken zu?

Wie ordne ich mehrzeiligen Text korrekt den regulären Java-Ausdrücken zu?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-09 18:01:15299Durchsuche

How to Correctly Match Multiline Text with Java Regular Expressions?

Mehrzeiligen Text mit regulären Ausdrücken abgleichen

Der Abgleich von mehrzeiligem Text erfordert oft den Umgang mit Zeilenumbrüchen und Verankerungen. Bei Verwendung der Pattern-Klasse von Java gibt es zwei Modifikatoren, die dabei helfen können: Pattern.MULTILINE und String.matches(). Es kann jedoch zu Verwechslungen bei der Verwendung kommen.

Pattern.MULTILINE vs. (?m)

Pattern.MULTILINE und (?m) dienen beide demselben Zweck : Ermöglichen, dass ^ und $ am Anfang und Ende jeder Zeile übereinstimmen, und nicht nur am Anfang und Ende der gesamten Zeile string.

String.matches() vs. Pattern.matcher()

String.matches() erwartet, dass der reguläre Ausdruck mit der gesamten Zeichenfolge übereinstimmt. Dies bedeutet, dass seine Verwendung beim Umgang mit mehrzeiligem Text eingeschränkt sein kann.

Auflösung des Beispiels

Im bereitgestellten Beispiel wird (?m) mit String.matches( verwendet ), wo das Problem liegt. Da der reguläre Ausdruck nur einen Teil des mehrzeiligen Textes erfasst, kann String.matches() nicht die gesamte Zeichenfolge abgleichen und gibt „false“ zurück.

Richtige Verwendung für den mehrzeiligen Abgleich

Um mehrzeiligen Text korrekt abzugleichen, sollten Sie Pattern.compile() mit dem Modifikator Pattern.DOTALL verwenden, der es dem Punkt (.) ermöglicht, mit Zeilenumbruchzeichen übereinzustimmen. Hier ist eine aktualisierte Version des Codes:

String test = "User Comments: This is \t a\ta \n test \n\n message \n";
String pattern = "^\s*User Comments:\s*(.*)";
Pattern regex = Pattern.compile(pattern, Pattern.DOTALL);
Matcher regexMatcher = regex.matcher(test);
if (regexMatcher.find()) {
    String result = regexMatcher.group(1);
}

Dieser Code erfasst erfolgreich den Text nach „Benutzerkommentare:“ in mehreren Zeilen.

Das obige ist der detaillierte Inhalt vonWie ordne ich mehrzeiligen Text korrekt den regulären Java-Ausdrücken zu?. 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