284 votes

Comment utiliser une variable dans une expression régulière ?

J'aimerais utiliser un variable dans un regex , comment puis-je le faire dans Python ?

 TEXTO = sys.argv[1]

if re.search(r"\b(?=\w)TEXTO\b(?!\w)", subject, re.IGNORECASE):
    # Successful match
else:
    # Match attempt failed

294voto

Ned Batchelder Points 128913

Vous devez construire l'expression régulière sous forme de chaîne :

 TEXTO = sys.argv[1]
my_regex = r"\b(?=\w)" + re.escape(TEXTO) + r"\b(?!\w)"

if re.search(my_regex, subject, re.IGNORECASE):
    etc.

Notez l'utilisation de re.escape afin que si votre texte comporte des caractères spéciaux, ils ne seront pas interprétés comme tels.

53voto

Bo Buchanan Points 91
if re.search(r"\b(?<=\w)%s\b(?!\w)" % TEXTO, subject, re.IGNORECASE):

Cela insérera ce qui est dans TEXTO dans l'expression régulière sous forme de chaîne.

41voto

Cat Plus Plus Points 53385
rx = r'\b(?<=\w){0}\b(?!\w)'.format(TEXTO)

7voto

Deepak Nagarajan Points 111

Je trouve très pratique de créer un modèle d'expression régulière en enchaînant plusieurs modèles plus petits.

 import re

string = "begin:id1:tag:middl:id2:tag:id3:end"
re_str1 = r'(?<=(\S{5})):'
re_str2 = r'(id\d+):(?=tag:)'
re_pattern = re.compile(re_str1 + re_str2)
match = re_pattern.findall(string)
print(match)

Production:

 [('begin', 'id1'), ('middl', 'id2')]

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