Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment l'opérateur d'expression régulière OR est évalué

Si vous êtes intéressé par ce qui se passe lorsque vous utilisez | opérateur d'alternance , la réponse est simple :le moteur regex traite l'expression et la chaîne d'entrée de gauche à droite .

En prenant le modèle que vous avez comme exemple, ^.{8}|.{12}$|.{4} commence à inspecter la chaîne d'entrée à partir de la gauche et recherche ^.{8} - 8 premiers caractères. Les trouve et c'est un match. Ensuite, continue et trouve les 12 derniers caractères avec .{12}$ , et encore une fois il y a un match. Ensuite, toutes les chaînes de 4 caractères sont mises en correspondance.

Démonstration de débogage

Ensuite, vous avez ^.{8}|.{4}|.{12}$ . L'expression est à nouveau analysée de gauche à droite, les 8 premiers caractères correspondent en premier, mais ensuite, seules les séquences de 4 caractères seront mises en correspondance, .{12} ne se déclenchera jamais car il y aura .{4} matchs !

Démonstration de débogage