Ich weiß, dass es den Perl-Regex gibt, der so etwas wie ein kleiner De-facto-Standard ist, aber warum hat noch niemand einen universellen Satz von Standardsymbolen, Syntax und Verhaltensweisen entwickelt?
Antworten
Zu viele Anzeigen?Es gibt einen Standard von IEEE im Zusammenhang mit den POSIX-Bemühungen . Die eigentliche Frage ist "Warum halten sich nicht alle daran?" ? Die Antwort ist wahrscheinlich, dass es nicht ganz so komplex ist wie PCRE (Perl Compatible Regular Expression) in Bezug auf greedy matching und was nicht.
Tatsächlich gibt es es einen Standard für reguläre Ausdrücke (POSIX), aber er ist miserabel. Also erweitern die Leute ihre RE-Engine, um sie an die Bedürfnisse ihrer Anwendung anzupassen. PCRE (Perl-kompatible reguläre Ausdrücke) ist ein Pseudo-Standard für reguläre Ausdrücke, die mit der RE-Engine von Perl kompatibel sind. Dies ist besonders wichtig, weil man die Perl-Engine in andere Anwendungen einbetten kann.
Denn Standards zu setzen ist schwer. Es ist fast unmöglich, genügend Leute dazu zu bringen, sich auf etwas zu einigen, um es zu einem offiziellen Standard zu machen, ganz zu schweigen von etwas so Komplexem wie Regex. Defacto-Standards sind viel einfacher zu erreichen.
Ein Beispiel: HTML 5 wird voraussichtlich erst im Jahr 2022 ein offizieller Standard werden. Der Entwurf der Spezifikation ist jedoch bereits verfügbar, und wichtige Funktionen des Standards werden bereits in Browsern erscheinen, lange bevor der Standard offiziell ist.
Ich habe das recherchiert und konnte nichts Konkretes finden. Meine Vermutung ist, dass es daran liegt, dass regex so oft ein Werkzeug ist, das funktioniert ON Tools und wird daher zwangsläufig plattform- und toolspezifische Erweiterungen haben.
In Visual Studio können Sie zum Beispiel reguläre Ausdrücke verwenden, um Zeichenfolgen in Ihrem Quellcode zu suchen und zu ersetzen. Sie haben Dinge wie :i hinzugefügt, um einen Bezeichner zu finden. Auf anderen Plattformen und in anderen Tools sind Bezeichner möglicherweise kein anwendbares Konzept. Auf anderen Plattformen und in anderen Werkzeugen kann es sogar sein, dass das Doppelpunkt-Zeichen als Auslassungszeichen für den Ausdruck verwendet wird.
Diese Unterschiede machen es besonders schwer, eine Standardisierung vorzunehmen.
Perl war das erste (oder fast das erste), und obwohl es Perl ist und wir es alle lieben, ist es alt und einige Leute waren der Meinung, dass es mehr Feinschliff (d.h. Funktionen) braucht. Dies ist, wo neue Typen kamen in.
Sie beginnen zu nomalisieren, die Regex in .NET verwendet wird, ist sehr ähnlich zu den Regex in anderen Sprachen verwendet, ich denke, langsam Menschen beginnen zu vereinheitlichen, aber einige sind verwendet, um ihre Perl Wege und wollen nicht ändern.
- See previous answers
- Weitere Antworten anzeigen