Apêndice G. Sintaxe de Expressões Regulares do MariaDB - Databases - Software - Computers
Apêndice G. Sintaxe de Expressões Regulares do MariaDB
Um expressão regular (regex) é um modo poderoso de especificar um pesquisa complexa.
O MariaDB usa a implementação do Henry Spencer de expressões regulares, a qual está em conformidade com o POSIX 1003.2. MariaDB usa a versão extendida.
Esta é uma referência simplória que salta os detalhes. Para obter informações exatas, veja a página manual do regex(7)
de Henry Spencer que está incluída na distribuicão fonte. See Apêndice C, Colaboradores do MariaDB.
Uma expressão regular descreve um conjunto de strings. A regexp mais simples é uma que não tenha nenhum caracter especial nela. Por exeplo, o regexp hello
combina com hello
e nada mais.
Expressões regulares não triviais usam certas construções especiais e assim podem encontrar mais de uma string. Por exemplo, o regexp hello|word
combina tanto com a string hello
quanto com a string word
.
Como um exemplo mais complicado, o regexp B[an]*s
mcombina com qualquer das strings Bananas
, Baaaaas
, Bs
, e qualquer string iniciando com um B
, e finalizando com um s
, e contendo qualquer número de caracteres a
ou n
entre eles.
Um expressão reguklar pode utilizar qualquer dos um dos caracteres/ construtores especiais:
^
Combina com o inicio de uma string.
mysql>
SELECT 'fo\nfo' REGEXP '^fo$'; -> 0
mysql>SELECT 'fofo' REGEXP '^fo'; -> 1
$
Combina com o fim de uma string.
mysql>
SELECT 'fo\no' REGEXP '^fo\no$'; -> 1
mysql>SELECT 'fo\no' REGEXP '^fo$'; -> 0
.
Combina com qualquer caracter (incluindo novas linhas)
mysql>
SELECT 'fofo' REGEXP '^f.*'; -> 1
mysql>SELECT 'fo\nfo' REGEXP '^f.*'; -> 1
a*
Combina com qualquer sequência de zero ou mais carcteres
a
.mysql>
SELECT 'Ban' REGEXP '^Ba*n'; -> 1
mysql>SELECT 'Baaan' REGEXP '^Ba*n'; -> 1
mysql>SELECT 'Bn' REGEXP '^Ba*n'; -> 1
a+
Cobina com qualquer sequência de um ou mais caracteres
a
.mysql>
SELECT 'Ban' REGEXP '^Ba+n'; -> 1
mysql>SELECT 'Bn' REGEXP '^Ba+n'; -> 0
a?
Combina com zero ou um caracter
a
.mysql>
SELECT 'Bn' REGEXP '^Ba?n'; -> 1
mysql>SELECT 'Ban' REGEXP '^Ba?n'; -> 1
mysql>SELECT 'Baan' REGEXP '^Ba?n'; -> 0
de|abc
Combina tant com a sequencia
de
como comabc
.mysql>
SELECT 'pi' REGEXP 'pi|apa'; -> 1
mysql>SELECT 'axe' REGEXP 'pi|apa'; -> 0
mysql>SELECT 'apa' REGEXP 'pi|apa'; -> 1
mysql>SELECT 'apa' REGEXP '^(pi|apa)$'; -> 1
mysql>SELECT 'pi' REGEXP '^(pi|apa)$'; -> 1
mysql>SELECT 'pix' REGEXP '^(pi|apa)$'; -> 0
(abc)*
Combina com zero ou mais instâncias da sequência
abc
.mysql>
SELECT 'pi' REGEXP '^(pi)*$'; -> 1
mysql>SELECT 'pip' REGEXP '^(pi)*$'; -> 0
mysql>SELECT 'pipi' REGEXP '^(pi)*$'; -> 1
{1}
,{2,3}
Existe um modo mais geral de se escrever regexp que combinam com muitas ocorrências de um átomo anterior.
a*
Pode ser escrito como
a{0,}
.a+
Pode ser escrito como
a{1,}
.a?
Pode ser escrito como
a{0,1}
.
Para ser mais preciso, um átomo seguido por um limite contendo um inteiro
i
e nenhuma vírgula casa com uma sequência de exatamentei
combinações do átomo. Um átomo seguido por um limite contendoi
e uma virgula casa com uma sequência dei
ou mais combinações do átomo. Um átomo seguido por um limite contendo dois inteirosi
ej
casa com uma seqquência dei
atéj
(inclusive) combinações de átomos.Ambos os argumentos devem estar na faixa de
0
ateRE_DUP_MAX
(padrão é 255), inclusive. Se houver dois argumentos, o segundo deve ser maior ou igual ao primeiro.[a-dX]
,[^a-dX]
Combina com qualquer caracter que seja (ou não, se ^ é usado)
a
,b
,c
,d
ouX
. Para incluir um caracter literal]
, ele deve ser imediatamente seguido pelo colchete de abertura[
. Para incluir um caracter literal-
, ele deve ser escrito primeiro ou por ultimo. Assim o[0-9]
encontra qualquer dígito decimal. Qualquer caracter que não tenha um significado definido dentro de um para[]
não tem nenhum significado especial e combina apenas com ele mesmo.mysql>
SELECT 'aXbc' REGEXP '[a-dXYZ]'; -> 1
mysql>SELECT 'aXbc' REGEXP '^[a-dXYZ]$'; -> 0
mysql>SELECT 'aXbc' REGEXP '^[a-dXYZ]+$'; -> 1
mysql>SELECT 'aXbc' REGEXP '^[^a-dXYZ]+$'; -> 0
mysql>SELECT 'gheis' REGEXP '^[^a-dXYZ]+$'; -> 1
mysql>SELECT 'gheisa' REGEXP '^[^a-dXYZ]+$'; -> 0
[[.caracter.]]
A sequência de caracteres daquele elemento ordenado. A sequência é um único elemento da lista de expressões entre colchetes. Um expressão entre colchetes contendo um elemento ordenado multi-caracter pode então combinar com mais de um caracter, por exemplo, se a sequência ordenada inclui um elemento ordenado
ch
, então a expresão regular[[.ch.]]*c
casa com os primeiros cinco caracteres dechchcc
.[=classe_caracter=]
Uma classe equivalente, procura pela sequência de caracteres de todos elementos ordenados equivalentes àquele, incluindo ele mesmo.
Por exemplo, se
o
e(+)
são os membros de uma classe equivalente, então[[=o=]]
,[[=(+)=]]
e[o(+)]
são todos sinônimos. Uma classe equivalente não pode ser o final de uma escala.[:character_class:]
Dentro de colchets, o nome de uma classe de caracter entre
[:
e:]
procura pela lista de todos os caracteres pertencentes a esta classe. Os nomes de classes de caracteres padrões são:Nome Nome Nome alnum digit punct alpha graph space blank lower upper cntrl print xdigit Ele procura pelas classes de caracteres definidas na página
ctype(3)
do manual. Um local pode forncer outros. Uma classe de caracter não pode ser usada como o final de uma escala.mysql>
SELECT 'justalnums' REGEXP '[[:alnum:]]+'; -> 1
mysql>SELECT '!!' REGEXP '[[:alnum:]]+'; -> 0
[[:<:]]
,[[:>:]]
Combina com a string null no inicio e no fim de uma palavra, respectivamente. Uma palavra é definida como uma sequencia de caracteres de palavra os quais não são nem precedido e nem seguidos por caracteres de palavras. Um caracter de palavra é um caracter alfa numérico (como definido por
ctype(3)
) ou um underscore (_
).mysql>
SELECT 'a word a' REGEXP '[[:<:]]word[[:>:]]'; -> 1
mysql>SELECT 'a xword a' REGEXP '[[:<:]]word[[:>:]]'; -> 0
mysql> SELECT 'weeknights' REGEXP '^(wee|week)(knights|nights)$'; -> 1
This is a translation of the MariaDB Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.
Anterior | Próximo | |
Apêndice F. Variáveis de Ambientes do MariaDB | Início | Apêndice H. GPL - Licença Pública Geral do GNU |