Maison > développement back-end > Tutoriel Python > Comment puis-je utiliser en toute sécurité les chaînes fournies par l'utilisateur comme modèles Regex en Python ?

Comment puis-je utiliser en toute sécurité les chaînes fournies par l'utilisateur comme modèles Regex en Python ?

Mary-Kate Olsen
Libérer: 2024-12-31 00:57:11
original
806 Les gens l'ont consulté

How Can I Safely Use User-Supplied Strings as Regex Patterns in Python?

Échapper aux caractères regex dans les modèles fournis par l'utilisateur

Lors de l'utilisation des entrées utilisateur comme modèles d'expression régulière, il est crucial de résoudre le problème des caractères qui possèdent des significations particulières dans la syntaxe regex. Par exemple, l'intention de l'utilisateur de rechercher « Mot(s) » sera interprétée à tort comme un groupe par le moteur d'expression régulière en raison des parenthèses. Pour éviter cela, nous devons traiter les parenthèses comme des chaînes littérales, et non comme des symboles regex.

Approche conventionnelle : remplacement manuel

Une méthode pour échapper ces caractères consiste à manuellement remplacez chaque instance par sa version échappée. Par exemple, nous pourrions remplacer "(s)" par "(s)". Cependant, cela nécessite de considérer tous les symboles regex possibles, ce qui peut être laborieux.

Une meilleure solution : la fonction re.escape

Une solution plus efficace consiste à utiliser la fonction re.escape de Python Fonction .escape(), qui échappe automatiquement les caractères non alphanumériques dans une chaîne. Cela nous permet de traiter les caractères regex spéciaux comme des chaînes littérales.

Par exemple, pour rechercher n'importe quelle instance de « Mot(s) » dans un texte, nous pouvons utiliser :

def simplistic_plural(word, text):
    word_or_plural = re.escape(word) + 's?'
    return re.match(word_or_plural, text)
Copier après la connexion

Cette fonction renvoie un objet match si le motif est trouvé dans le texte.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal