ホームページ >バックエンド開発 >PHPチュートリアル >PHP正規表現に関する注意事項
コンピューターでは、必要なファイルを見つけるために (ワイルドカード文字) をよく使用します。たとえば、*.doc (* は 0 個以上の文字と一致することを意味します)。正規表現もテキストの一致に使用されるツールですが、より強力です。 PHP マニュアルから文を引用すると、次のようになります。 正規表現は、ターゲット文字列に左から右に一致するパターンです。ほとんどの文字は、それ自体に一致するパターンを表します。
正規表現について予備的に理解していただくために、いくつかの簡単な例を以下に示します。
hi //匹配英文字符(忽略大小写) hi , HI , Hi , hI
\bhi\b //匹配英文单词 hi '\b'是正则里的一特殊字符(一种断言),表示单词边界
\bhi\b.*\bLucy\b //匹配如:'hi my name is Lucy' '.' 表示匹配除换行符以外的任意字符 '*' 是量词,表示重复零次或更多次
0\d{2}-\d{8} //匹配如: 020-12345678 '\d' 匹配一个数字(0-9) '{n}' 重复n次,如{2} {8}
上記の例では、 b 、 . 、 * 、 d 、 {2} はすべて特別な意味を持ちます。これについては以下で説明します。
PHP では、POSIX と PCRE の 2 種類の正規表現がサポートされています。 PHP 5.3.0 以降、POSIX 正規表現拡張機能は非推奨になりました。したがって、以下の説明は PCRE モードに基づいています。クリックすると、POSIX 正規表現との違いおよび perl との違いが表示されます。
PCRE 関数を使用する場合、パターンを閉じてデリミタで囲む必要があります。区切り文字には、英数字、バックスラッシュ、または空白文字以外の任意の文字を使用できます。一般的に使用される区切り文字は、スラッシュ /、ハッシュ記号 #、および否定記号 ~ です。次の例はすべて、正当な区切り文字を使用したパターンです。
/foo bar/#^[^0-9]$#+php+%[a-zA-Z0-9_-]%
パターン内で区切り文字を一致させる必要がある場合は、バックスラッシュでエスケープする必要があります。パターン内で区切り文字が頻繁に発生する場合は、読みやすさを向上させるために他の区切り文字を使用することをお勧めします。例:
/http:\/\//#http://#
正規表現の威力は、パターンを選択して繰り返す機能にあります。一部の文字には特別な意味が与えられており、それ自体を単に表すのではなく、パターン内で特別な意味を持つエンコードされた文字は メタ文字 と呼ばれます。
2 つの異なるメタキャラクターがあります。1 つはパターン内の角括弧の外側のどこでも使用でき、もう 1 つは角括弧内で使用する必要があります。
角括弧の外側で使用されるメタキャラクタは次のとおりです:
/ | 一般に文字をエスケープするために使用されます |
^ | ターゲットの開始位置 (または複数行モードの行の開始位置) をアサートします。 |
$ | ターゲットの終了位置 (または複数行モードの行末) をアサートします |
. | 改行を除く任意の文字と一致します (デフォルト) |
[ | 開始文字クラス定義 |
] | 文字クラス定義の終了 |
| | オプションの分岐の開始 |
( | サブグループの開始タグ |
) | サブグループマーカーの終了 |
? | a: 量指定子として、0 または 1 の一致を示します。 b: 量指定子の後に位置し、量指定子の貪欲な特性を変更するために使用されます。 ... |
since 量指定子の終了タグを定義します | |
コード 説明 | |
エスケープ文字 | |
最初の文字 (角括弧内) として使用される場合のみ、文字クラスが反転 |
文字範囲をマーク
任意の 10 進数 | |
任意10 進数以外の数値 | |
任意の水平空白文字 (PHP 5.2.4 以降) | |
任意の非水平空白文字 (PHP 5.2.4 以降) | |
どれでも空白文字 | |
任意の非空白文字 | |
任意の垂直空白文字 (PHP 5.2.4 以降) | |
任意の非垂直空白文字スペース文字 (PHP 5.2 以降) 4 ) | |
Word の文字とは、任意の文字、数字、アンダースコアを指します。 | |
単語以外の文字 |
b 単語境界
0 回以上繰り返し、同等to | |
1 回以上繰り返し、 | |
0 回または 1 回繰り返し、 | |
を n 回繰り返します | |
n回以上繰り返します | |
n〜m回繰り返します |