From all.adr a e-allora.net Wed Jul 6 01:37:19 2005 From: all.adr a e-allora.net (Adriano Allora) Date: Wed, 6 Jul 2005 10:37:19 +0200 Subject: [Torino-pm] domanda su contatore Message-ID: <2A5E496B-EDF9-11D9-92AC-0011242F92F2@e-allora.net> ciao a tutti, questo mi fa proprio impazzire: devo contare tutte le volte che compare un punto fermo|interrogativo|esclamativo in un testo, e pensavo che bastasse una cosa del tipo: while(<>) { $cnt++ if /[\.\?!][^\.]/g; } print $cnt; invece questa cosa mi conta solo la prima occorrenza in ogni linea. è normale? devo davvero splittare la riga e fare il match su ogni parola? (ma, in tal caso, non c'è il rischio di conteggi di troppo?) ringrazio per ogni aiuto, alladr |^|_|^|_|^| |^|_|^|_|^| | | | | | | | | | |*\_/*\_/*\_/*\_/*\_/* | | | | | | | | | http://www.e-allora.net | | | | | ************************************** From dolphin a slacky.it Thu Jul 7 01:30:18 2005 From: dolphin a slacky.it (Andrea Benazzo) Date: Thu, 07 Jul 2005 10:30:18 +0200 Subject: [Torino-pm] domanda su contatore (Adriano Allora) Message-ID: <20050707083018.29869.qmail@webmaild.fe1.aruba.it> Ciao! nelle regexpr, non c'è bisogno dei backslash all'interno delle [] per fare l'escape dei quantificatori. quindi io direi che il tuo codice diventa: while(<>) { $cnt++ if /[.?!][^.]/g; } print $cnt; così a occhio direi che è a posto. fammi sapere, Andrea From dolphin a slacky.it Thu Jul 7 01:58:28 2005 From: dolphin a slacky.it (Andrea Benazzo) Date: Thu, 07 Jul 2005 10:58:28 +0200 Subject: [Torino-pm] domanda su contatore (Adriano Allora) Message-ID: <20050707085828.29102.qmail@webmaild.fe1.aruba.it> ciao! ho scoperto l'inghippo: la regexp è giusta...solo che si mangia ogni [.?!] che trova. in questo modo il contatore viene incrementato una sola volta per riga: NON una volta per ogni carattere [.?!] trovato. che io sappia, non ci sono altri metodi per contare mediante regexp. l'unica cosa che ti rimane da fare è incrementare il contatore basandoti su varie regexp: una per carattere che vorresti contare. ricordati di usare i quantificatori limitando il numero di caratteri da mangiare, tipo: /[.!?]{1,1}/ oppure /[.!?]+?/ così sei sicuro che funzioni anche nel caso di doppie, come in: "ci vediamo dopo.." oppure "che hai detto?? mi puoi ripetere?" se trovi un altro metodo fammi sapere! ciao-ciao Andrea From all.adr a e-allora.net Sun Jul 10 09:19:48 2005 From: all.adr a e-allora.net (Adriano Allora) Date: Sun, 10 Jul 2005 18:19:48 +0200 Subject: [Torino-pm] domanda su contatore (Adriano Allora) In-Reply-To: <20050707085828.29102.qmail@webmaild.fe1.aruba.it> References: <20050707085828.29102.qmail@webmaild.fe1.aruba.it> Message-ID: <6F5AF5B8-F15E-11D9-BE94-0011242F92F2@e-allora.net> Ciao Andrea! ho trovato un metodo, e devo dire che -- anche se il metodo era sotto i miei occhi e non è tanto figo quanto sarebbe stato un $var-- if //g; -- ne sono abbastanza contento. Eccolo qui: @frasi = split(/[\.\?!]/,$_); $nfrasi = @frasi; $nfrasi--; $parametri{frasi} += $nfrasi; be, a parte le "barre retroflesse" (ho scoperto che si chiamano anche così da poco... :) ). può essere migliorato, ma la logica funziona. grazie, alladr Il giorno 07/lug/05, alle 10:58, Andrea Benazzo ha scritto: > ciao! > > ho scoperto l'inghippo: > > la regexp è giusta...solo che si mangia ogni [.?!] che trova. > in questo modo il contatore viene incrementato una sola volta per > riga: NON > una volta per ogni carattere [.?!] trovato. > > che io sappia, non ci sono altri metodi per contare mediante regexp. > l'unica cosa che ti rimane da fare è incrementare il contatore > basandoti su > varie regexp: una per carattere che vorresti contare. > > ricordati di usare i quantificatori limitando il numero di caratteri da > mangiare, tipo: > > /[.!?]{1,1}/ > oppure > /[.!?]+?/ > > così sei sicuro che funzioni anche nel caso di doppie, come in: > "ci vediamo dopo.." > > oppure > > "che hai detto?? mi puoi ripetere?" > > > se trovi un altro metodo fammi sapere! > > ciao-ciao > > Andrea > _______________________________________________ > Torino-pm mailing list > Torino-pm a pm.org > http://mail.pm.org/mailman/listinfo/torino-pm > > |^|_|^|_|^| |^|_|^|_|^| | | | | | | | | | |*\_/*\_/*\_/*\_/*\_/* | | | | | | | | | http://www.e-allora.net | | | | | **************************************