基本的な PHP 開(kāi)発チュートリアル: 正規(guī)表現(xiàn)のアトム
1. アトム
アトムは正規(guī)表現(xiàn)の最小単位であり、端的に言えば、アトムは照合する必要がある內(nèi)容です。有効な正規(guī)表現(xiàn)には、少なくとも 1 つのアトムが含まれている必要があります。
表示される文字も不可視の文字もすべてアトムです
注: スペース、キャリッジ リターン、ライン フィード、0 ~ 9、A-Za-z、中國(guó)語(yǔ)、句読點(diǎn)、および特殊記號(hào)はすべてアトムです。
アトミックな例を行う前に、まず関數(shù) preg_match:
構(gòu)文:
int preg_match (string $ Regular, string $string[, array &$result])
関數(shù): $ に基づく通常の変數(shù)は、$string 変數(shù)と一致します。存在する場(chǎng)合は、一致の數(shù)を返し、一致した結(jié)果を $result 変數(shù)に入れます。一致する結(jié)果がない場(chǎng)合は、0 が返されます。 注: 上記は、preg_match で一般的に使用される主なパラメータです。他のいくつかのパラメーターは上にリストしませんでした。他の 2 つのパラメーターがあまりにも一般的でないためです。
プログラムを通して確認(rèn)しましょう:
例: コードは次のとおりです
<?php //定義一個(gè)變量pattern,存放正則表達(dá)式 $pattern = '/a/'; //待搜素字段 $string = 'ddfdjjvi2jfvkwkfi24'; //判斷,如果匹配到了,輸出$matcges的值 if(preg_match($pattern, $string, $matches)){ echo '匹配到了,結(jié)果為:'; var_dump($matches); }else{ echo '沒(méi)有匹配到'; } ?>結(jié)果:
なぜなら、私が望んでいるのは a と一致することであり、$string は存在しないからです。失敗した。
この例を変形します例: コードは次のとおりです
<?php //定義一個(gè)變量pattern,存放正則表達(dá)式 $pattern = '/f/'; //待搜素字段 $string = 'ddfdjjvi2jfvkwkfi24'; //判斷,如果匹配到了,輸出$matcges的值 if(preg_match($pattern, $string, $matches)){ echo '匹配到了,結(jié)果為:'; var_dump($matches); }else{ echo '沒(méi)有匹配到'; } ?>結(jié)果:
上記の文字列には f があるため、一致は成功します
次に、スペースを一致させてみましょう:例: 以下のように
<?php $zz = '/ /'; $string = 'sssssw aaaaa'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,結(jié)果為:'; var_dump($matches); }else{ echo '沒(méi)有匹配到'; } ?>結(jié)果:
このため、$string 変數(shù)の w 文字の後にスペースが入ります。したがって、一致は成功し、文字列型が長(zhǎng)さ 1 で出力されます。ただ、私たちの肉眼は目に見(jiàn)えず、この文字列を見(jiàn)ることができません。
2. 特別にマークされた原子 注: ここにあるそれぞれの原子は記憶する必要があり、ディクテーションレベルに達(dá)することが最善です。覚えるときは、d は 0 ~ 9 に一致し、D は 0 ~ 9 を除くすべての文字であることをペアで覚えてください。
學(xué)習(xí)する際は、これらの原子のディクテーションレベルに必ず到達(dá)してください。將來(lái)実験をするときに少しずつ學(xué)んでいくからです。
コードは次のとおりです:
<?php $zz = '/\d/'; $string = '床9前明月光'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,結(jié)果為:'; var_dump($matches); }else{ echo '沒(méi)有匹配到'; } ?>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 '匹配到了,結(jié)果為:'; var_dump($matches); }else{ echo '沒(méi)有匹配到'; } ?>Five. w は次のような a-zA-Z0-9_
の例に一致します
<?php $zz = '/\w/'; $string = '新中_國(guó)萬(wàn)歲呀萬(wàn)歲'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,結(jié)果為:'; var_dump($matches); }else{ echo '沒(méi)有匹配到'; } ?>6. W は次のような非 a-zA-Z0-9_
の例に一致します
<?php $zz = '/\W/'; $string = 'afasABCWEQR44231284737'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,結(jié)果為:'; var_dump($matches); }else{ echo '沒(méi)有匹配到'; } ?>7. s はスペース以外の空白文字すべてに一致します
例は次のとおりです
<?php $zz = '/\s/'; $string = "中國(guó)萬(wàn) 歲"; if(preg_match($zz, $string, $matches)){ echo '匹配到了,結(jié)果為:'; var_dump($matches); }else{ echo '沒(méi)有匹配到'; } ?>
8. S 空でない文字
例は次のとおりです
<?php $zz = '/\S/'; $string = " a "; if(preg_match($zz, $string, $matches)){ echo '匹配到了,結(jié)果為:'; var_dump($matches); }else{ echo '沒(méi)有匹配到'; } ?>
は正常に照合されました。スペースはありますが、改行とインデントが表示されます。ただし、空白以外の文字 a が存在します。したがって、試合は成功です。
9. [] アトムの範(fàn)囲を指定する例
は次のとおりです
<?php $zz = '/[0-5]\w+/'; $string = '6a'; $string1 = '1C'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,結(jié)果為:'; var_dump($matches); }else{ echo '沒(méi)有匹配到'; } ?>
$stringを$string1に再度変更して、一致するかどうかを確認(rèn)してください
結(jié)論:
0-上の例 5 は $string と一致しませんが、$string1 は成功します。 $string の最初の値は 6 であり、[0-5] の範(fàn)囲內(nèi)にないためです。
10. [^ 文字] は指定された範(fàn)囲の文字と一致しません
コードは次のとおりです:
<?php $zz = '/[^0-9A-Za-z_]/'; $string = 'aaaaab311dd'; $string1 = '!$@!#%$#^##'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,結(jié)果為:'; var_dump($matches); }else{ echo '沒(méi)有匹配到'; } ?>
結(jié)論:
$string のマッチングは失敗しましたが、$string1 のマッチングでは成功しました。角括弧內(nèi)にサーカムフレックス文字があるためです。
^ 角括弧內(nèi)のサーカムフレックス文字の機(jī)能は、角括弧內(nèi)の文字と一致することではありません。
11. 概要