Expressions régulières non gourmandes Python
Lorsqu'il s'agit d'expressions régulières, l'opérateur standard * est gourmand, ce qui signifie qu'il tente de correspondre autant de l'entrée que possible. Cependant, il existe des scénarios dans lesquels une approche non gourmande est requise. Cet article explore l'utilisation d'expressions régulières non gourmandes en Python, en se concentrant spécifiquement sur un cas où l'objectif est de faire correspondre une sous-chaîne spécifique sans inclure de caractères indésirables.
Problème
Considérez la chaîne d'entrée suivante : "a (b) c (d) e"
Si vous utilisez l'expression régulière gourmande standard "(.)", Python correspondra à "b) c (d ". En effet, quantifie l'expression précédente comme zéro ou plusieurs fois, et le comportement gourmand l'amène à correspondre autant que possible.
Solution
Pour rendre l'expression régulière non gourmande, utilisez le qualificatif ?. Cela indique à Python de faire correspondre l'expression le moins de fois possible, ce qui donne "(.?)" correspondant uniquement à "b".
Implémentation Python
import re input_string = "a (b) c (d) e" non_greedy_regex = r"(.*?)" match = re.search(non_greedy_regex, input_string) if match: print(match.group(1))
Sortie :
b
Conclusion
Le qualificatif *? fournit un moyen pratique et concis de contrôler le comportement des expressions régulières en Python. En spécifiant que la correspondance doit être aussi courte que possible, cela vous permet de spécifier avec précision la sous-chaîne souhaitée sans inclure par inadvertance des caractères indésirables.
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!