Erstellen Sie einen regulären Ausdruck, der einen regulären Ausdruck als Eingabe akzeptiert, und überprüfen Sie, ob dieser gültig ist. Grundsätzlich sollte Ihr Regex in der Lage sein, sich selbst zu validieren. (Ungültige reguläre Ausdrücke sollten nicht validiert werden, daher können Sie sie nicht verwenden .*
.;))
Ihre Version muss von bekannten Implementierungen (Perl, sed, grep, gawk usw.) vollständig unterstützt werden und die von diesen Implementierungen unterstützten Funktionen müssen vollständig unterstützt werden. [Mach dir keine Sorgen über den Anwalt sprechen; Ich versuche nur, mögliche Schlupflöcher für die Schlauen zu beseitigen.]
Ich würde es mit Code-Golf spielen , aber ich bin besorgt, dass es denjenigen einen Vorteil verschafft, die nicht funktionsreiche Aromen kennen und verwenden. Oder sind meine Sorgen unbegründet?
quelle
Antworten:
Rubin
Ich habe versucht, die tatsächliche Syntax von Rubys Regex-Variante so gut wie möglich zuzuordnen, aber es gibt ein paar Besonderheiten: Es akzeptiert ein paar Lookbehinds, die tatsächlich ungültig (wie
(?<=(?<!))
) sind, und es erkennt leere Zeichenbereiche wieD-A
. Letzteres könnte für ASCII behoben werden, aber der reguläre Ausdruck ist lang genug.Unlesbare Version:
quelle