「PHPで正規表現入門2」の編集履歴(バックアップ)一覧に戻る

PHPで正規表現入門2 - (2015/08/11 (火) 21:19:40) のソース

前回記事[[PHPで正規表現入門1]]では、正規表現で主に使われる文字について話しました。今回はメタ文字の意味と簡単なプログラムを書いていきたいと思います。8月11日記事
~
~
目次
#contents
~
~
----
~
*メタ文字の意味
メタ文字の意味についてまとめていきます。wikiの文法上、|の記号は(パイプ記号と解説してあります。)
|メタ文字|説明|用途イメージ|h
|\|エスケープ文字。|文字としての.や^をそのまま使う場合は\.や\^にする。|
|^|検索対象は文字の始まり。あるいは複数行の場合は行の始まり。|マイナス(-)いくらのマイナス部分を検索するとか|
|$|検索対象は文字の終わり。あるいは複数行の場合は行の終わり。|~円の円が書かれたものを検索するとか。|
|.|すべての文字にマッチ(改行は除く)任意の一文字|.魚は、金魚、鮮魚などに一致する。|
|[]|文字クラスの始まりと終わり|数字の集合[0-9]やアルファベット小文字の集合[a-z]。&br()単語の場合は[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]]では、もう少しメタ文字の種類を増やして、書いていきたいと思います。
~
~
以上