Ich habe begonnen zu fühlen, dass die Verwendung von regulären Ausdrücken die Wartbarkeit des Codes verringert. Es gibt etwas Böses an der Kürze und Kraft regulärer Ausdrücke. Perl verbindet dies mit Nebenwirkungen wie Standardoperatoren.Wie schreibe ich mehr wartbare reguläre Ausdrücke?
Ich habe die Angewohnheit, reguläre Ausdrücke mit mindestens einem Satz zu dokumentieren, der die grundlegende Absicht und mindestens ein Beispiel dafür angibt, was zusammenpassen würde.
Da reguläre Ausdrücke aufgebaut sind, ist es meiner Meinung nach unbedingt erforderlich, die größten Komponenten jedes Elements im Ausdruck zu kommentieren. Trotzdem kratze mich sogar mein eigener regulärer Gesichtsausdruck, als würde ich Klingonisch lesen.
Wollen Sie Ihre regulären Ausdrücke absichtlich verdummen? Zerlegen Sie möglicherweise kürzere und stärkere in einfachere Schritte? Ich habe es aufgegeben, reguläre Ausdrücke zu verschachteln. Gibt es reguläre Expressionskonstrukte, die Sie aufgrund von Mainability-Problemen vermeiden?
Lassen Sie dieses Beispiel die Frage nicht trüben.
Wenn das folgende von Michael Ash eine Art Bug in ihm hatte, würden Sie irgendwelche Aussichten haben, irgendetwas zu tun, aber es gänzlich wegzuwerfen?
^(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[13-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$
Auf Anfrage kann der genaue Zweck mit dem obigen Link von Herrn Ash gefunden werden.
Übereinstimmungen 01.1.02 | 11-30-2001 | 2/29/2000
Nicht übereinstimmungen 02/29/01 | 13/01/2002 | 11/00/02
Ich freue mich auf die Antworten zu diesem Thema. Ich tendiere zu denken, dass es keine gute Antwort gibt, so sehr ich Regex liebe;). – RedBlueThing
Um Ihre Ausdrücke regelmäßig und pflegeleicht zu halten, empfehle ich Pflaumensaft. – jerebear
In Bezug auf große haarige Regex: Ja, würde ich. Einige Aussichten zumindest. Es ist nicht mehr unleserlich als das durchschnittliche Kapitel von Dostojewski. – chaos