Ist die Syntax zum Schreiben regulärer Ausdrücke standardisiert? Das heißt, wenn ich einen regulären Ausdruck in C++ schreibe, funktioniert er in Python oder Javascript ohne Änderungen.
Antworten
Zu viele Anzeigen?Nein, es gibt verschiedene Dialekte von regulären Ausdrücken.
Sie haben im Allgemeinen viele Gemeinsamkeiten.
Einige beliebte sind aufgelistet und verglichen aquí .
Nein, hier sind einige Unterschiede, die mir einfallen:
-
Mit JavaScript können Sie Inline-Regex schreiben (wobei
\
において\s
muss nicht als "escaped" werden\\s
), die durch das Feld/
Zeichen. Sie können Flaggen nach dem abschließenden/
. JS hat auchRegExp
Konstruktor, der die escapte Zeichenkette als erstes Argument und eine optionale Flaggenzeichenkette als zweites Argument annimmt./^\w+$/i
ynew RegExp("^\\w+$", "i")
sind gültig und identisch. -
In PHP können Sie die Regex-Zeichenfolge in ein beliebiges Begrenzungszeichen Ihrer Wahl einschließen (ich bin mir nicht sicher, welche Zeichen als Begrenzungszeichen verwendet werden können). Auch hier sollten Sie Backslashes vermeiden.
"|[0-9]+|"
ist identisch mit#[0-9]+#
-
Python und C# unterstützt Raw Strings (nicht auf Regex beschränkt, aber wirklich hilfreich für das Schreiben von Regex), die Sie unescaped Backslashes in Ihrem Regex schreiben können.
"\\d+\\s+\\w+"
kann geschrieben werden alsr'\d+\s+\w+'
in Python und@'\d+\s+\w+'
in C# -
Begrenzungszeichen wie
\<
,\A
usw. werden nicht global unterstützt. -
JavaScript unterstützt kein Lookbehind und die
DOTALL
Flagge.