1. アトム
アトムは正規表現の最小単位であり、端的に言えば、アトムは照合する必要がある内容です。有効な正規表現には、少なくとも 1 つのアトムが含まれている必要があります。
表示される文字も不可視の文字もすべてアトムです
注: スペース、キャリッジ リターン、ライン フィード、0 ~ 9、A-Za-z、中国語、句読点、および特殊記号はすべてアトムです。
アトミックな例を行う前に、まず関数 preg_match:
構文:
int preg_match (string $ Regular, string $string[, array &$result])
関数: $ に基づく通常の変数は、$string 変数と一致します。存在する場合は、一致の数を返し、一致した結果を $result 変数に入れます。一致する結果がない場合は、0 が返されます。 注: 上記は、preg_match で一般的に使用される主なパラメータです。他のいくつかのパラメーターは上にリストしませんでした。他の 2 つのパラメーターがあまりにも一般的でないためです。
プログラムを通して確認しましょう:
例: コードは次のとおりです
<?php //定义一个变量pattern,存放正则表达式 $pattern = '/a/'; //待搜素字段 $string = 'ddfdjjvi2jfvkwkfi24'; //判断,如果匹配到了,输出$matcges的值 if(preg_match($pattern, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>結果:
なぜなら、私が望んでいるのは a と一致することであり、$string は存在しないからです。失敗した。
この例を変形します例: コードは次のとおりです
<?php //定义一个变量pattern,存放正则表达式 $pattern = '/f/'; //待搜素字段 $string = 'ddfdjjvi2jfvkwkfi24'; //判断,如果匹配到了,输出$matcges的值 if(preg_match($pattern, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>結果:
上記の文字列には f があるため、一致は成功します
次に、スペースを一致させてみましょう:例: 以下のように
<?php $zz = '/ /'; $string = 'sssssw aaaaa'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>結果:
このため、$string 変数の w 文字の後にスペースが入ります。したがって、一致は成功し、文字列型が長さ 1 で出力されます。ただ、私たちの肉眼は目に見えず、この文字列を見ることができません。
2. 特別にマークされた原子注: ここにあるそれぞれの原子は記憶する必要があり、ディクテーションレベルに達することが最善です。覚えるときは、d は 0 ~ 9 に一致し、D は 0 ~ 9 を除くすべての文字であることをペアで覚えてください。
上記は非常にわかりやすく説明されています。これらを段階的に学習するために実験を行ってみましょう。
学習する際は、これらの原子のディクテーションレベルに必ず到達してください。将来実験をするときに少しずつ学んでいくからです。
コードは次のとおりです:
<?php $zz = '/\d/'; $string = '床9前明月光'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>Four. D は 0-9 以外の値に一致します
例: コードは次のとおりです
<?php header("Content-type:text/html;charset=utf-8"); $zz = '/\D/'; $string = '121243中23453453'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>Five. w は次のような a-zA-Z0-9_
の例に一致します
<?php $zz = '/\w/'; $string = '新中_国万岁呀万岁'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>6. W は次のような非 a-zA-Z0-9_
の例に一致します
<?php $zz = '/\W/'; $string = 'afasABCWEQR44231284737'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>7. s はスペース以外の空白文字すべてに一致します
例は次のとおりです
<?php $zz = '/\s/'; $string = "中国万 岁"; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>
8. S 空でない文字
例は次のとおりです
<?php $zz = '/\S/'; $string = " a "; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>
は正常に照合されました。スペースはありますが、改行とインデントが表示されます。ただし、空白以外の文字 a が存在します。したがって、試合は成功です。
9. [] アトムの範囲を指定する例
は次のとおりです
<?php $zz = '/[0-5]\w+/'; $string = '6a'; $string1 = '1C'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>
$stringを$string1に再度変更して、一致するかどうかを確認してください
結論:
0-上の例 5 は $string と一致しませんが、$string1 は成功します。 $string の最初の値は 6 であり、[0-5] の範囲内にないためです。
10. [^ 文字] は指定された範囲の文字と一致しません
コードは次のとおりです:
<?php $zz = '/[^0-9A-Za-z_]/'; $string = 'aaaaab311dd'; $string1 = '!$@!#%$#^##'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>
結論:
$string のマッチングは失敗しましたが、$string1 のマッチングでは成功しました。角括弧内にサーカムフレックス文字があるためです。
^ 角括弧内のサーカムフレックス文字の機能は、角括弧内の文字と一致することではありません。
11. 概要
次のセクション