22 votes

Correspondre à la première instance de la recherche d'une expression rationnelle Python

Je recherche la première occurrence d'une correspondance entre deux crochets à l'aide d'expressions régulières. Actuellement, je fais

regex = re.compile("(?<=(\[\[)).*(?=\]\])")
r = regex.search(line)

qui fonctionne pour des lignes comme

[[string]] 

retours string

mais lorsque je l'essaie sur une ligne séparée :

[[string]] ([[string2]], [[string3]])

Le résultat est le suivant

string]] ([[string2]], [[string3

Qu'est-ce qui m'échappe ?

49voto

Drew Points 1070

*Python `,+,?y{n,m}` les quantificateurs sont gourmands par défaut**

Les motifs quantifiés à l'aide des quantificateurs ci-dessus correspondront à tout ce qu'ils peuvent par défaut. Dans votre cas, il s'agit de la première série de crochets et de la dernière. En Python, vous pouvez rendre n'importe quel quantificateur non gourmand (ou "paresseux") en ajoutant un élément ? après lui. Dans votre cas, cela se traduirait par .*? dans la partie médiane de votre expression.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X