Juste pour information, tu peux en effet le faire en un seul regex et ce avec l'usage du \G qui, excusez la traduction, permet de commencer à partir de la positions de la fin du dernier 'match' ou du début de la chaine pour le premier 'match'...
Donc, une solution possible utilisant un Lookahead positif est:
(?:'(\w+)|\G(?<!^))(?:;(\w+)=(\w+))?(?=.*?:(\w+)')
DEMO
Ou encore, sans Lookahead (à noter que "content" est optionnelle dans ce cas-ci):
(?:'(\w+)|\G(?<!^))(?:;(\w+)=(\w+))?(?::([^']*)'.*$)?
DEMO
Plus d'informations sur le \G peuvent être trouvées ICI
Partager