Newsgroup: it.comp.software.newsreader
Titolo: RegEx e i filtri anti-offtopic

Ricordo che tempo fa ci furono alcuni thread sull'«arma finale» contro
gli OT, una regex abbastanza complessa che permettesse di filtrare con
sicurezza tutte le possibili variazioni del tag [OT].
Ora mi è venuto da pensare: perché mai tanto lavoro se (probabilmente)
basterebbe un \bOT\b? Ho fatto un po' di prove, con il regex tester di
Dialog, e le uniche varianti che non becca sono quelle «tuttounito» (e
per queste potrebbe bastare un controllo sul case delle lettere OT)...
Crosspost a: it.comp.software.newsreader, hamster.it.misc
Followup-to: it.comp.software.newsreader
-- 
Fare Well! | 05/12/2003 16:58:52 ~ ICQ:16553733 
Jabber:gan...@nabla.net
G          | 40tude Dialog 2.0.8.1 (in italiano) 
http://snurl.com/dialog
"I'll hum for you," said Gargravarr, "follow the humming."

 per queste potrebbe bastare un controllo sul case delle lettere OT)...
Non ho capito cosa sia il «tuttounito».
-- 
05/12/2003 18:14:11, daRkSidE

 basterebbe un \bOT\b? 
... che, tradotto, significa?
-- 
Luca - e-mail: p.stevens at 
libero.it

 ... che, tradotto, significa?
\b č il boundary di una parola. 
Tra  le  tante  cose interessanti che si possono trovare nella guida al
PCRE [1], segnalerei questa: 
| - \b indica qualsiasi cosa che non sia un carattere alfanumerico,
| ivi compresi l'inizio e la fine della stringa;
1. L'ultima versione si trova sul sito di Alan Ford e di Enrico.
-- 
06/12/2003 14:30:34, daRkSidE

 ... che, tradotto, significa?
In che lingua? È PCRE, e \b sta per «word boundary».
In pratica, controlla che OT sia completamente isolato.
-- 
Fare Well! | 06/12/2003 14:25:38 ~ ICQ:16553733 
Jabber:gan...@nabla.net
G          | 40tude Dialog 2.0.8.1 (in italiano) 
http://snurl.com/dialog
«'Yes, I am White now,' said Gandalf.»

 Non ho capito cosa sia il «tuttounito».
[forseunpochinoOTmanonsonosicuro] :)
-- 
Fare Well! | 06/12/2003 14:14:49 ~ ICQ:16553733 
Jabber:gan...@nabla.net
G          | 40tude Dialog 2.0.8.1 (in italiano) 
http://snurl.com/dialog
"That would destroy the Universe in toto. Good idea, if you ask me."

 È PCRE, e \b sta per «word boundary».
Quindi a domanda rispondo: "tanto lavoro" è stato fatto perché Agent non
ce l'ha (implementa PCRE un po' "sue"), e quindi bisogna ottenere la
funzione costruendo l'espressione equivalente. Comunque non mi ricordo
quanta roba ci avevamo messo dentro :-)


 Comunque non mi ricordo quanta roba ci avevamo messo dentro :-)
Non la usi piů?
-- 
Fare Well! | 06/12/2003 22:32:39 ~ ICQ:16553733 
Jabber:gan...@nabla.net
G          | 40tude Dialog 2.0.8.1 (in italiano) 
http://snurl.com/dialog
«One Ring to bring them all and in the Darkness bind them.»

 Non la usi più?
subject:({([^a-z]+iac)|iacin|(\[war\])|(\[estivo\])|radun}|({([^a-z]+ot[^a-z]+)|(^[^a-z]*ot[^a-z]+)|([^a-z]+ot[^a-z]*$)}|%{[a-z]+OT}))
Pensi che possa ricordarmi che diavolo vuol dire questo? :-)


 Pensi che possa ricordarmi che diavolo vuol dire questo? :-)
Be' non è complicato :)
A parte i tag IACine-specific, [^a-z] fa più o meno quello che farebbe
\W (per farlo esattamente dovrebbe essere [^a-z0-9_]), un + indica una
o più occorrenze mentre un * zero o più. In realtà, in quella regex, i
+ sono tutti superflui (gli * no). Il % non so che sia (non è PCRE?).
-- 
Fare Well! | 07/12/2003 13:47:20 ~ ICQ:16553733 
Jabber:gan...@nabla.net
G          | 40tude Dialog 2.0.8.1 (in italiano) 
http://snurl.com/dialog
"Thank you," it said, "for making a simple door very happy."

 Il % non so che sia (non è PCRE?).
case sensitive matching (roba Forté)
-- 
Avalanche, veux-tu m'emporter dans ta chute?

 in quella regex, i + sono tutti superflui 
Mi sa che hai ragione ma non sono sicuro.
Perché la regexp s'č spezzata, nel tuo messaggio?


 Perché la regexp s'è spezzata, nel tuo messaggio?
Devo aver dato un «riformatta paragrafo» senza farci troppo caso :)
-- 
Fare Well! | 10/12/2003 01:01:54 ~ ICQ:16553733 
Jabber:gan...@nabla.net
G          | 40tude Dialog 2.0.8.1 (in italiano) 
http://snurl.com/dialog
«Olórin I was in my youth in the West that is forgotten...»

 Perché la regexp s'è spezzata, nel tuo messaggio?
Probabilmente ha riformattato il paragrafo; da me, si vede bene nel
quotato della risposta al momento dalla composizione.
(prova su it.test)
-- 
09/12/2003 23:32:31, daRkSidE

 Devo aver dato un «riformatta paragrafo» senza farci troppo caso :)
Sinceramente non capisco perchè «Riformatta paragrafo» (in inglese
«Reformat Paragraph») riformatti _tutti_ i paragrafi, invece che, come
si supporrebbe, il paragrafo in cui si trova il cursore.
Meglio ancora avere le due funzioni, di cui una riformatta tutto e
l'altra che formatta solamente il paragrafo in cui si trova il
cursore, senza così fare danni nel quotato altrui.
Mantis?
-- 
10/12/2003 13:32:46, daRkSidE

 cursore, senza così fare danni nel quotato altrui.
Non ti saprei dire con certezza (perché ora non ho Dialog fra le dita), 
ma credo che selezionando prima parte del testo, poi lui lo faccia solo 
su quello (o almeno io ho sempre fatto così).
Ciao.
-- 
 /   _ _ | Xnews e la documentazione in italiano
( (/( (/ | 
http://web.lacasadialice.it/alanford/

 si supporrebbe, il paragrafo in cui si trova il cursore.
Devi selezionare la porzione di testo che vuoi riformattare.
Diciamo che forse sarebbe più indicata la dicitura "riformatta TESTO"...
-- 
Bye,3v.		icq:115484489
** Se proprio vuoi scrivermi, usa l'indirizzo del Reply-To **

 Diciamo che forse sarebbe più indicata la dicitura "riformatta TESTO"...
Non ci avevo pensato (e probabilmente era già stato detto), però
rimango dell'idea che sarebbe meglio separare le due funzioni,
permettendo di poterle selezionare con diversi shortcut; sarà che sono
abituato all'editor di testo di The Bat!, ma mi pare molto più
efficace.
-- 
10/12/2003 23:47:55, daRkSidE

 efficace.
Scusa, ma perché chiedere una modifica se la stessa funzione si comporta in
modo diverso a seconda che tu abbia selezionato o meno del testo?
O mi sono perso qualcosa per strada?


 il * oppure se ci fosse stato un + al posto del *.
Vero. Non ero certo che in [^a-z] non rientrasse anche l'inizio campo, e
avevo preferito andare sul sicuro.
Inoltre mi viene in mente che non abbiamo mai pensato a mischiare nello
stesso filtro "regular expression" e "word based expressions".
Quest'ultima è la sintassi "semplice" di Agent, in cui molte possibilità
delle regexp mancano, ma in compenso la ricerca è basata sulla parola
isolata (isola trova la parola isola, mentre isola* trova anche
isolata). Forse si poteva semplificare. O forse no. per ora non ho
voglia di cimentarmi :-)


 avevo preferito andare sul sicuro.
Se ^ segue immediatamente una [ indica la negazione del contenuto delle
[], non l'inizio della stringa :)
-- 
Fare Well! | 
http://snurl.com/dialog
G          | ~ 11/12/2003 17:15:18 ~
"What about this wheel thingy? It sounds a terribly interesting project"

 Diciamo che forse sarebbe più indicata la dicitura "riformatta TESTO"...
In realtà non serve selezionare l'intero paragrafo: se selezioni
l'ultima lettera di una riga e la prima della successiva, lui si
comporta sempre allo stesso modo, cioè riformatta il _paragrafo_
e non soltanto la parte selezionata :)
-- 
Fare Well! | 
http://snurl.com/dialog
G          | ~ 11/12/2003 16:35:35 ~
«'_Naur an edraith ammen! Naur dan i ngaurhoth!_' he cried.»

 su quello (o almeno io ho sempre fatto cosě).
Confermo, č cosě che lo uso io (da quando Marcus me lo fece notare :P).
-- 
Fare Well! | 
http://snurl.com/dialog
G          | ~ 11/12/2003 16:34:57 ~


 e non soltanto la parte selezionata :)
Mi pare ovvio, altrimenti riformattando la porzione di testo selezionata ti
scazzerebbe quella che segue.
Ma se selezioni una porzione di testo a cavallo tra due paragrafi?


 Ma se selezioni una porzione di testo a cavallo tra due paragrafi?
Ho appena provato su questo quoting, non ha fatto niente, in effetti...
-- 
Fare Well! | 
http://snurl.com/dialog
G          | ~ 11/12/2003 19:44:01 ~
"And I know an improbable event when I see one."

 O mi sono perso qualcosa per strada?
In effetti poca roba.
-- 
11/12/2003 13:57:41, daRkSidE

 Perchè così non ho bisogno di selezionare il testo.
Scusa, forse ora ho capito :)
(sono lento, lo so, ma alla fine ci arrivo anch'io... ;P )


 Confermo, č cosě che lo uso io (da quando Marcus me lo fece notare :P).
Lo usi quando ti ricordi, visto che č stato per quello che č nato il
thread... :-)
Questo significa anche che Marcus č poco propenso ad aggiungere la
funzione in questione? 
-- 
11/12/2003 23:27:04, daRkSidE

 funzione in questione?
Non so, direi che al momento funziona già bene, ma puoi proporre il
miglioramento su Mantis, prima o poi vedremo che ne pensa ;)
-- 
Fare Well! | 
http://snurl.com/dialog
G          | ~ 12/12/2003 00:07:44 ~


 [], non l'inizio della stringa :)
Quello lo so, diamine. Non hai capito il mio ragionamento,  ma non fa
niente: era troppo contorto (e aggravato dal retropensiero,
probabilmente falso pure quello: "se qui non serve il +, allora non
serve mai").
