Repository 32bit  Forum
Repository 64bit  Wiki

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.

Memorizzare in una variabile parte di una regex

Messaggioda mordecai » sab giu 07, 2008 18:48

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
mordecai
Linux 2.6
Linux 2.6
 
Messaggi: 752
Iscritto il: mer gen 10, 2007 21:59

Re: Memorizzare in una variabile parte di una regex

Messaggioda cymon » sab giu 07, 2008 20:23

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.
Avatar utente
cymon
Linux 2.4
Linux 2.4
 
Messaggi: 430
Iscritto il: ven gen 05, 2007 1:40
Località: Milano
Slackware: 13.1
Kernel: 2.6.33.4-smp
Desktop: Fluxbox

Re: Memorizzare in una variabile parte di una regex

Messaggioda mordecai » sab giu 07, 2008 21:11

Grazie questa cosa non la sapevo proprio! :D
mordecai
Linux 2.6
Linux 2.6
 
Messaggi: 752
Iscritto il: mer gen 10, 2007 21:59

Re: Memorizzare in una variabile parte di una regex

Messaggioda cymon » sab giu 07, 2008 21:52

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...)
Avatar utente
cymon
Linux 2.4
Linux 2.4
 
Messaggi: 430
Iscritto il: ven gen 05, 2007 1:40
Località: Milano
Slackware: 13.1
Kernel: 2.6.33.4-smp
Desktop: Fluxbox

Re: Memorizzare in una variabile parte di una regex

Messaggioda mordecai » sab giu 07, 2008 22:37

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?
mordecai
Linux 2.6
Linux 2.6
 
Messaggi: 752
Iscritto il: mer gen 10, 2007 21:59


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron