18 votes

Python Regex, re.sub, remplacement de plusieurs parties d'un motif ?

Je n'arrive pas à trouver une bonne ressource sur ce sujet J'essaie de faire un simple repositionnement.

Je veux remplacer la partie où il y a (.* ?), mais je n'arrive pas à trouver la syntaxe pour le faire Je sais comment le faire en PHP, donc j'ai fait des essais avec ce que je pense que cela pourrait être basé sur cela (c'est pourquoi il y a le $1 mais je sais que ce n'est pas correct en python) J'apprécierais si quelqu'un pouvait me montrer la bonne syntaxe, je ne demande pas de spécificité pour une certaine chaîne de caractères, juste comment je peux remplacer quelque chose comme ça, ou si elle avait plus d'une zone () Merci.

originalstring = 'fksf var:asfkj;'
pattern = '.*?var:(.*?);'
replacement_string='$1' + 'test'
replaced = re.sub(re.compile(pattern, re.MULTILINE), replacement_string, originalstring)

19voto

Umang Points 2227
>>> import re
>>> originalstring = 'fksf var:asfkj;'
>>> pattern = '.*?var:(.*?);'
>>> pattern_obj = re.compile(pattern, re.MULTILINE)
>>> replacement_string="\\1" + 'test'
>>> pattern_obj.sub(replacement_string, originalstring)
'asfkjtest'

Edit : Le Docs Python peut être une référence très utile.

7voto

Daniel Kluev Points 4321
>>> import re
>>> regex = re.compile(r".*?var:(.*?);")
>>> regex.sub(r"\1test", "fksf var:asfkj;")
'asfkjtest'

-2voto

La documentation python est en ligne, et celle du module re est ici. http://docs.python.org/library/re.html

Pour répondre à votre question cependant, Python utilise \1 plutôt que 1 pour faire référence à des groupes appariés.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X