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.

704voto

levik Punkte 108445

Versuchen Sie es:

((.|\n)*)

Es sagt im Grunde "ein beliebiges Zeichen oder ein Zeilenumbruch" wiederholt null oder mehr Mal.

308voto

Paige Ruten Punkte 164391

Es kommt auf die Sprache an, aber es sollte einen Modifikator geben, den Sie dem Regex-Muster hinzufügen können. In PHP lautet er:

/(.*)<FooBar>/s

Das s am Ende bewirkt, dass der Punkt alle Zeichen einschließlich Zeilenumbrüche übereinstimmt.

75voto

Paulo Merson Punkte 11246

Wenn Sie die Eclipse-Suche verwenden, können Sie die Option "DOTALL" aktivieren, um '.' so anzupassen, dass es jedes Zeichen einschließlich Zeilentrennzeichen entspricht: fügen Sie einfach "(?s)" am Anfang Ihres Suchstrings hinzu. Beispiel:

(?s).*

53voto

samwize Punkte 23381
([\s\S]*)

Der Punkt passt auf alles außer Zeilenumbrüche (\r\n). Verwenden Sie also \s\S, das ALLE Zeichen abdeckt.

43voto

Abbas Shahzadeh Punkte 421

In vielen Regex-Dialekten wird /[\S\s]*/ genau das tun, was Sie wollen. Quelle

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