Warum gibt es so viele Varianten für reguläre Ausdrücke? [geschlossen]


14

Als ich heute den Quellcode unseres Projekts überprüfte, stellte ich fest, dass sich am Ende jeder Zeile viele unnötige "Leerzeichen" und "Tabulatoren" befinden. Also habe ich beschlossen, sie mit regulären Ausdrücken zu löschen.

Ich habe jedoch festgestellt, dass der Befehl sed -i '/\s+$/d'nicht funktioniert. Bis ich den Befehl auf änderte see -ri '/\s+$/d', entsprach er meiner Erwartung. Aus dem Handbuch von sedheißt es, -rruft erweiterte reguläre Ausdrücke auf.

Ich bin verwirrt, warum gibt es so viele reguläre Ausdrücke? Wie vim / emacs / perl / sed regexp. Warum bietet der reguläre Ausdruck keine eindeutige Benutzeroberfläche?

Antworten:


19

Aus historischen Gründen. Es gibt keine einheitliche Definition der Syntax für "Reguläre Ausdrücke". Das Konzept eines regulären Ausdrucks selbst hat nichts mit der tatsächlichen Syntax zu tun, die ihn formal beschreibt. Die Leute haben sich verschiedene Arten ausgedacht, um dasselbe zu sagen, daher unterschiedliche Stile der Regex-Syntax.

Sie werden jedoch feststellen, dass es heutzutage hauptsächlich zwei Gruppen von Definitionen gibt:

  1. POSIX-reguläre Ausdrücke , die Basic (BRE) und Extended Regular Expressions (ERE) angeben. Die Verwirrung beginnt, wenn beispielsweise reguläre Ausdrücke\( \)zur Bezeichnung einer Gruppe verwendet werden und erweiterte reguläre Ausdrücke dafür verwendet werden( ).

  2. Perl-basierte reguläre Ausdrücke . Perl-reguläre Ausdrücke definieren eine konsistentere Syntax, bei der beispielsweise ein Backslash immer einem nicht alphanumerischen Zeichen entgeht. Die Perl-Regex-Syntax ist heutzutage in vielen gängigen Programmiersprachen zu finden, von Java bis Ruby.

Weitere Informationen finden Sie im Wikipedia-Artikel zur Regex-Syntax .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.