C++ CSS HTML Java JavaScript MySQL Oracle PERL PHP SQL Unix VBScript XHTML XML Сети
MySQL Regular Expressions (MySQL 4.0)
 
MySQL Regular Expressions
*************************

A regular expression (regex) is a powerful way of specifying a complex
search.

MySQL uses Henry Spencer's implementation of regular expressions, which
is aimed at conformance with POSIX 1003.2. MySQL uses the extended
version.

A regular expression describes a set of strings. The simplest regexp is
one that has no special characters in it. For example, the regexp
`hello' matches `hello' and nothing else.



As a more complex example, the regexp `B[an]*s' matches any of the
strings `Bananas', `Baaaaas', `Bs', and any other string starting with
a `B', ending with an `s', and containing any number of `a' or `n'
characters in between.

A regular expression may use any of the following special
characters/constructs:
`^'
     Match the beginning of a string.
          mysql> SELECT "fo\nfo" REGEXP "^fo$";           -> 0
          mysql> SELECT "fofo" REGEXP "^fo";              -> 1

`$'
     Match the end of a string.
          mysql> SELECT "fo\no" REGEXP "^fo\no$";         -> 1
          mysql> SELECT "fo\no" REGEXP "^fo$";            -> 0

`.'
     Match any character (including newline).
          mysql> SELECT "fofo" REGEXP "^f.*";             -> 1
          mysql> SELECT "fo\nfo" REGEXP "^f.*";           -> 1

`a*'
     Match any sequence of zero or more `a' characters.
          mysql> SELECT "Ban" REGEXP "^Ba*n";             -> 1
          mysql> SELECT "Baaan" REGEXP "^Ba*n";           -> 1
          mysql> SELECT "Bn" REGEXP "^Ba*n";              -> 1

`a+'
     Match any sequence of one or more `a' characters.
          mysql> SELECT "Ban" REGEXP "^Ba+n";             -> 1
          mysql> SELECT "Bn" REGEXP "^Ba+n";              -> 0

`a?'
     Match either zero or one `a' character.
          mysql> SELECT "Bn" REGEXP "^Ba?n";              -> 1
          mysql> SELECT "Ban" REGEXP "^Ba?n";             -> 1
          mysql> SELECT "Baan" REGEXP "^Ba?n";            -> 0

`de|abc'
     Match either of the sequences `de' or `abc'.
          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)*'
     Match zero or more instances of the sequence `abc'.
          mysql> SELECT "pi" REGEXP "^(pi)*$";            -> 1
          mysql> SELECT "pip" REGEXP "^(pi)*$";           -> 0
          mysql> SELECT "pipi" REGEXP "^(pi)*$";          -> 1

`{1}'
`{2,3}'
     The is a more general way of writing regexps that match many
     occurrences of the previous atom.
    `a*'
          Can be written as `a{0,}'.

    `a+'
          Can be written as `a{1,}'.

    `a?'
          Can be written as `a{0,1}'.  To be more precise, an atom
     followed by a bound containing one integer `i' and no comma
     matches a sequence of exactly `i' matches of the atom. An atom
     followed by a bound containing one integer `i' and a comma matches
     a sequence of `i' or more matches of the atom.  An atom followed
     by a bound containing two integers `i' and `j' matches a sequence
     of `i' through `j' (inclusive) matches of the atom.

     Both arguments must be in the range from `0' to `RE_DUP_MAX'
     (default 255), inclusive.  If there are two arguments, the second
     must be greater than or equal to the first.

`[a-dX]'
`[^a-dX]'
     Matches any character which is (or is not, if ^ is used) either
     `a', `b', `c', `d' or `X'. To include a literal `]' character, it
     must immediately follow the opening bracket `['.  To include a
     literal `-' character, it must be written first or last. So
     `[0-9]' matches any decimal digit. Any character that does not have
     a defined meaning inside a `[]' pair has no special meaning and
     matches only itself.
          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

 collating element can thus
     match more than one character, for example, if the collating
     sequence includes a `ch' collating element, then the regular
     expression `[[.ch.]]*c' matches the first five characters of
     `chchcc'.

`[=character_class=]'
     An equivalence class, standing for the sequences of characters of
     all collating elements equivalent to that one, including itself.

     

`[:character_class:]'
     Within a bracket expression, the name of a character class
     enclosed in `[:' and `:]' stands for the list of all characters
     belonging to that class. Standard character class names are:

     *Name*  *Name*  *Name*
     alnum   digit   punct
     alpha   graph   space
     blank   lower   upper
     cntrl   print   xdigit

     These stand for the character classes defined in the `ctype(3)'
     manual page. A locale may provide others. A character class may
     not be used as an endpoint of a range.
          mysql> SELECT "justalnums" REGEXP "[[:alnum:]]+";       -> 1
          mysql> SELECT "!!" REGEXP "[[:alnum:]]+";               -> 0

`[[:<:]]'
`[[:>:]]'
     These match the null string at the beginning and end of a word
     respectively.  A word is defined as a sequence of word characters
     which is neither preceded nor followed by word characters. A word
     character is an alnum character (as defined by `ctype(3)') or an
     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

[Назад] [Содержание] [Вперед]

Главная