MariaDB - Espressione regolare

Oltre alla corrispondenza del modello disponibile dalle clausole LIKE, MariaDB offre la corrispondenza basata su espressioni regolari tramite l'operatore REGEXP. L'operatore esegue la corrispondenza del modello per un'espressione stringa in base a un determinato modello.

MariaDB 10.0.5 ha introdotto PCRE Regular Expressions, che aumenta notevolmente l'ambito della corrispondenza in aree come modelli ricorsivi, asserzioni previsionali e altro ancora.

Rivedere l'uso della sintassi dell'operatore REGEXP standard fornita di seguito:

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

REGEXP restituisce 1 per una corrispondenza di pattern o 0 in assenza di uno.

Un'opzione per l'opposto esiste sotto forma di NOT REGEXP. MariaDB offre anche sinonimi per REGEXP e NOT REGEXP, RLIKE e NOT RLIKE, che sono stati creati per motivi di compatibilità.

Il modello confrontato può essere una stringa letterale o qualcos'altro come una colonna di tabella. Nelle stringhe utilizza la sintassi di escape C, quindi raddoppia i caratteri "\". REGEXP non fa distinzione tra maiuscole e minuscole, ad eccezione delle stringhe binarie.

Di seguito viene fornita una tabella di possibili modelli che possono essere utilizzati:

Suor n Modello e descrizione
1

^

Corrisponde all'inizio della stringa.

2

$

Corrisponde alla fine della stringa.

3

.

Corrisponde a un singolo carattere.

4

[...]

Corrisponde a qualsiasi carattere tra parentesi.

5

[^...]

Corrisponde a qualsiasi carattere non elencato tra parentesi.

6

p1|p2|p3

Corrisponde a uno qualsiasi dei modelli.

7

*

Corrisponde a 0 o più istanze dell'elemento precedente.

8

+

Corrisponde a 1 o più istanze dell'elemento precedente.

9

{n}

Corrisponde a n istanze dell'elemento precedente.

10

{m,n}

Corrisponde a m an istanze dell'elemento precedente.

Rivedi gli esempi di corrispondenza dei modelli forniti di seguito:

Prodotti che iniziano con "pr" -

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

Prodotti che terminano con "na" -

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

Prodotti che iniziano con una vocale -

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