Käytän RegEx-kaveria säännöllisten lausekkeiden prototyyppiin ja virheenkorjaukseen. RegEx Buddy antaa minulle mahdollisuuden valita useista erilaisista säännöllisen lausekkeen moottorityypeistä (.NET, Java, Perl, GNU BRE, GNU ERE, POSIX, BRE, POSIX ERE jne.).
Mitä säännöllisen lausekkeen moottori tekee bash käyttö (esimerkiksi lausekkeissa if
ja case
? Käytän Centos 5.5 32-bittistä ja 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.
Oletan sen olevan GNU BRE tai GNU ERE?
Vastaus
bash (ja POSIX-kuoret yleensä) eivät käytä säännöllisiä lausekkeita case
-lauseke, pikemminkin globaalit mallit .
Säännöllisille lausekkeille, jotka käyttävät -operaattori; katso yksityiskohdat: http://mywiki.wooledge.org/BashGuide/Patterns ,
jossa sanotaan, että bash
käyttää laajennettuja säännöllisiä lausekkeita (ERE).
Kommentit
- Kiitos. Toisessa linkissä mainitaan ERE, jonka arvaan olevan GNU ERE.
Vastaa
Bash ei käytä mitään yllämainitut säännölliset lausekkeet lausekkeissa if
ja case
.
Se käyttää pikemminkin shell-globaalimalleja , jotka ovat vähemmän tehokkaita kuin minkäänlaiset säännölliset lausekkeet. Suhteellisen uudet versiot bashista mahdollistavat myös laajennettujen globaalien kuvioiden käytön, jotka ovat ilmeisesti yhtä suuria kuin säännölliset lausekkeet ilman (viiva) ankkureita, mutta sisältävät kielteisiä termejä, mutta joiden syntaksin muoto poikkeaa kaikista yllä mainitut säännölliset lauseketyypit.
Huomaa kuitenkin, että laajennetut kuoripallot on sallittava ennen käyttöä shopt -s extglob
: n kanssa sekä komentosarjakomennossa että vuorovaikutteisesti.
Yhdessä poikkeuksellisessa paikassa, nimittäin ehdollisen komennon [[ ]]
sisällä, =~
-binaarisuhde sallii vasemmanpuoleisen merkkijonon tarkistamisen puolella laajennettua säännöllistä lauseke ERE oikealla puolella.
Vastaus
Linkitetyn Bash-oppaan mukaan Bash (versiosta 3.0+ alkaen) käyttää: ” laajennettu säännöllisen lausekkeen (ERE) murre.”
Lisätietoja tästä murteesta löytyy täällä .