Mitä säännöllisen lausekkeen moottorityyppiä bash käyttää?

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ä .

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *