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 if
dan case
pernyataan)? 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?
Bash tidak menggunakan salah satu dari jenis ekspresi reguler di atas
if
dancase
pernyataan.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.sumber
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 .
sumber