Je veux utiliser la saisie d'un utilisateur comme modèle d'expression régulière pour une recherche sur du texte. Cela fonctionne, mais comment puis-je gérer les cas où l'utilisateur met des caractères qui ont un sens dans l'expression régulière? Par exemple, l'utilisateur souhaite rechercher Word (s)
: le moteur d'expression régulière prendra le en (s)
tant que groupe. Je veux qu'il le traite comme une chaîne "(s)"
. Je peux exécuter replace
sur l'entrée utilisateur et remplacer le (
avec \(
et le )
avec \)
mais le problème est que je devrai remplacer pour chaque symbole regex possible. Connaissez-vous un meilleur moyen?
repl
argument dere.sub
est une chaîne, pas une expression régulière; l'appliquerre.escape
n'a aucun sens en premier lieu.repl
argument n'est pas une simple chaîne, il est analysé. Par exemple,re.sub(r'(.)', r'\1', 'X')
reviendraX
, non\1
.repl
argument: stackoverflow.com/q/49943270/247696Veuillez essayer:
\ Q et \ E comme ancres
Mettez une condition Ou pour correspondre à un mot entier ou à une expression régulière.
Lien de référence: comment faire correspondre un mot entier qui comprend des caractères spéciaux dans l'expression régulière
la source