2013-03-18 5 views
3

J'utilise l'expression régulière (\b\w+\b)\W+\1{3,} pour filtrer les URL avec des chaînes répétées trois fois ou plus. J'ai essayé (\b\w+\b)\W+\1{3,} ou (\b\w+\b)\W{3,}+\1 mais aucune aideExpression régulière pour filtrer les URL avec des chaînes répétées 3 fois ou plus

http://rubular.com/r/6IyCPyBiuW ->(\b\w+\b)\W+\1 -> cela fonctionne pour trouver des mots répétés plus d'une fois seulement, mais je suis intéressé de trouver les mots répétés plus de trois fois.

http://rubular.com/r/O9NcobUsTX ->(\b\w+\b)\W+\1{3,} -> cela ne fonctionne pas à trouver les mots répétés trois ou plus

+0

Il y avait un défaut avec la réponse précédemment. Mis à jour avec une alternative. –

+0

Merci pour la correction. Ce serait bien si vous donniez une brève explication sur la façon dont vous avez trouvé cette expression. Je suis un débutant en utilisant regex – sunskin

Répondre

5

Les travaux d'expression régulière suivante:

(\w+\W)\1{2,} 

La correspond au-dessus du caractère non-mot aussi bien, exactement, donc, tour à tour, vous pouvez utiliser la plutôt laide à la recherche

(\w+)(?:\W+\1){2,} 

Détails:

\w -> single word character 
\w+ -> one or more word characters 
\W -> non-word character 
\1 -> back-reference to capturing group #1 (in this case, (\w+) 
{2,} -> 2 or more of (?:\W+\1) 
(?:) -> grouping without actually capturing anything 

http://rubular.com/r/Trb41xxCAt

+0

Merci beaucoup !! Cela m'a aidé à résoudre mon problème. Cependant, je veux comprendre l'utilisation de '\ 1' sur '+ \ 1' – sunskin

+0

@ user1830069 '\ 1' est une référence arrière, qui fait référence à la chaîne capturée par le premier groupe de capture' (...) ' . Le '+' va avec le quantificateur avant, et dit un ou plusieurs de cela. Par exemple, '\ w +' signifie 1 ou plusieurs caractères de mot. Il ne doit pas être lu '+ \ 1'. –

+0

Super! Cela aide vraiment. Je vous remercie. – sunskin

Questions connexes