Milyen reguláris kifejezés motortípust használ a bash?

A RegEx Buddy -t használom a reguláris kifejezéseim prototípusához és hibakereséséhez. A RegEx Buddy lehetővé teszi számomra, hogy számos különböző reguláris kifejezés motortípus közül választhassak (.NET, Java, Perl, GNU BRE, GNU ERE, POSIX, BRE, POSIX ERE stb.).

A reguláris kifejezés motorja bash use (például if és case utasításokban)? Futok Centos 5.5 32 bites és 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. 

Gondolom, hogy GNU BRE vagy GNU ERE leszek?

Válasz

A bash (és általában a POSIX héjak) nem használnak szabályos kifejezéseket a case utasítás, inkább glob minták .

Korlátozottan támogatott a operátor; lásd a részleteket: http://mywiki.wooledge.org/BashGuide/Patterns ,
amely szerint bash kiterjesztett rendszeres kifejezéseket (ERE) használ.

Megjegyzések

  • Köszönöm. A második link az ERE-t említi, amiről azt hiszem, hogy a GNU ERE.

Válasz

Bash nem használja a a fenti típusú reguláris kifejezések a if és a case utasításokban.

Inkább shell glob mintákat használ A bash viszonylag új verziói lehetővé teszik a kiterjesztett globális minták használatát, amelyek kifejezetten megegyeznek a (vonali) horgonyok nélküli reguláris kifejezésekkel, de tartalmaznak tagolt kifejezéseket is, de a szintaxissal eltérnek a fent említett reguláris kifejezés típusok.

Ne feledje azonban, hogy a kiterjesztett héjgömböket engedélyezni kell az shopt -s extglob használatával, mind shell-szkriptben, mind interaktív módon.

Egyetlen kivételes helyen, mégpedig a [[ ]] feltételes parancsban, az =~ bináris reláció lehetővé teszi a bal oldalon lévő karakterlánc ellenőrzését. oldalán egy kiterjesztett szabályos ellen ERE kifejezés a jobb oldalon.

Válasz

A linkelt Bash útmutató szerint a Bash (a 3.0+ verzió óta) a következőket használja: “a kiterjesztett rendszeres kifejezés (ERE) dialektus.”

Az erről a dialektusról további információ található. itt .

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük