MariaDB - Expression régulière

Au-delà de la correspondance de modèle disponible à partir des clauses LIKE, MariaDB propose une correspondance basée sur des expressions régulières via l'opérateur REGEXP. L'opérateur effectue une correspondance de modèle pour une expression de chaîne en fonction d'un modèle donné.

MariaDB 10.0.5 a introduit les expressions régulières PCRE, ce qui augmente considérablement la portée de la correspondance dans des domaines tels que les modèles récursifs, les assertions d'anticipation, etc.

Passez en revue l'utilisation de la syntaxe d'opérateur REGEXP standard donnée ci-dessous -

SELECT column FROM table_name WHERE column REGEXP '[PATTERN]';

REGEXP renvoie 1 pour une correspondance de modèle ou 0 en l'absence d'un.

Une option pour le contraire existe sous la forme de NOT REGEXP. MariaDB propose également des synonymes de REGEXP et NOT REGEXP, RLIKE et NOT RLIKE, qui ont été créés pour des raisons de compatibilité.

Le modèle comparé peut être une chaîne littérale ou autre chose comme une colonne de table. Dans les chaînes, il utilise la syntaxe d'échappement C, donc doublez tous les caractères «\». REGEXP est également insensible à la casse, à l'exception des chaînes binaires.

Un tableau des modèles possibles, qui peuvent être utilisés est donné ci-dessous -

Sr. Non Modèle et description
1

^

Il correspond au début de la chaîne.

2

$

Il correspond à la fin de la chaîne.

3

.

Il correspond à un seul caractère.

4

[...]

Il correspond à n'importe quel caractère entre crochets.

5

[^...]

Il correspond à tout caractère non répertorié entre crochets.

6

p1|p2|p3

Il correspond à n'importe lequel des modèles.

sept

*

Il correspond à 0 ou plusieurs instances de l'élément précédent.

8

+

Il correspond à une ou plusieurs instances de l'élément précédent.

9

{n}

Il correspond à n instances de l'élément précédent.

dix

{m,n}

Il fait correspondre m à n instances de l'élément précédent.

Passez en revue les exemples de correspondance de modèles donnés ci-dessous -

Produits commençant par «pr» -

SELECT name FROM product_tbl WHERE name REGEXP '^pr';

Produits se terminant par «na» -

SELECT name FROM product_tbl WHERE name REGEXP 'na$';

Produits commençant par une voyelle -

SELECT name FROM product_tbl WHERE name REGEXP '^[aeiou]';