【PHP入門】正規表現の記号とエスケープ処理|シングル・ダブルクォーテーションの違いも解説
PHPで正規表現を扱う際には、クォーテーションやスラッシュのエスケープ処理に注意が必要です。
このページでは、シングルクォーテーション・ダブルクォーテーションの違いや、正規表現で使われる記号の意味を、サンプルコード付きでわかりやすく解説します。
「PHPで正規表現を使いたいけど、エスケープ処理がよくわからない」という方におすすめの内容です。
クォーテーションについて
PHPで正規表現を扱う時に特に注意しなければならないのは、文字列を括るシングルクォーテーションとダブルクォーテーションで標準エスケープ処理がされてしまうことです。
よってPHPでは以下を配慮して正規表現を記述する必要があります。(PHPで正規表現を扱う場合は標準エスケープ処理の少ないシングルクォーテーションの使用がお勧め)
| エスケープシーケンス | 文字 |
|---|---|
| \' | シングルクオーテーション(') |
| \\ | バックスラッシュ(\)[Windowsでのエンマーク] |
| エスケープシーケンス | 文字 |
|---|---|
| \" | ダブルクオーテーション(") |
| \\ | バックスラッシュ(\)[Windowsでのエン記号] |
| \$ | ドル($) |
| \r | 改行(0x0D) |
| \n | ラインフィード(0x0A)[Linuxでの改行] |
| \t | 水平タブ(0x09) |
| \t | 垂直タブ(0x0B) |
| \e | ESC(0x1B)[エスケープ] |
| \f | フォームフィード(0x0C) |
| \x16進数2桁 |
16進数でASCII文字を表現 例えば "\x4A\x61\x76\x61\x73\x63\x72\x69\x70\x74" は 「Javascript」です |
正規表現一覧
| メタ文字 | 意味 | 備考 |
|---|---|---|
| ^ | 先頭にマッチ |
|
| $ | 最後にマッチ |
|
| . | 任意の1文字 |
|
| * | 直前のパターンの0回以上繰り返し(最長一致) |
|
| *? | 直前のパターンの0回以上繰り返し(最短一致) |
|
| + | 直前のパターンの1回以上繰り返し(最長一致) |
|
| +? | 直前のパターンの1回以上繰り返し(最短一致) |
|
| ? | 直前のパターンの0~1回繰り返し(最長一致) |
|
| ?? | 直前のパターンの0~1回繰り返し(最短一致) |
|
| | | 又は |
|
| [] | []内の文字何れか |
[abc]は文字「abc」の何れか [a-z]は文字「aからz」までの何れか [c-g]は文字「cdefg」の何れか [A-Z]は文字「AからZ」までの何れか [0-9]は文字「0から9」までの何れか [a-zA-Z0-9]は文字「aからz」「AからZ」「0から9」までの何れか [ぁ-ん]は「ひらがな」の何れか [ァ-ヴ]は「カタカナ」の何れか [ヲ-゚]は「半角カタカナ」の何れか
|
| [^] | []内に含まれない文字の何れか |
|
| \n | ラインフィーダ(LF) Linuxでの改行文字 |
|
| \r | キャリッジリターン(CR) |
|
| \文字 | \(バックスラッシュ)の直後の文字をエスケープする |
|
| \t | タブ(0x09) |
|
| \s | 半角スペース、\t、\n、\r、\f の何れか |
|
| \S | 半角スペース、\t、\n、\r、\f 以外 |
|
| \d | 半角数字 [0-9]と同じ |
|
| \D | 半角数字以外の文字 [^0-9]と同じ |
|
| \w | 半角英数字とアンダースコア(_) |
|
| \W | 半角英数字とアンダースコア(_)以外の文字 |
|
| {num} | 直前パターンのnum回繰り返し |
|
| {min,} | 直前パターンのmin回以上の繰り返し(最長一致) |
|
| {min,}? | 直前パターンのmin回以上の繰り返し(最短一致) |
|
| {min,max} | 直前パターンのmin回以上、max回以下の繰り返し(最長一致) |
|
| {min,max}? | 直前パターンのmin回以上、max回以下の繰り返し(最短一致) |
|
| ^(?!.*文字列).*$ | 文字列を含まない |
|
