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