Pagina 1 di 1

Aiuto con espressioni regolari

Inviato: mar 6 giu 2006, 13:25
da whites11
Ciao!
ho un problemino con le espressioni regolari che mi fa uscire pazzo:

devo fare il match della stringa salvando il valore di CLI:
/aptconfig.xml?WINDWEB_URL=%2Fdoc2%2Fsetcli&CLI=202
con una espressione regolare.
ora, ho fatto i seguenti tentativi:
^/aptconfig\.xml.*CLI=([0-9]+)
^/aptconfig\.xml[[:punct:]]+CLI=([0-9]+)
^/aptconfig\.xml[:punct:]+CLI=([0-9]+)
^/aptconfig\.xml\?.*CLI=([0-9]+)
e altri simili, ma nessuno funziona! non riesco a far riconoscere il ?.
qualcuno è in grado di aiutarmi?
se vi può essere utile, lo devo usare per usare il mod_rewrite di apache in quanto la richiesta web corrispondente alla stringa cme devo analizzare è errata e apache mi da errore.

grazie per eventuali aiuti!

Inviato: mar 6 giu 2006, 13:42
da whites11
forse ho capito qual'è il problema:
l'espressione regolare viene applicata solo alla parte statica della richiesta, non ai parametri passati dopo il ?. almeno questo pare di capire leggendo il file di log.
127.0.0.1 - - [06/Jun/2006:13:43:04 +0200] whitesPC.linux.org/sid#809805c][rid#8145254/initial] (3) applying pattern '^/aptconfig.xml.*CLI=([0-9]+)' to uri '/aptconfig.xml'
127.0.0.1 - - [06/Jun/2006:13:43:04 +0200] [whitesPC.linux.org/sid#809805c][rid#8145254/initial] (1) pass through /aptconfig.xml
confermate la mia impressione?

Inviato: mar 6 giu 2006, 14:43
da Design
Questo dovrebbe restituirti il valore di CLI nella variabile $1, il valore di CLI è un numero.

Codice: Seleziona tutto

&CLI=([0-9]+)
Da:

Codice: Seleziona tutto

/aptconfig.xml?WINDWEB_URL=%2Fdoc2%2Fsetcli&CLI=202
il valore di $1 è 202.

Puoi anche utilizzare la ricerca dall'inizio alla fine delle righe della stringa:

Codice: Seleziona tutto

^.*&CLI=([0-9]+).*$
Oppure condire con:

Codice: Seleziona tutto

^/aptconfig\.xml.*[&\?]CLI=([0-9]+).*$
Byez!

Inviato: mar 6 giu 2006, 14:49
da whites11
grazie per la risposta.
ho dovuto cambiare webserver, perchè apache mi faceva il riconoscimento solo sulla parte statica dell'url.
com lighttpd ho usato la seguente espressione, che funziona alla grande:

Codice: Seleziona tutto

^/aptconfig.xml.*CLI=([0-9]+)
riutilizzando il valore numerico di CLI come da te suggerito

Inviato: mar 6 giu 2006, 14:49
da Paoletta
vedi se sta roba ti puó servire...

Codice: Seleziona tutto

 var="aptconfig.xml?WINDWEB_URL=%2Fdoc2%2Fsetcli&CLI=202"
echo $var | grep -o CLI=.* | cut -c 5-

Inviato: mar 6 giu 2006, 15:01
da Design
Ti consiglio comunque di aggiungere:

Codice: Seleziona tutto

^/aptconfig.xml.*[&\?]CLI=([0-9]+)
per diminuire le probabilità di errore.