正規表現は文字列のルールを定義します。最も単純な正規表現には予約語が含まれません。たとえば、正規表現 hello は文字列「hello」にのみ一致します。
一般的な正規表現は特定の特別な構造を使用するため、より多くの文字列に一致します。たとえば、正規表現 hello|word は、文字列「hello」と文字列「word」の両方に一致します。より複雑な例を挙げると、正規表現 b[an]*s は、文字列「bananas」、「baaaaas」、「bs」、および b で始まり s で終わるその他の文字列と一致し、任意の数の文字を含めることができます。中央には a と任意の数の n の組み合わせ。
正規表現では次の予約語を使用できます
^ 一致する文字列は次の文字列で始まります
mysql> select "fonfo" regexp "^fo$";
mysql> "fofo" regexp "^fo"; -> 1 (一致を示します)
$
一致した文字列は前の文字列で終わります
mysql> select "fono" regexp "^fono$"; )
mysql> select "fono" regexp "^fo$"; -> 0 (不一致を示します)
任意の文字に一致します (改行を含む)
mysql> select "fofo" regexp "^ f.*"; -> 1 (一致を示す)
mysql> select "fonfo" regexp "^f.*" -> 1 (一致を示す)
a*
select "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"; match)
mysql> select "bn" regexp "^ba+n"; ->
a? select "bn" regexp "^ba?n"; -> 1 (一致を示します)
mysql> select "ban" regexp "^ba?n"; -> mysql> select "baan" 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)";
mysql> select "pix" regexp "^(pi|apa)"; 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*
a{0,}
a+ として記述できます
は {1,} として記述できますか?
は {0,1} として記述できます
{} には整数パラメーター i が 1 つだけあります。これは、文字が i 回のみ出現できることを意味します。 {} 内の整数パラメータ 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 (一致することを示します)
以上、正規表現テストツールの内容を含め、正規表現テストツールであるMySqlでの正規表現の使い方について紹介しましたが、PHPチュートリアルに興味のある友人の参考になれば幸いです。