Si vous correspondant à deux parties avec le même subpattern (comme \w+
), vous êtes pas de chance. Mais si les sous-motifs sont distinctement différents, vous avez quelques options, aucune d'elles très jolie. Voici une expression rationnelle qui utilise une construction conditionnelle pour correspondre aux src
et type
attributs d'un élément de script HTML soit dans l'ordre:
\b(?(?=src=)
src="([^"]*)"\s+type="([^"]*)"|
type="([^"]*)"\s+src="([^"]*)"
)
(AVERTISSEMENT: Ce regex fait beaucoup d'hypothèses irréalistes, chef parmi eux que les deux attributs seront présents et qu'ils seront adjacents les uns aux autres. Je suis seulement en utilisant pour illustrer la technique.)
Si l'attribut src
apparaît d'abord, les valeurs src
et type
seront capturés dans les premier et deuxième groupes, respectivement. Sinon, ils apparaîtront dans les quatrième et troisième groupes respectivement. Les groupes nommés rendraient plus facile le suivi des choses, surtout si vous pouviez utiliser le même nom dans plus d'endroits que vous le pouvez dans les expressions rationnelles .NET. Malheureusement, PCRE exige que chaque groupe nommé ait un nom unique, ce qui est trop mauvais; c'est une très belle fonctionnalité.
Pouvez-vous donner quelques exemples? – DrAl