Maison > développement back-end > C++ > Comment l'ordre des opérateurs affecte-t-il la correspondance dans les expressions régulières ?

Comment l'ordre des opérateurs affecte-t-il la correspondance dans les expressions régulières ?

Patricia Arquette
Libérer: 2024-12-31 15:03:22
original
586 Les gens l'ont consulté

How Does Operator Order Affect Matching in Regular Expressions?

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal