Heim >Java >javaLernprogramm >Wie ordne ich mehrzeiligen Text korrekt den regulären Java-Ausdrücken zu?
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!