J'essaie de capturer tous les blocs {% tag %}...{% endtag %}
individuellement dans une chaîne, mais mon expression régulière retourne toujours la chaîne entière de la première étiquette d'ouverture à la dernière étiquette de fin. Comment puis-je faire en sorte qu'il capture tous les blocs séparément au lieu d'un seul match?Regex: capturer plusieurs blocs similaires
Voici un exemple d'une chaîne:
{% tag %}Lorem ipsum dolor sit amet{% endtag %}
{% tag %}
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
{% endtag %}
Et mon regex (en rubis): /(\{% trans %\}.*\{% endtrans %\})/m
Je sais que le .*
est le problème, mais je n'ai pas trouvé un moyen de correspondre à tout sauf une étiquette de fermeture.
Je ne savais pas que vous pouvez combiner '' * avec '?'. Fonctionne parfaitement merci! – romainberger
@romainberger, pas de problème. Heureux d'avoir pu aider. – sshashank124