Maison >développement back-end >Tutoriel Python >Comment puis-je obtenir une correspondance compacte et non gourmande dans les expressions régulières Python ?

Comment puis-je obtenir une correspondance compacte et non gourmande dans les expressions régulières Python ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-09 03:05:02487parcourir

How Can I Achieve Compact Non-Greedy Matching in Python Regexes?

Correspondance compacte non gourmande dans les expressions régulières Python

Considérez la nécessité d'une correspondance d'expression régulière qui capture la plus petite partie possible d'une chaîne. Comment l'approche gourmande par défaut de Python, qui capture la sous-chaîne maximale, peut-elle être rectifiée ?

La solution réside dans l'opérateur de correspondance non gourmand, ?, qui demande à Python de capturer la quantité minimale de texte possible. Pour illustrer sa polyvalence, considérons l'expression régulière "(.)" appliquée à la chaîne "a (b) c (d) e". Normalement, il capturerait "b) c (d", englobant l'intégralité de l'expression imbriquée.

Cependant, en employant le qualificatif non gourmand ?, l'expression régulière modifiée "(.?) " capture à la place le "b" souhaité. En effet, ?* demande à Python de faire correspondre le moins de texte possible, en donnant la priorité à la correspondance immédiate de "b" plutôt que s'étendant à un groupe plus large.

La documentation officielle de Python sur les gourmands et les non-gourmands indique que les qualificatifs non gourmands "correspondent au moins de texte possible". Ainsi, face au dilemme de capturer une sous-chaîne optimale. Par brièveté, l'opérateur non gourmand ?* apparaît comme la solution ultime, permettant des expressions regex concises et efficaces.

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