[Spamfilter] Aide sur une regexp
#1
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 Smile
Répondre Avertir
#2
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]


Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
Tchat 100% gratuit -Discutez en toute liberté