Viele Programmierer kennen die Freude, einen schnellen regulären Ausdruck zu erstellen, heutzutage oft mit Hilfe eines Webdienstes oder traditionellerweise bei interaktiver Eingabeaufforderung, oder vielleicht ein kleines Skript zu schreiben, das den regulären Ausdruck in der Entwicklung hat, und eine Sammlung von Testfällen . In beiden Fällen ist der Vorgang iterativ und ziemlich schnell: Hacken Sie so lange an der kryptisch aussehenden Zeichenfolge, bis sie Ihren Wünschen entspricht und sie erfasst und ablehnt, was Sie nicht möchten.
Für einen einfachen Fall könnte das Ergebnis wie folgt aussehen:
Pattern re = Pattern.compile(
"^\\s*(?:(?:([\\d]+)\\s*:\\s*)?(?:([\\d]+)\\s*:\\s*))?([\\d]+)(?:\\s*[.,]\\s*([0-9]+))?\\s*$"
);
Viele Programmierer wissen auch, wie schwierig es ist, einen regulären Ausdruck zu bearbeiten oder nur einen regulären Ausdruck in einer alten Codebasis zu codieren. Mit ein wenig Bearbeitung, um es aufzuteilen, ist es für jeden, der mit Regexps einigermaßen vertraut ist, immer noch sehr einfach, es über Regexp zu verstehen, und ein Regexp-Veteran sollte sofort sehen, was es tut (antworten Sie am Ende des Beitrags, falls jemand die Übung haben möchte es selbst herauszufinden).
Es muss jedoch nicht viel komplexer werden, damit ein regulärer Ausdruck wirklich nur zum Schreiben verwendet werden kann, und selbst bei sorgfältiger Dokumentation (die natürlich jeder für alle komplexen regulären Ausdrücke ausführt, die er schreibt ...) wird das Ändern der regulären Ausdrücke zu einem Problem entmutigende Aufgabe. Es kann auch eine sehr gefährliche Aufgabe sein, wenn reguläre Ausdrücke nicht sorgfältig auf Einheit getestet werden (aber jeder hat natürlich umfassende Komponententests für all seine komplexen regulären Ausdrücke, sowohl positiv als auch negativ ...).
Also, um es kurz zu machen, gibt es eine Schreib-Lese-Lösung / Alternative für reguläre Ausdrücke, ohne ihre Macht zu verlieren? Wie würde der obige reguläre Ausdruck mit einem alternativen Ansatz aussehen? Jede Sprache ist in Ordnung, obwohl eine mehrsprachige Lösung am besten wäre, sind reguläre Ausdrücke mehrsprachig.
Und dann ist das, was der frühere reguläre Ausdruck tut: parsen Sie eine Zeichenfolge von Zahlen im Format 1:2:3.4
, erfassen Sie jede Zahl, wo Leerzeichen erlaubt sind und nur 3
erforderlich sind.