Ordre des opérateurs dans les expressions régulières : (..|.. ... ..|..)
Dans les expressions régulières, le l'ordre de priorité des expressions dans (..|.. ... ..|..) est de gauche à droite. La première alternative qui correspond à « gagne » et les alternatives suivantes ne sont pas évaluées. Ce comportement est caractéristique des automates finis non déterministes (NFA), qui sont couramment utilisés dans les moteurs d'expression régulière.
Évaluation de gauche à droite
Par exemple, l'expression ( aaa|bb|a) correspondra à "bb" dans la chaîne "bbac" car "bb" apparaît avant "a" dans le modèle regex. Si vous utilisiez Regex.Matches à la place, "bb" et "a" correspondraient.
Ordre des alternatives
Au sein d'un groupe alternatif non ancré, le l’ordre des alternatives compte. Par exemple, l'expression (a|aa|aaa) correspondra à chaque « a » de la chaîne « abbccaa ».
Cependant, lorsque vous utilisez des limites de mots pour ancrer l'expression, l'ordre des alternatives n'a plus d'importance. Par exemple, (.)a(.|$) correspondra à "a" dans "abbccaa" quel que soit l'ordre des alternatives ".*" et "$."
Remarque sur le drapeau RegexOptions.RightToLeft
Il est important de noter que le drapeau RegexOptions.RightToLeft n'affecte que le direction dans laquelle la chaîne d'entrée est analysée, et non l'ordre dans lequel le modèle regex est traité.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!