Verwendung regulärer Ausdrücke für den mehrzeiligen Textabgleich
Beim Versuch, mehrzeiligen Text mit regulären Ausdrücken in Java abzugleichen, spielen bestimmte Überlegungen eine Rolle. Der Pattern.MULTILINE-Modifikator und die Abkürzung (?m) können scheinbar unerwartete Ergebnisse liefern.
Um das Verhalten zu verstehen, ist es wichtig, den Zweck der Modifikatoren zu klären. Mit Pattern.MULTILINE (?m) können die Anker ^ (Zeilenanfang) und $ (Zeilenende) am Anfang und Ende jeder Zeile übereinstimmen, anstatt nur an den Grenzen der Zeichenfolge. Andererseits ermöglicht Pattern.DOTALL (?s), dass das Punktzeichen mit Zeilenumbrüchen übereinstimmt.
In Ihrem Beispiel schlägt das Muster (?m) fehl, wenn es mit String.matches verwendet wird, da matches() das erfordert Regex, um die gesamte Zeichenfolge abzugleichen. Da Ihr regulärer Ausdruck (W)(S) nur mit einem Teil der Zeichenfolge übereinstimmt, ergibt der Vergleich „falsch“.
Um eine Zeichenfolge zu finden, die mit „Benutzerkommentare:“ beginnt, einem regulären Ausdruck was besser zur Aufgabe passt, ist:
^\s*User Comments:\s*(.*)
Diese Regex verwendet Pattern.DOTALL, um zu ermöglichen, dass der Punkt mit Zeilenumbrüchen übereinstimmt, und erfasst den Text, der auf „Benutzer“ folgt Kommentare:“ in die erste Erfassungsgruppe.
Durch die Verwendung des DOTALL-Modifikators und die Nutzung der richtigen Abgleichsmethode (find() oder matches()) können Sie mehrzeiligen Text mithilfe regulärer Ausdrücke in Java effektiv abgleichen.
Das obige ist der detaillierte Inhalt vonWie kann ich mehrzeiligen Text mithilfe regulärer Ausdrücke in Java effektiv abgleichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!