[ ]で囲んでいるパターンは、文字クラスと呼んでいます。
[ ]内のいずれかが存在すればマッチします。
たとえば[123]とかけば、「1」、「2」や「3」はマッチしますが、
「4」「45」、「a」はマッチしません。
文字クラス内で「^」を使うと否定を表します。
[^123]なら「1」「2」「3」以外を表します。「4」「a」は
マッチします。
「-」は範囲を表します。[A-Z]というパターンは
「A」「L」はマッチしますが「a」「12」はマッチしません。
「-」そのものを文字クラスで使いたいときは、
[A-Z-]のように最後に書きます。
文字クラスのパターン
パターン | パターンの意味 | マッチする文字列 |
---|---|---|
[12345] | 12345のいずれか | 1 |
[0-9] | 0~9のいずれか | 9 |
[A-Z] | A~Zのいずれか | S |
[A-Za-z] | A~Z、a~zのいずれか | g |
[^12345] | 12345ではない文字 | 7 |
[12][12] | 11,12,21,22のいずれか | 11 |
[A-Za-z][0-9] | アルファベット1文字に数字が1つ続く | d3 |
サンプルコードの実行結果はこちら
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
<!doctype html> <html> <head> <meta charset="utf-8"> <title>行と・行末を表す正規表現</title> <link rel="stylesheet" href="../style.css"> </head> <body> <?php $pat = array("[123]","[5-9]","[^4-8]"); $str = array("1","3" ,"4","5"); ?> <table border="3"> <tr> <th>pattern</th> <th>string</th> <th>match</th> </tr> <?php foreach($pat as $valuePat){ foreach($str as $valueStr){ echo "<tr>"; echo "<td>{$valuePat}</td>"; echo "<td>{$valueStr}</td>"; $match = preg_match("/" . $valuePat . "/", $valueStr ); if( $match ){ $match = "YES"; }else{ $match = "NO"; } echo "<td>{$match}</td>"; echo "</tr>"; } } ?> </table> </body> </html> |
表記 | 意味 |
---|---|
\s | 空白 |
\S | 空白ではない |
\d | 数字 |
\D | 数字ではない |
\w | 英数字(単語) |
\W | 英数字(単語)ではない |
\A | 文字列の先頭 |
\Z | 文字列の末尾 |