Gibt es einen regulären Ausdruck, der "allen Zeichen einschließlich Zeilenumbrüchen" entspricht?
Im regulären Ausdruck gibt es beispielsweise keine Ausgabe von, $2
da (.+?)
beim Abgleichen keine neuen Zeilen enthalten sind.
$string = "START Curabitur mollis, dolor ut rutrum consequat, arcu nisl ultrices diam, adipiscing aliquam ipsum metus id velit. Aenean vestibulum gravida felis, quis bibendum nisl euismod ut.
Nunc at orci sed quam pharetra congue. Nulla a justo vitae diam eleifend dictum. Maecenas egestas ipsum elementum dui sollicitudin tempus. Donec bibendum cursus nisi, vitae convallis ante ornare a. Curabitur libero lorem, semper sit amet cursus at, cursus id purus. Cras varius metus eu diam vulputate vel elementum mauris tempor.
Morbi tristique interdum libero, eu pulvinar elit fringilla vel. Curabitur fringilla bibendum urna, ullamcorper placerat quam fermentum id. Nunc aliquam, nunc sit amet bibendum lacinia, magna massa auctor enim, nec dictum sapien eros in arcu.
Pellentesque viverra ullamcorper lectus, a facilisis ipsum tempus et. Nulla mi enim, interdum at imperdiet eget, bibendum nec END";
$string =~ /(START)(.+?)(END)/;
print $2;
Antworten:
Fügen Sie den
s
Modifikator zu Ihrer Regex hinzu, damit die.
Zeilenumbrüche übereinstimmen:quelle
"(?s)yourPattern.*"
Siehe auch: rexegg.com/regex-modifiers.html#dotallm
nichts
. Siehe: rubular.comWenn Sie den
/s
Regex-Modifikator nicht hinzufügen möchten (möglicherweise möchten Sie.
seine ursprüngliche Bedeutung an anderer Stelle im Regex beibehalten), können Sie auch eine Zeichenklasse verwenden. Eine Möglichkeit:ein Zeichen, das kein Raum oder ein Raum ist. Mit anderen Worten, jedes Zeichen.
Sie können Modifikatoren auch lokal in einem kleinen Teil des regulären Ausdrucks ändern, wie folgt:
quelle
(?s:.)
selbst mit der Syntax arbeiten.(?:.|\n)
in irgendeiner Weise minderwertig, außer weniger elegant zu sein?([\S\s]+)
ist das, wonach ich gesucht habe. Vielen Dank. +1*
oder+
da es 2 ^ n verschiedene Möglichkeiten gibt, kann es mit einer bestimmten Zeichenfolge der Länge n übereinstimmen.Ja, Sie müssen nur eine
.
neue Zeile erstellen:quelle
Sie möchten "mehrzeilig" verwenden.
quelle
m
wirkt sich auf die^
und$
Anker aus, aber nicht.
.