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 verwendet bash (z. B. in if
und case
Anweisungen)? 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?
Bash verwendet keine der oben genannten regulären Ausdrücke in
if
dencase
Anweisungen und.Vielmehr werden Shell-Glob-Muster verwendet, die weniger leistungsfähig sind als jede Art von regulärem Ausdruck. 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 die oben genannten Typen regulärer Ausdrücke.
Beachten Sie jedoch, dass erweiterte Shell-Globs vor der Verwendung mit
shopt -s extglob
beiden in einem Shell-Skript oder interaktiv aktiviert werden müssen .An einer einzelnen außergewöhnlichen Stelle, nämlich innerhalb des
[[ ]]
bedingten Befehls, ermöglicht die=~
binäre Beziehung, eine Zeichenfolge auf der linken Seite mit einem erweiterten regulären Ausdruck ERE auf der rechten Seite zu vergleichen.quelle
Laut dem verknüpften Bash-Handbuch verwendet Bash (seit Version 3.0+): "den ERE- Dialekt (Extended Regular Expression) ."
Weitere Informationen zu diesem Dialekt finden Sie hier .
quelle