Welchen Engine-Typ für reguläre Ausdrücke verwendet bash?

Ich verwende RegEx Buddy , um meine regulären Ausdrücke zu prototypisieren und zu debuggen. Mit RegEx Buddy kann ich zwischen verschiedenen Engine-Typen für reguläre Ausdrücke wählen (.NET, Java, Perl, GNU BRE, GNU ERE, POSIX, BRE, POSIX ERE usw.).

Welche Engine für reguläre Ausdrücke funktioniert Bash-Verwendung (zum Beispiel in den Anweisungen if und case)? Ich verwende Centos 5.5 32 Bit und Bash 3.2.25 (1):

[kevin@mon01 scratch]$ bash --version GNU bash, version 3.2.25(1)-release (i686-redhat-linux-gnu) Copyright (C) 2005 Free Software Foundation, Inc. 

Ich vermute, es wird GNU BRE oder GNU ERE sein?

Antwort

bash (und POSIX-Shells im Allgemeinen) verwenden keine regulären Ausdrücke in case -Anweisung, eher Glob-Muster .

Reguläre Ausdrücke mit Operator; Einzelheiten finden Sie unter: http://mywiki.wooledge.org/BashGuide/Patterns ,
das besagt, dass bash verwendet erweiterte reguläre Ausdrücke (ERE).

Kommentare

  • Danke. Der zweite Link erwähnt ERE, von dem ich vermute, dass es GNU ERE ist.

Antwort

Bash verwendet keine von Die oben genannten Arten von regulären Ausdrücken in den Anweisungen if und case.

Es werden vielmehr Shell-Glob-Muster verwendet Relativ neue Versionen von bash ermöglichen auch die Verwendung erweiterter Glob-Muster, die ausdrücklich regulären Ausdrücken ohne (Linien-) Anker entsprechen, aber negierte Begriffe enthalten, jedoch eine andere Syntax aufweisen als alle anderen die oben genannten Typen regulärer Ausdrücke.

Beachten Sie jedoch, dass erweiterte Shell-Globs vor der Verwendung mit shopt -s extglob sowohl in einem Shell-Skript als auch interaktiv aktiviert werden müssen.

An einer einzelnen außergewöhnlichen Stelle, nämlich innerhalb des bedingten Befehls [[ ]], ermöglicht die binäre Beziehung =~ das Überprüfen einer Zeichenfolge auf der linken Seite Seite gegen einen verlängerten Stammgast Ausdruck ERE auf der rechten Seite.

Antwort

Gemäß dem verknüpften Bash-Handbuch verwendet Bash (seit Version 3.0+): „the Erweiterter regulärer Ausdruck (ERE) Dialekt.“

Weitere Informationen zu diesem Dialekt finden Sie hier .

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.