前回記事PHPで正規表現入門1では、正規表現で主に使われる文字について話しました。今回はメタ文字の意味と簡単なプログラムを書いていきたいと思います。8月11日記事
目次
メタ文字の意味についてまとめていきます。wikiの文法上、|の記号は(パイプ記号と解説してあります。)
メタ文字 | 説明 | 用途イメージ |
\ | エスケープ文字。 | 文字としての.や^をそのまま使う場合は\.や\^にする。 |
^ | 検索対象は文字の始まり。あるいは複数行の場合は行の始まり。 | マイナス(-)いくらのマイナス部分を検索するとか |
$ | 検索対象は文字の終わり。あるいは複数行の場合は行の終わり。 | ~円の円が書かれたものを検索するとか。 |
. | すべての文字にマッチ(改行は除く)任意の一文字 | .魚は、金魚、鮮魚などに一致する。 |
[] | 文字クラスの始まりと終わり |
数字の集合[0-9]やアルファベット小文字の集合[a-z]。 単語の場合は[a-zA-Z]+ |
パイプ記号 | ORの意味 | URLがhttpかhttpsかを調べたりとか・・ |
() | グループ。サブパターンの開始。 | (httpパイプ記号https)とか |
* | 0回以上の繰り返し | ぱっとすぐでてこないのでいつか。 |
+ | 1回以上の繰り返し | [0-9]+は3や57や843・・・ |
? | 直前のサブ式と0か1回一致するか、パターン装飾子 | [a-z][a-z]?はbやglと一致する |
コードを書いていきます。送信側
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>正規表現練習</title> </head> <body> <form action="confirm.php" method="post"> <input type="text" name="text"> <input type="submit" name="submit" value="チェック"> </form> </body> </html>
受信側
<?php header("Content-Type: text/html; charset=UTF-8"); $text = $_POST["text"]; echo "先頭にマイナスがあるかどうか<br>"; if(preg_match("/^-/",$text)) {//-の前にハットマークを付けることがポイントです。 echo "マイナスです。<br>"; }else{ echo "先頭に-はありません。<br>"; } echo "<br>末尾に円があるかどうか<br>"; if(preg_match("/円$/",$text)) {//円の後ろにドルマークを付けることがポイントです。 echo "円があります。<br>"; }else{ echo "末尾に円はありません。<br>"; } echo "<br>途中に小数点はあるか<br>"; if(preg_match("/.[\.]/",$text)) {//途中ということで、検索対象の[]を設け、文字としての.はエスケープ処理をしてあげることがポイントです。 echo "途中に小数点(どっと)があります。<br>"; }else{ echo "ドットはありません。<br>"; } echo "<br>途中に小数点はあるか全角ドット対応version<br>"; if(preg_match("/.[\.|.]/",$text)) {//パイプを使ってOR検索をする。 echo "途中に小数点(どっと)があります。<br>"; }else{ echo "ドットはありません。<br>"; } ?>
というように書いていきます。
上記にあげたよく使うメタ文字だけで、そこそこ色々な正規表現は書けるようになってくると思います。次回PHPで正規表現入門3では、もう少しメタ文字の種類を増やして、書いていきたいと思います。
以上