621 Stimmen

Wie kann ich ein beliebiges Zeichen über mehrere Zeilen hinweg in einem regulären Ausdruck finden?

Zum Beispiel wird dieses Regex

(.*)

übereinstimmen mit:

abcde

Aber wie kann ich es dazu bringen, über mehrere Zeilen zu passen?

abcde
fghij

2 Stimmen

Um es zu klären; Ich habe ursprünglich Eclipse verwendet, um in mehreren Dateien nach einer bestimmten Zeichenfolge zu suchen und sie zu ersetzen. Was ich durch die unten stehenden Antworten herausgefunden habe, ist, dass mein Problem bei dem Tool lag und nicht am Regex-Muster.

23voto

Nambi_0915 Punkte 981

Wir können auch

(.*?\n)*?

verwenden, um alles einschließlich Zeilenumbruch ohne Gierigkeit abzugleichen.

Dadurch wird die neue Zeile optional gemacht

(.*?|\n)*?

18voto

In Ruby kannst du die 'm' Option (mehrzeilig) nutzen:

/DEIN_REGEX/m

Siehe die Regexp-Dokumentation auf ruby-doc.org für weitere Informationen.

9voto

Markus Jarderot Punkte 83090

"." passt normalerweise nicht zu Zeilenumbrüchen. Die meisten Regex-Engines ermöglichen es Ihnen, die S-Flagge (auch DOTALL und SINGLELINE genannt) hinzuzufügen, um "." auch Zeilenumbrüche zu abzugleichen. Wenn das fehlschlägt, könnten Sie etwas wie [\S\s] tun.

8voto

Gordon Punkte 81

Für Eclipse hat der folgende Ausdruck funktioniert:

Foo

jadajada Bar"

Regulärer Ausdruck:

Foo[\S\s]{1,10}.*Bar*

7voto

Mateusz Kaflowski Punkte 2053

Dies funktioniert für mich und ist das einfachste:

(\X*)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X