salut tout le monde,
je veux transformer les mots qui ont deux lettres qui se répètent plus de 2 fois en utilisant les expression régulière. comment faire ça?. pour mieux expliquer voici un exemple:
blablablabla->bla
hahahahaha->ha
salut tout le monde,
je veux transformer les mots qui ont deux lettres qui se répètent plus de 2 fois en utilisant les expression régulière. comment faire ça?. pour mieux expliquer voici un exemple:
blablablabla->bla
hahahahaha->ha
Salut,
Pour les chaines ayant une sous-chaine de longueur indéfinie se répétant plus de 2 fois (en Python 2.X) :
qui donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 import re for chaine in (u'blablablabla',u'hahahahaha'): print re.sub( pattern=r'(.+)\1{2,}', repl=r'\1', string=chaine)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 bla ha
merci arnoud, mais une fois le nombre de caractères répétés dépasse six caractères, il ne donne pas les résultat attendus.
par exemple : blablablablablablablablablablablabla
et loooooovvvvve. merci d'avance.
Salut,
Une fonction récursive résout le problème :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 import re pattern = re.compile(r'(.+)\1{1,}') def supprime_doublons(ch1): ch2 = re.sub( pattern, repl=r'\1', string=ch1) if ch1 == ch2: return ch2 else: return supprime_doublons(ch2) if __name__ == '__main__': tests = (u'blablablabla',u'hahahahaha',u'blablablablablablablablablablablabla',u'loooooovvvvve') for chaine in tests: print supprime_doublons(chaine)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 bla ha bla love
Il y a plus simple, il suffit d’utiliser un opérateur non-glouton (donc qui consomme aussi peu de caractères que possible)*:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 import re for chaine in (u'blablablabla', u'hahahahaha', u'loooooovvvvve'): print re.sub(pattern=r'(.+?)\1{2,}', repl=r'\1', string=chaine)
merci pour vos réponses.
mais dans le cas la chaine 'goooooood', il me donne la résultat 'god', alors que je veux avoir le mot 'good'. merci d'avance.
Oui, si tu cherches à faire un correcteur orthographique, les regex ne sont pas l’outils idéal*! Regarde plutôt du côté de enchant, par exemple…![]()
Partager