Maison >développement back-end >Tutoriel Python >Comment puis-je faire correspondre une sous-chaîne spécifique sans inclure de caractères indésirables en utilisant une expression régulière non gourmande en Python ?

Comment puis-je faire correspondre une sous-chaîne spécifique sans inclure de caractères indésirables en utilisant une expression régulière non gourmande en Python ?

DDD
DDDoriginal
2024-11-09 19:10:02992parcourir

How do I match a specific substring without including unwanted characters using non-greedy regex in Python?

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!

Déclaration:
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