Bash hangi normal ifade motoru türünü kullanır?


12

Normal ifadelerimi prototiplemek ve hata ayıklamak için RegEx Buddy'yi kullanıyorum . RegEx Buddy, bir dizi farklı normal ifade motoru türü (.NET, Java, Perl, GNU BRE, GNU ERE, POSIX, BRE, POSIX ERE vb.) Arasında seçim yapmamı sağlıyor.

Bash hangi normal ifade motorunu kullanır (örneğin ifve caseifadeleri)? Centos 5.5 32 bit ve bash 3.2.25 (1) kullanıyorum:

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

GNU BRE veya GNU ERE olacağını tahmin ediyorum.

Yanıtlar:



3

Bash ifve ifadelerinde yukarıdaki normal ifade türlerinden hiçbirini kullanmaz case.

Aksine, her türlü düzenli ekspresiyondan daha az güçlü olan kabuk glob kalıpları kullanır. Nispeten yeni bash versiyonları ayrıca, (çizgi) çapa içermeyen, ancak negatif terimler içeren, ancak yukarıda belirtilen normal ifade tiplerinden herhangi birinden farklı bir sözdizimiyle düzenli ifadelere açıkça eşit olan genişletilmiş glob kalıplarının kullanılmasına izin verir.

Bununla birlikte, genişletilmiş kabuk globlarının shopt -s extglob hem kabuk betiğinde hem de etkileşimli olarak kullanılmadan önce etkinleştirilmesi gerektiğini unutmayın .

Tek bir istisnai yerde, yani [[ ]]koşullu komut içinde, =~ikili ilişki, sol taraftaki bir dizenin sağ taraftaki genişletilmiş düzenli ifadeye (ERE) karşı kontrol edilmesine izin verir.


0

Bağlantılı Bash kılavuzuna göre, Bash (3.0 ve sonraki sürümler): " Genişletilmiş Düzenli İfade (ERE) lehçesi kullanır."

Bu lehçeyle ilgili daha fazla bilgiyi burada bulabilirsiniz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.