Um expressão regular (regex) é um modo poderoso de especificar um pesquisa complexa.
O MySQL usa a implementação do Henry Spencer de expressões regulares, a qual está em conformidade com o POSIX 1003.2. MySQL 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 MySQL.
  
    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$"; -> 0mysql>SELECT "fofo" REGEXP "^fo"; -> 1
        $
      
Combina com o fim de uma string.
mysql>SELECT "fo\no" REGEXP "^fo\no$"; -> 1mysql>SELECT "fo\no" REGEXP "^fo$"; -> 0
        .
      
Combina com qualquer caracter (incluindo novas linhas)
mysql>SELECT "fofo" REGEXP "^f.*"; -> 1mysql>SELECT "fo\nfo" REGEXP "^f.*"; -> 1
        a*
      
        Combina com qualquer sequência de zero ou mais carcteres
        a.
mysql>SELECT "Ban" REGEXP "^Ba*n"; -> 1mysql>SELECT "Baaan" REGEXP "^Ba*n"; -> 1mysql>SELECT "Bn" REGEXP "^Ba*n"; -> 1
        a+
      
        Cobina com qualquer sequência de um ou mais caracteres
        a.
mysql>SELECT "Ban" REGEXP "^Ba+n"; -> 1mysql>SELECT "Bn" REGEXP "^Ba+n"; -> 0
        a?
      
        Combina com zero ou um caracter a.
mysql>SELECT "Bn" REGEXP "^Ba?n"; -> 1mysql>SELECT "Ban" REGEXP "^Ba?n"; -> 1mysql>SELECT "Baan" REGEXP "^Ba?n"; -> 0
        de|abc
      
        Combina tant com a sequencia de como com
        abc.
mysql>SELECT "pi" REGEXP "pi|apa"; -> 1mysql>SELECT "axe" REGEXP "pi|apa"; -> 0mysql>SELECT "apa" REGEXP "pi|apa"; -> 1mysql>SELECT "apa" REGEXP "^(pi|apa)$"; -> 1mysql>SELECT "pi" REGEXP "^(pi|apa)$"; -> 1mysql>SELECT "pix" REGEXP "^(pi|apa)$"; -> 0
        (abc)*
      
        Combina com zero ou mais instâncias da sequência
        abc.
mysql>SELECT "pi" REGEXP "^(pi)*$"; -> 1mysql>SELECT "pip" REGEXP "^(pi)*$"; -> 0mysql>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 exatamente i combinações do
        átomo. Um átomo seguido por um limite contendo
        i e uma virgula casa com uma sequência de
        i ou mais combinações do átomo. Um átomo
        seguido por um limite contendo dois inteiros
        i e j casa com uma
        seqquência de i até j
        (inclusive) combinações de átomos.
      
        Ambos os argumentos devem estar na faixa de 0
        ate RE_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 ou
        X. 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]"; -> 1mysql>SELECT "aXbc" REGEXP "^[a-dXYZ]$"; -> 0mysql>SELECT "aXbc" REGEXP "^[a-dXYZ]+$"; -> 1mysql>SELECT "aXbc" REGEXP "^[^a-dXYZ]+$"; -> 0mysql>SELECT "gheis" REGEXP "^[^a-dXYZ]+$"; -> 1mysql>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 de chchcc.
      
        [=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 | 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:]]+"; -> 1mysql>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[[:>:]]"; -> 1mysql>SELECT "a xword a" REGEXP "[[:<:]]word[[:>:]]"; -> 0
mysql> SELECT "weeknights" REGEXP "^(wee|week)(knights|nights)$"; -> 1
This is a translation of the MySQL 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.

