1.13. El llenguatge de processament d’arxius GAWK
1.13.4. Expressions regulars (en anglès, regexps)
Atès que gawk
és un llenguatge especialitzat en el processament d’arxius de text basat en patrons, és essencial tornar a presentar una secció sobre expressions regulars. Una nova presentació sempre ajuda a fixar els temes a estudiar.
Una expressió regular (regex o regexp) defineix un o diversos conjunts de cadenes de caràcters utilitzant una notació específica:
- Una cadena literal de caràcters és una regex que defineix una sola cadena: a si mateixa.
- Una expressió regular més complexa:
- Caràcters ordinaris utilitzats en regexe: _,
A-Z, a-z, 0-9
- Metacaràcters utilitzats en regexe:
.*[ ]^${ }+?|( )
- Caràcters ordinaris utilitzats en regexe: _,
Les regexes s’utilitzen per trobar patrons específics en arxius de text. Programes com ed, vim, grep, sed, awk, perl, entre molts altres, fan ús de regexes per buscar aquests patrons en arxius de text.
Hi ha dos motors de recerca de patrons mitjançant expressions regulars i cal tenir-ho molt en compte en funció de l’ordre que es vol utilitzar
- El motor bàsic d’expressions regulars (BRE), usat per exemple per sed i grep.
- El motor estès d’expressions regulars (ERE), usat per exemple per
gawk
i perl.
S’afegeixen dues taules amb la notació de caràcters BRE/ERE usats més freqüentment amb gawk
(taules 14 i 15).
Taula 14. Notació de caràcters especials. Motor BRE/ERE.
Notació | Significat |
\ |
Escapa el significat del metacaràcter, interpretació literal |
. |
Qualsevol caràcter senzill excepte NULL |
* |
Qualsevol quantitat de vegades (o zero) el caràcter precedent |
^ |
La regexp coincideix a l’inici de la línia o cadena de caràcters |
$ |
La regexp coincideix al final de la línia o cadena de caràcters |
[123][A-Z] |
Qualsevol dels caràcters inclosos o rang indicat coincideixen |
[[:alnum:]] |
Alfanumèrics [a-zA-Z0-9_] |
[[:alpha:]] |
Caracters alfabètics [a-zA-Z] |
[[:space:]] |
Espais (' ' , tabuladors, salt de línia) |
[[:blank:]] |
Coincideixen espais i tabuladors |
[[:upper:]] |
Coincideix [A-Z] |
[[:lower:]] |
Coincideix [a-z] |
[[:digit:]] |
Coincideix [0-9] |
I una altra taula en particular, amb la notació de caràcters ERE usats més freqüentment:
Taula 15. Classe de caràcters ERE més freqüentment usats.
Notació | Significat |
\w |
Caràcters alfanumèrics [a-zA-Z0-9_] |
\W |
Caràcters no alfanumèrics [^[:alnum:]_] |
\s |
Coincideix amb espais i tabuladors |
\d |
Coincideix [0-9] |
\< |
Coincideix amb l’inici d’una paraula |
\> |
Coincideix amb el final d’una paraula |
{n,m} |
Expressió d’interval: coincideixen instàncies, o de n a m instàncies |
+ |
Coincideixen una o més instàncies de la regexp precedent |
¿ |
Coincideixen zero o una instància de la regexp precedent |
| |
Coincideix la regexp especificada abans o després de | (això|allò) |
( ) |
Busca un match al grup de regexes incloses: (això|allò) |