Repository 32bit  Forum
Repository 64bit  Wiki

espressione regolare & riconoscimento stringa

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.

Re: espressione regolare & riconoscimento stringa

Messaggioda tgmx » mer giu 17, 2009 10:34

spina ha scritto:Ok, codice numerico. Quindi ti interessa anche verificare che il totale tra cifre e spazi sia 15?

Emanuele


esatto
Avatar utente
tgmx
Linux 3.x
Linux 3.x
 
Messaggi: 1330
Iscritto il: ven apr 28, 2006 13:40
Località: Ancona
Slackware: 13.37
Desktop: KDE 4

Re: espressione regolare & riconoscimento stringa

Messaggioda tgmx » mer giu 17, 2009 10:36

_NYTRO_ ha scritto:Scusa, allora non potresti tagliare a priori i primi 15 caratteri di ogni riga in modo da eseguire i controlli solo su quelli? :?


potrei ma dici che mi agevolerebbe?
E poi se possibile vorrei rdurre al minimo le elaborazioni su ogni stringa dato che il programma ne deve controllare tante.
Avatar utente
tgmx
Linux 3.x
Linux 3.x
 
Messaggi: 1330
Iscritto il: ven apr 28, 2006 13:40
Località: Ancona
Slackware: 13.37
Desktop: KDE 4

Re: espressione regolare & riconoscimento stringa

Messaggioda _NYTRO_ » mer giu 17, 2009 10:36

Scusa, ma per fare meno "caciara" non puoi restringere il tutto ai primi 15 caratteri?!
Tagliati i restanti 185, quali sono i possibili codici "buoni"?

- può iniziare con un carattere NON numerico?
_NYTRO_
Linux 2.4
Linux 2.4
 
Messaggi: 419
Iscritto il: ven mag 07, 2004 23:00

Re: espressione regolare & riconoscimento stringa

Messaggioda _NYTRO_ » mer giu 17, 2009 10:37

tgmx ha scritto:
_NYTRO_ ha scritto:Scusa, allora non potresti tagliare a priori i primi 15 caratteri di ogni riga in modo da eseguire i controlli solo su quelli? :?

potrei ma dici che mi agevolerebbe?
E poi se possibile vorrei rdurre al minimo le elaborazioni su ogni stringa dato che il programma ne deve controllare tante.


Appunto!
Un conto è una stringa da 200 caratteri, un altro una da 15.. ;)
_NYTRO_
Linux 2.4
Linux 2.4
 
Messaggi: 419
Iscritto il: ven mag 07, 2004 23:00

Re: espressione regolare & riconoscimento stringa

Messaggioda masalapianta » mer giu 17, 2009 10:38

se i caratteri utili son sempre i primi 15 (esclusi gli spazi) non e' chiaro perche' tu voglia usare una regexp, prendi i primi 15 caratteri e gli togli gli spazi finali:
echo "$stringa"|cut -b 1-15|awk '{print $1}'
il parsing con le regexp hanno un peso computazionale non indifferente, non ha senso usarle quando se ne puo' fare a meno.
Avatar utente
masalapianta
Iper Master
Iper Master
 
Messaggi: 2775
Iscritto il: dom lug 24, 2005 23:00
Località: Roma
Nome Cognome: famoso porco
Kernel: uname -r
Desktop: awesome
Distribuzione: Debian

Re: espressione regolare & riconoscimento stringa

Messaggioda tgmx » mer giu 17, 2009 10:38

_NYTRO_ ha scritto:Scusa, ma per fare meno "caciara" non puoi restringere il tutto ai primi 15 caratteri?!
Tagliati i restanti 185, quali sono i possibili codici "buoni"?

- può iniziare con un carattere NON numerico?


no, il codice è costituito da cifre, deve iniziare con una cifra, può essere lungo minimo 7 massimo 15 caratteri e i caratteri restanti devono essere tutti spazi.
Avatar utente
tgmx
Linux 3.x
Linux 3.x
 
Messaggi: 1330
Iscritto il: ven apr 28, 2006 13:40
Località: Ancona
Slackware: 13.37
Desktop: KDE 4

Re: espressione regolare & riconoscimento stringa

Messaggioda tgmx » mer giu 17, 2009 10:42

masalapianta ha scritto:se i caratteri utili son sempre i primi 15 (esclusi gli spazi) non e' chiaro perche' tu voglia usare una regexp, prendi i primi 15 caratteri e gli togli gli spazi finali:
echo "$stringa"|cut -b 1-15|awk '{print $1}'
il parsing con le regexp hanno un peso computazionale non indifferente, non ha senso usarle quando se ne puo' fare a meno.


Anche questa è una possibilità ma con l'occasione volevo imparare qualcosa di più sulle espressioni regolare.

Tra l'altro non è escluso che in futuro debba controllare anche la forma di quello che segue quindi se riuscivo ad impostare correttamente
un'espressione regolare mi trovavo pronto ad aggiungere controlli.

In ogni caso se non fosse possibile con l'espressione regolare troverei un altro modo.
Avatar utente
tgmx
Linux 3.x
Linux 3.x
 
Messaggi: 1330
Iscritto il: ven apr 28, 2006 13:40
Località: Ancona
Slackware: 13.37
Desktop: KDE 4

Re: espressione regolare & riconoscimento stringa

Messaggioda targzeta » mer giu 17, 2009 10:43

tgmx ha scritto:no, il codice è costituito da cifre, deve iniziare con una cifra, può essere lungo minimo 7 massimo 15 caratteri e i caratteri restanti devono essere tutti spazi.

Allora quello che fa per te è questa RE (quote a parte):
Codice: Seleziona tutto
'^[[:digit:]]\{7,15\}[[:space:]]\{0,8\}'


Emanuele
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6168
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: espressione regolare & riconoscimento stringa

Messaggioda tgmx » mer giu 17, 2009 10:46

spina ha scritto:
tgmx ha scritto:no, il codice è costituito da cifre, deve iniziare con una cifra, può essere lungo minimo 7 massimo 15 caratteri e i caratteri restanti devono essere tutti spazi.

Allora quello che fa per te è questa RE (quote a parte):
Codice: Seleziona tutto
'^[[:digit:]]\{7,15\}[[:space:]]\{0,8\}'


Emanuele


così accetterebbe anche i codici di 6 cifre seguiti da 2 spazi solamente... sbaglio? Non terrei conto che il totale deve essere 15.

EDIT:
così accetterebbe anche i codici di 7 cifre seguiti da 2 spazi solamente... sbaglio? Non terrei conto che il totale deve essere 15.
Avatar utente
tgmx
Linux 3.x
Linux 3.x
 
Messaggi: 1330
Iscritto il: ven apr 28, 2006 13:40
Località: Ancona
Slackware: 13.37
Desktop: KDE 4

Re: espressione regolare & riconoscimento stringa

Messaggioda targzeta » mer giu 17, 2009 10:53

tgmx ha scritto:...così accetterebbe anche i codici di 6 cifre seguiti da 2 spazi solamente... sbaglio? Non terrei conto che il totale deve essere 15.

L'espressione regolare accetta solo tutto ciò che inizia con almeno 7 e al più 15 cifre, seguite da 0 o al più 8 spazi. Il problema è la conta totale dei caratteri. Ovviamente accetta anche stringhe che iniziano con 15 cifre seguite da 8 spazi.

Emanuele
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6168
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: espressione regolare & riconoscimento stringa

Messaggioda tgmx » mer giu 17, 2009 10:55

spina ha scritto:L'espressione regolare accetta solo tutto ciò che inizia con almeno 7 e al più 15 cifre, seguite da 0 o al più 8 spazi. Il problema è la conta totale dei caratteri. Ovviamente accetta anche stringhe che iniziano con 15 cifre seguite da 8 spazi.

Emanuele


Esatto, dovrei trovare il modo di contare il totale dei caratteri.
Se andava bene qualcosa tipo:
Codice: Seleziona tutto
([0-9]{7,}[\\ ]{0,}){15}

avevo risolto... purtroppo sembra non funzionare.
Avatar utente
tgmx
Linux 3.x
Linux 3.x
 
Messaggi: 1330
Iscritto il: ven apr 28, 2006 13:40
Località: Ancona
Slackware: 13.37
Desktop: KDE 4

Re: espressione regolare & riconoscimento stringa

Messaggioda _NYTRO_ » mer giu 17, 2009 10:56

Mi sto perdendo un pò.. :(

La soluzione più sbrigativa la vedo con:

sed 's/\(...............\).*/\1/' SAMPLE.txt > CUT.txt

E poi su CUT.txt utilizzi la RegExp(con gli OR) per fare il check della sintassi.
Su una riga di 15 caratteri non è molto dispendiosa..
Sicuramente si potrebbe ottimizzare ma attualmente non mi viene in mente come.. :P
_NYTRO_
Linux 2.4
Linux 2.4
 
Messaggi: 419
Iscritto il: ven mag 07, 2004 23:00

Re: espressione regolare & riconoscimento stringa

Messaggioda targzeta » mer giu 17, 2009 10:57

Haha, quindi siamo ritornati alla tua soluzione iniziale :). E' strano che non funga, anche io stavo provando qualcosa del genere.

Emanuele
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6168
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: espressione regolare & riconoscimento stringa

Messaggioda masalapianta » mer giu 17, 2009 10:57

tgmx ha scritto:
masalapianta ha scritto:se i caratteri utili son sempre i primi 15 (esclusi gli spazi) non e' chiaro perche' tu voglia usare una regexp, prendi i primi 15 caratteri e gli togli gli spazi finali:
echo "$stringa"|cut -b 1-15|awk '{print $1}'
il parsing con le regexp hanno un peso computazionale non indifferente, non ha senso usarle quando se ne puo' fare a meno.


Anche questa è una possibilità

non e' una possibilita', ma il modo di procedere corretto in questo caso, mentre l'usare una regexp e' il modo di procedere sbagliato in questo caso
ma con l'occasione volevo imparare qualcosa di più sulle espressioni regolare.

se lo scopo e' la didattica allora l'esercizio e' sbagliato
Tra l'altro non è escluso che in futuro debba controllare anche la forma di quello che segue quindi se riuscivo ad impostare correttamente
un'espressione regolare mi trovavo pronto ad aggiungere controlli.

in quel caso useresti una regexp laddove non avessi riferimenti posizionali fissi come in questo caso

P.S. i congiuntivi [-o< (no, l'indicativo imperfetto non e' la stessa cosa :D )
Avatar utente
masalapianta
Iper Master
Iper Master
 
Messaggi: 2775
Iscritto il: dom lug 24, 2005 23:00
Località: Roma
Nome Cognome: famoso porco
Kernel: uname -r
Desktop: awesome
Distribuzione: Debian

Re: espressione regolare & riconoscimento stringa

Messaggioda tgmx » mer giu 17, 2009 11:05

spina ha scritto:Haha, quindi siamo ritornati alla tua soluzione iniziale :). E' strano che non funga, anche io stavo provando qualcosa del genere.

Emanuele


A te funziona quell'espressione?
Avatar utente
tgmx
Linux 3.x
Linux 3.x
 
Messaggi: 1330
Iscritto il: ven apr 28, 2006 13:40
Località: Ancona
Slackware: 13.37
Desktop: KDE 4

PrecedenteProssimo

Torna a Programmazione

Chi c’è in linea

Visitano il forum: Google [Bot] e 1 ospite