Aiuto con espressioni regolari

Area di discussione libera.

Moderatore: Staff

Regole del forum
1) Rispettare le idee altrui.
2) Evitare le offese dirette.
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
Avatar utente
whites11
Linux 4.x
Linux 4.x
Messaggi: 1147
Iscritto il: ven 30 set 2005, 13:54
Località: Udine

Aiuto con espressioni regolari

Messaggio 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!

Avatar utente
whites11
Linux 4.x
Linux 4.x
Messaggi: 1147
Iscritto il: ven 30 set 2005, 13:54
Località: Udine

Messaggio 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?

Design
Linux 0.x
Linux 0.x
Messaggi: 14
Iscritto il: gio 25 mag 2006, 15:34
Località: Maranello (MO)
Contatta:

Messaggio 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!

Avatar utente
whites11
Linux 4.x
Linux 4.x
Messaggi: 1147
Iscritto il: ven 30 set 2005, 13:54
Località: Udine

Messaggio 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

Avatar utente
Paoletta
Staff
Staff
Messaggi: 3975
Iscritto il: lun 25 apr 2005, 0:00
Slackware: 14.2 - 64 bit
Desktop: fluxbox
Località: Varese

Messaggio 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-

Design
Linux 0.x
Linux 0.x
Messaggi: 14
Iscritto il: gio 25 mag 2006, 15:34
Località: Maranello (MO)
Contatta:

Messaggio da Design »

Ti consiglio comunque di aggiungere:

Codice: Seleziona tutto

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

Rispondi