正規表現は文字列のルールを定義します。最も単純な正規表現には予約語が含まれません。たとえば、正規表現 hello は文字列「hello」にのみ一致します。
一般的な正規表現は特定の特別な構造を使用するため、より多くの文字列に一致します。たとえば、正規表現 hello|word は、文字列「hello」と文字列「word」の両方に一致します。より複雑な例を挙げると、正規表現 b[an]*s は、文字列「bananas」、「baaaaas」、「bs」、および b で始まり s で終わるその他の文字列と一致し、任意の数の文字を含めることができます。中央には a と任意の数の n の組み合わせ。
正規表現では次の予約語を使用できます
^
一致する文字列は次の文字列で始まります
mysql> select "fonfo" regexp "^fo$";
mysql> select "fofo" regexp "^fo"; -> 1 (一致を示します)
$
一致した文字列は前の文字列で終わります
mysql> select "fono" regexp "^fono$"; match)
mysql> select "fono" regexp "^fo$"; -> 0 (不一致を示します)
任意の文字に一致します (改行を含む)
mysql> select "fofo" regexp "^f.*" ; -> 1 (一致を示す)
mysql> select "fonfo" regexp "^f.*";
a*
複数の a に一致する (空の文字列を含む)
mysql> ban" regexp "^ba*n"; -> 1 (一致を示す)
mysql> select "baaan" regexp "^ba*n"; -> 1 (一致を示す)
mysql> select "bn" regexp "^ba*n"; -> 1 (一致を示す)
a+
任意の数の a に一致する (空の文字列を除く)
mysql> select "ban" regexp "^ba+n";一致)
mysql> select "bn" regexp "^ba+n"; -> 0 (不一致を示します)
1 または 0 と一致します
mysql> select "bn" regexp "^ba?n" ; -> 1 (一致を示します)
mysql> select "ban" regexp "^ba?n"; > 0 (一致しないことを意味します)
de|abc
de または abc に一致します
mysql> select "pi" regexp "pi|apa";
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)*
任意の数の abc (空の文字列を含む) と一致
mysql> select "pi" regexp "^(pi)*$"; - > ; 1 (一致を示します)
mysql> select "pip" regexp "^(pi)*$" -> 0 (不一致を示します)
mysql> select "pipi" regexp "^(pi)*$"; -> 1 (一致を示します)
{1}
{2,3}
これは、以前のいくつかの予約語の機能を実現できる、より包括的なメソッドです
a*
は、{0,} として記述できます
a+
は{1,}として書くことができます
a?
は{0,1}として書くことができます
{}には整数パラメータiが1つだけあります。これは、文字がi回しか出現できないことを意味します。 {} i 内の 1 つの整数パラメータ i の後に「,」が続く場合は、その文字が i 回以上出現できることを示します。{} 内に整数パラメータ i が 1 つだけあり、その後に「,」が続きます。整数パラメーター j。これは、キャラクターが i 回を超え j 回未満 (i 回と j 回を含む) しか出現できないことを示します。整数パラメータは 0 以上、re_dup_max 以下である必要があります (デフォルトは 255)。パラメータが 2 つある場合、2 番目のパラメータは最初のパラメータ以上である必要があります
[a-dx]
「a」、「b」、「c」、「d」、または「x」に一致します
[^a- dx]
「a」、「b」、「c」、「d」、「x」を除く任意の文字と一致します。「[」、「]」はペアで使用する必要があります
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" 正規表現 "^[^a-dxyz]+$" -> 0 (一致しないことを示します)
---------- -- ----------------------------------
[[.characters.]]
要素を比較する順序を表します。括弧内の文字の順序は一意です。ただし、括弧内にワイルドカードを含めることができるため、より多くの文字と一致することができます。たとえば、正規表現 [[.ch.]]*c は chchcc の最初の 5 文字と一致します。
[=character_class=]
は等しいクラスを表し、それ自体を含むクラス内の他の等しい要素を置き換えることができます。たとえば、o と (+) が同じクラスのメンバーである場合、[[=o=]]、[[=(+)=]]、および [o(+)] は完全に等価です。
[:character_class:]
括弧内、[: と :] の間には文字クラスの名前があり、このクラスに属するすべての文字を表すことができます。
文字クラスの名前は、alnum、digit、punct、alpha、graph、space、blank、 lower、upper、cntrl、print、xdigit です
mysql> select "justalnums" regexp "[[:alnum:]]+"; - > 1 (一致を示します)
mysql> select "!!" regexp "[[:alnum:]]+" -> 0 (不一致を示します)
先頭と一致します単語の先頭も末尾も alnum に含まれる文字ではなく、アンダースコアでもありません。
mysql> select "a word a" regexp "[[::]]" ->
mysql> select "a xword a" regexp "[[::]]"; (一致しないことを示します)
mysql> select "weeknights" regexp "^(wee|week)(knights|nights)" -> 1 (一致することを示します)