PDA

View Full Version : Espressioni regolari


Xmas
09-05-2008, 13:24
Salve a tutti,
sto modificando del codice C non mio.
Mi sono imbattuto per la prima volta nelle espressioni regolari.
Ho cercato un po di documentazione sulla rete per schiarirmi le idee, ma c'è qualcosa che ancora mi sfugge.

In particolare avendo un pattern del genere:

^a{0,1}(bd)*bcd(e){0,1}(k|(kt)|t){0,1}$

passando questa stringa "bcdt" mi restituisce TRUE.

Qualcuno mi puo' spiegare perchè?
In particolare non capisco la parte (bd)*bcd(e){0,1}


grazie in anticipo a chi vorrà dedicarmi qualche minuto.... ;)

Ziosilvio
09-05-2008, 13:47
La stringa dovrebbe voler dire questo:
"Inizio; una o nessuna 'a'; poi, una sequenza di 'bd' lunga a piacere; poi 'bcd'; poi, una o nessuna 'e'; poi, una o nessuna stringa scelta fra 'k', 'kt', e 't'; fine."

La stringa 'bcdt' soddisfa l'espressione regolare, perché è fatta da "inizio; nessuna 'a'; una sequenza vuota di 'bd'; 'bcd'; nessuna 'e'; 't'; fine".

Xmas
09-05-2008, 14:07
La stringa dovrebbe voler dire questo:
"Inizio; una o nessuna 'a'; poi, una sequenza di 'bd' lunga a piacere; poi 'bcd'; poi, una o nessuna 'e'; poi, una o nessuna stringa scelta fra 'k', 'kt', e 't'; fine."

La stringa 'bcdt' soddisfa l'espressione regolare, perché è fatta da "inizio; nessuna 'a'; una sequenza vuota di 'bd'; 'bcd'; nessuna 'e'; 't'; fine".

GRANDE !!!!
Ti ringrazio per la spiegazione, sei stato chiarissimo.
Non riuscivo a capire il significato di "(bd)" che ora mi è chiaro.
grazie ancora
;)

gugoXX
09-05-2008, 14:08
Ogni tanto capita che qualuno abbia un problema e pensi
"Lo risolvero' con una Regular Expression"
Ora avra' due problemi.
Non mi ricordo chi l'ha detta, ma e' proprio vera.

marko.fatto
09-05-2008, 14:15
Non mi ricordo chi l'ha detta, ma e' proprio vera.

qualcuno qui c'è l'ha in firma.. l'ho letta appena prima ma non mi ricordo chi :mbe:

Xmas
09-05-2008, 14:42
Non mi ricordo chi l'ha detta, ma e' proprio vera.

Sono d'accordissimo !!! :D :D