Memorizzare in una variabile parte di una regex

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
mordecai
Linux 3.x
Linux 3.x
Messaggi: 752
Iscritto il: mer 10 gen 2007, 21:59

Memorizzare in una variabile parte di una regex

Messaggio da mordecai »

Ciao a tutti e rieccomi con un problemino in perl.
Come da oggetto ho la necessita di immagazzinare in una variabile,una parte di una espressione regolare.
Ad esempio:

Codice: Seleziona tutto

$line =~ /(\$.*)(abc)/
Io voglio fare in modo che il contenuto di (\$.*) sia memorizzato in una variabile.È possibile farlo?

grazie

Avatar utente
cymon
Linux 2.x
Linux 2.x
Messaggi: 430
Iscritto il: ven 5 gen 2007, 1:40
Slackware: 13.1
Kernel: 2.6.33.4-smp
Desktop: Fluxbox
Località: Milano
Contatta:

Re: Memorizzare in una variabile parte di una regex

Messaggio da cymon »

La variabile $1 già contiene quello che cerchi, ma di solito è meglio non fidarsi visto che queste variabili vengono rigenerate ad ogni invocazione di regexp. Quindi un bel:

Codice: Seleziona tutto

$var = $1
e ti porti tutto dove vuoi.

Ovviamente le variabili $2, $3, $4... (non ricordo fino a che limite) contengono quanto presente in tutte le altre parentesi tonde aperte.
In caso di regexp molto lunghe ricorda di contare tutte le tonde aperte (anche quelle magari utilizzate per dei caratteri in or (a|b) per capire dove è stato salvato quello che vuoi.

mordecai
Linux 3.x
Linux 3.x
Messaggi: 752
Iscritto il: mer 10 gen 2007, 21:59

Re: Memorizzare in una variabile parte di una regex

Messaggio da mordecai »

Grazie questa cosa non la sapevo proprio! :D

Avatar utente
cymon
Linux 2.x
Linux 2.x
Messaggi: 430
Iscritto il: ven 5 gen 2007, 1:40
Slackware: 13.1
Kernel: 2.6.33.4-smp
Desktop: Fluxbox
Località: Milano
Contatta:

Re: Memorizzare in una variabile parte di una regex

Messaggio da cymon »

mordecai ha scritto:Grazie questa cosa non la sapevo proprio! :D
Visto che ormai hai compreso l'illimitato potere delle regexp è ora che tu legga il Mastering regular expression che è IL libro dell'informatico (uno dei primi cinque...)

mordecai
Linux 3.x
Linux 3.x
Messaggi: 752
Iscritto il: mer 10 gen 2007, 21:59

Re: Memorizzare in una variabile parte di una regex

Messaggio da mordecai »

Grazie ancora! [-o<

EDIT:e se proprio all'interno della regex voglio fare un riferimento ad una variabile?
Ad esempio:

Codice: Seleziona tutto

$new=ciccio;
$line2 =~ /($new) (.*)/ )

Perchè non riesco in questo?

Rispondi