Expression régulière - correspondance gourmande

Dans les expressions régulières, la correspondance gourmande fait référence à la correspondance avec autant de caractères que possible, tandis que la correspondance non gourmande (également appelée correspondance paresseuse ou correspondance minimale) correspond au moins de caractères possible.

Les expressions régulières sont gourmandes par défaut et correspondront à autant de caractères que possible répondant aux conditions. Par exemple, considérons l'exemple suivant :

import re

text = "Hello, my name is John. Nice to meet you, John."
pattern = r'my.*John'  # 贪婪匹配

match = re.search(pattern, text)
print(match.group())

sortir:

my name is John. Nice to meet you, John

Dans cet exemple, l'expression régulière my.*Johncorrespond à n'importe quel caractère après « mon » (y compris les espaces, les signes de ponctuation, etc.) jusqu'au dernier « John ».

Si nous voulons faire correspondre la plus petite chaîne après "my", c'est-à-dire arrêter la correspondance lorsque nous rencontrons le premier "John", nous pouvons utiliser des symboles de correspondance non gourmands et remplacer par , ?comme .*suit.*? :

import re

text = "Hello, my name is John. Nice to meet you, John."
pattern = r'my.*?John'  # 非贪婪匹配

match = re.search(pattern, text)
print(match.group())

sortir:

my name is John

Cette fois, l'expression régulière my.*?Johnutilise une correspondance non gourmande, qui correspond uniquement à la plus petite chaîne « je m'appelle John » avant le premier « John » qui remplit la condition. En utilisant une correspondance non gourmande, nous pouvons contrôler l'expression régulière pour qu'elle corresponde au moins de caractères possible, ce qui donne des résultats plus précis.

Guess you like

Origin blog.csdn.net/m0_66238629/article/details/131603444