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 .