Regex pour supprimer les caractères et combinaisons dupliqués


Eugène

J'ai une chaîne qui se compose de mots qui ont des caractères dupliqués à la fin. Ces caractères peuvent être dans de telles combinaisons:

  • wordxxxx
  • wordxyxyxy
  • motxyzxyzxyz

Par exemple:

string = "Thisssssssss isisisis echooooooo stringggg. Replaceaceaceace a répété les groupes de symbolessss"

J'ai trouvé un moyen de remplacer certaines des combinaisons répétées, de cette façon:

re.sub(r'([a-z]{1,3})\1+', r'\1', string)

J'obtiens ces résultats:

C'est un écho-stringg. Remplacer des groupes répétés de symboles

Comment dois-je changer l'expression régulière pour supprimer TOUS les caractères répétés et leurs combinaisons?

Espace profond

Votre regex est presque correcte.

  • Vous devez ajouter ?au groupe de capture, afin qu'il corresponde aussi peu que possible ("correspondance paresseuse" plutôt que le comportement par défaut "gourmand" qui correspond autant que possible).

  • J'ai également utilisé à la +place de {1,3}car limiter la répétition à 3semblait arbitraire.

  • Vous pouvez observer la différence entre les deux comportements: gourmand vs paresseux . Notez que:

    1. Le comportement avide voit aaaacomme aa * 2plutôt quea * 4

    2. Le comportement gourmand ne fonctionne que pour les répétitions de même longueur. aaaaaest vu comme

      aa * 2 + aainsi le résultat de remplacement serait aaaau lieu de a.


for word in "Thisssssssss isisisis echooooooo stringggg. Replaceaceaceace repeatedededed groupssss of symbolssss".split():
    print(re.sub(r'([a-z]+?)\1+', r'\1', word))

les sorties

This
is
echo
string.
Replace
repeated
groups
of
symbols

Articles connexes


Supprimer les caractères dupliqués à l'aide de regex

HaiHey Comment supprimeriez-vous les caractères dupliqués dans l'expression régulière alors que certains caractères sont censés être répétés? Par exemple, j'ai "BBAALLLLOOOONN" et je veux que la sortie soit juste BALLOON. J'ai essayé ce regex: /(.)(?=\1)/g mai

REGEX, supprimer les espaces et tous les autres caractères

Jopy Downstair essayer de convertir cet exemple Some Nice Article on amazon https://www.amazon.de/gp/product/ADKLHJADK/ref=as_li_ss_tl?ie=UTF8&pd_rd_i=B01J7LLL9Q&pd_rd_r=a8c7bb4b-49da-11e8-ad28-014ae5dc2f42&pd_rd_w=9QOk2&pd_rd_wg=zc1s7&pf_rd_m=A3JWKAKR8XB7XF&p

Regex pour supprimer les caractères entre crochets

CuriousDev J'utilise l'expression régulière suivante pour supprimer des éléments dans une phrase qui tombe entre crochets \(.*?\) So in this sentence anything between (DFKJERLjDLJLF) gets removed. Mais s'il y a plus d'un crochet dans une phrase, je souhaite