Apa jenis mesin ekspresi reguler yang digunakan bash?

12

Saya menggunakan RegEx Buddy untuk membuat prototipe dan men-debug ekspresi reguler saya. RegEx Buddy memungkinkan saya untuk memilih di antara beberapa jenis mesin ekspresi reguler yang berbeda (.NET, Java, Perl, GNU BRE, GNU ERE, POSIX, BRE, POSIX ERE dll).

Apa mesin ekspresi reguler yang digunakan bash (misalnya dalam ifdan casepernyataan)? Saya menjalankan Centos 5.5 32 bit dan 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.

Saya menduga itu akan menjadi GNU BRE atau GNU ERE?

Kev
sumber

Jawaban:

11

bash (dan shell POSIX secara umum) tidak menggunakan ekspresi reguler dalam casepernyataan, melainkan pola glob .

Ada dukungan terbatas untuk ekspresi reguler menggunakan =~operator; lihat detailnya di: http://mywiki.wooledge.org/BashGuide/Patterns ,
yang mengatakan bahwa bashmenggunakan Extended Regular Expressions (ERE).

Riccardo Murri
sumber
Terima kasih. Tautan kedua menyebutkan ERE yang saya duga adalah GNU ERE.
Kev
3

Bash tidak menggunakan salah satu dari jenis ekspresi reguler di atas ifdan casepernyataan.

Alih-alih, ia menggunakan pola glob shell, yang kurang kuat dari segala jenis ekspresi reguler. Versi bash yang relatif baru juga memungkinkan penggunaan pola glob yang diperluas yang secara ekspresif sama dengan ekspresi reguler tanpa jangkar (garis) tetapi termasuk istilah yang dinegasikan, tetapi dengan sintaks yang berbeda dari tipe ekspresi reguler yang disebutkan di atas.

Namun perlu dicatat bahwa gumpalan shell yang diperluas harus diaktifkan sebelum digunakan dengan shopt -s extglob skrip shell atau secara interaktif.

Di satu tempat yang luar biasa, yaitu di dalam [[ ]]perintah kondisional, =~relasi biner memungkinkan untuk memeriksa string di sisi kiri terhadap ERE ekspresi reguler yang diperluas di sisi kanan.

Franki
sumber
0

Menurut panduan Bash yang ditautkan, Bash (sejak versi 3.0+) menggunakan: " Dialek Extended Regular Expression (ERE) ."

Informasi lebih lanjut tentang dialek itu dapat ditemukan di sini .

SkyLeach
sumber