Frage

Ist es möglich, zu erkennen, ob eine bestimmte Zeichenfolge gültige regulärer Ausdruck ist, nur mit regulären Ausdrücken?

sagen, ich habe ein paar Strings, die keine gültige reguläre Ausdrücke sein können. Ich möchte einen regulären Ausdruck haben, passt jene Zeichenfolge, die entsprechen den gültigen regulären Ausdruck. Ist das möglich? Oder muss ich eine höhere Ebene Grammatik verwenden (das heißt kontextfreie Sprache), dies zu erkennen? Ist es beeinflussen, wenn ich eine erweiterte Version von regexps wie Perl bin mit regexps?

Wenn das möglich ist, was die regexp Matching regexp ist?

War es hilfreich?

Lösung

Nein, ist es nicht möglich. Dies liegt daran, gültige reguläre Ausdrücke beinhalten Gruppierung, die erfordern ausgewogene Klammern.

Balanced Trennzeichen können nicht durch einen regulären Ausdruck angepasst werden; sie müssen stattdessen mit einer kontextfreien Grammatik angepasst werden. (Der erstes Beispiel auf diesen Artikel befasst sich mit ausgewogenen Klammern).

Andere Tipps

Sehen Sie eine ausgezeichnete write-up hier:

Regulärer Ausdruck für reguläre Ausdrücke?

Die Antwort ist, dass reguläre Ausdrücke sind nicht geschrieben, um eine reguläre Grammatik, sondern ein kontextfreier ein.

Wenn Ihre Frage war „alle gültigen regulären Ausdrücken übereinstimmen“, lautet die Antwort (vielleicht überraschend) mit ‚Ja‘. Der reguläre Ausdruck .* entsprechen alle gültigen (und nicht gültig) reguläre Ausdrücke, aber es ist ziemlich nutzlos, zu bestimmen, ob Sie eine gültige suchen.

Da aber die Frage ist, „alle übereinstimmen und nur gültig regulären Ausdrücken“, lautet die Antwort (wie DVK und Platinum Azure“gesagt haben,‚Nein‘.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top