Ich habe das folgende Token in einem regulären Ausdruck gefunden: [\s\S]*?
Wenn ich das richtig verstehe, bedeutet die Zeichenklasse "Übereinstimmung mit einem Leerzeichen oder einem Nicht-Leerzeichen". Würde dies also nicht genau dasselbe tun wie .*?
Ein möglicher Unterschied ist, dass .
normalerweise nicht mit Zeilenumbrüchen übereinstimmt. Dieser reguläre Ausdruck wurde jedoch in Ruby geschrieben und wurde an m
Modifikator übergeben, was bedeutet, dass .
dies tut In der Tat, passen Sie Zeilenumbrüche.
Gibt es einen anderen Grund, [\s\S]*?
anstelle von .*?
Falls es hilft, erscheint der reguläre Ausdruck, den ich sehe, in der Ritzel-Bibliothek in der Konstante HEADER_PATTERN in Zeile 97. Der vollständige Ausdruck lautet:
%Vor%Sie haben die Regex korrekt interpretiert.
Das scheint ein Relikt von anderen Sprachen zu sein, die das m-Flag (oder das S-Flag in anderen Implementierungen) nicht unterstützen.
Ein Grund, dieses Konstrukt zu verwenden, wäre, das m-Flag nicht zu verwenden, damit Sie es verwenden können. ohne übereinstimmende Zeilenumbrüche, aber sind immer noch in der Lage, alles bei Bedarf anzupassen.