Communauté francophone sur les Eggdrops
[Spamfilter] Aide sur une regexp - Version imprimable

+- Communauté francophone sur les Eggdrops (https://forum.eggdrop.fr)
+-- Forum : Aide IRC (https://forum.eggdrop.fr/forumdisplay.php?fid=21)
+--- Forum : Services IRC (https://forum.eggdrop.fr/forumdisplay.php?fid=23)
+--- Sujet : [Spamfilter] Aide sur une regexp (/showthread.php?tid=1744)



[Spamfilter] Aide sur une regexp - ksao - 06/01/2020

Déplacé: la regex est pour être utilisée avec spamfilter

hi,

Je travaille sur une regexp dans lequel je veux match 10 mots de 3 lettres minimum dans une phrase.

Quand je fais des tests :


Citation :.tcl regexp {.+?\s(\w{3}\s[^$]*\s){10,}} "vmy atjjt kmo bcqdd alwt dbe atp qbb ijm hndpov rga sbn rqmgw hox nkk rxkxu bvo whmcob qgv qou"


ça me retourne 0

alors que quand je change le 10 en 6 ça me retourne 1

Ma regexp doit être mauvaise, je me retourne vers vous :)


RE: Aide sur une regexp - CrazyCat - 06/01/2020

Pour moi, la regexp ressemblerait plutôt à \s*\S{3,}(?:\s+\S{3,}){10,}, par contre elle a un souci. Elle ne fonctionne pas si un mot de moins de 3 lettres se trouve au milieu de la phrase (il faut au moins 10 mots successifs d'au moins 3 lettres pour qu'elle matche).

Le plus simple serait peut-être de sortir tous les mots d'au moins 3 lettres et de compter combien il y en a:
tcl
set a "vmy atjjt kmo bcqdd rr alwt dbe atp qbb ijm hndpov rga sbn rqmgw hox nkk rxkxu bvo whmcob qgv qou" 
set b [regexp -inline -all -- {\s*\w{3,}} $a]
putlog [llength $b]