PHP 正規表現
正規表現とは
正規表現は、検索パターンを形成する一連の文字です。テキスト内のデータを検索する場合、この検索パターンを使用して検索内容を説明できます。
正規表現は、1文字の場合もあれば、より複雑なパターンの場合もあります。
正規表現を使用して、すべてのタイプのテキスト検索およびテキスト置換操作を実行できます。
構文
PHPでは、正規表現は区切り文字、パターン、およびオプションの修飾子で構成される文字列です。
上記の例では、/
それは区切り文字、*TECH I.S.*は検索されるパターン、i
は検索で大文字と小文字を区別しないようにする修飾子です。
区切り文字には、文字、数字、バックスラッシュ、スペース以外の任意の文字を使用できます。最も一般的な区切り文字はスラッシュ (/) ですが、パターンにスラッシュが含まれている場合は、#や~などの他の区切り文字を選択すると便利です。
正規表現関数
PHP には、正規表現を使用できるさまざまな関数が用意されています。preg_match()
、preg_match_all()
とpreg_replace()
関数は、最も一般的に使用されるものの一部です。
関数 |
説明 |
---|---|
preg_match() | パターンが文字列で見つかった場合は1を返し、そうでない場合は0を返します。 |
preg_match_all() | 文字列内でパターンが見つかった回数を返します。これは0の場合もあります |
preg_replace() | 一致したパターンが別の文字列に置き換えられた新しい文字列を返します。 |
preg_match() の使用
preg_match()
関数は、文字列にパターンの一致が含まれているかどうかを示します。
例
正規表現を使用して、大文字と小文字を区別せずに文字列内の「tech i.s.」を検索します。
preg_match_all()の使用
preg_match_all()
関数は、文字列内のパターンに対して見つかった一致の数を示します。
例
正規表現を使用して、文字列内の「ain」の出現回数を大文字と小文字を区別せずにカウントします。
preg_replace()の使用
preg_replace()
関数は、文字列内のパターンのすべての一致を別の文字列に置き換えます。
例
大文字と小文字を区別しない正規表現を使用して、文字列内のMicrosoftをTech I.S.に置き換えます。
正規表現修飾子
修飾子は、検索の実行方法を変更できます。
修飾子 |
説明 |
---|---|
i | 大文字と小文字を区別しない検索を実行します。 |
m | 複数行検索を実行します (複数行を検索するパターン
文字列の先頭または末尾は、先頭または末尾と一致します |
u | UTF-8でエンコードされたパターンの正しい一致を有効にします |
正規表現パターン
ブラケットは、文字の範囲を見つけるために使用されます。
表現 |
説明 |
---|---|
[abc] | 括弧内のオプションから1文字を見つけます。 |
[^abc] | 角かっこの間にない任意の文字を検索します。 |
[0-9] | 0から9の範囲から1文字を検索します。 |
メタキャラクター
メタ文字は、特別な意味を持つ文字です。
メタキャラクター |
説明 |
---|---|
| | | | で区切られたパターンのいずれかに一致するものを見つけます。次のように: cat|dog|fish |
. | 任意の文字のインスタンスを1つだけ検索する |
^ | ^Hello のように、文字列の先頭として一致を検索します。 |
$ | 次のように、文字列の末尾で一致を検索します: World$ |
\d | 数字を見つける。 |
\s | 空白文字を見つける。 |
\b | 次のような単語の先頭で一致を検索します: \bWORD、または次のような単語の末尾: WORD\b |
\uxxxx | 16進数 xxxx で指定された Unicode文字を検索します。 |
数量詞
量指定子は量を定義します:
数量詞 |
説明 |
---|---|
n+ | 少なくとも 1 つを含む任意の文字列に一致します。n |
n* | 0回以上の出現を含む任意の文字列に一致します。n |
n? | 0回または1回の出現を含む任意の文字列に一致します。n |
n{x} | シーケンスを含む任意の文字列に一致しますX ns |
n{x,y} | XからYのシーケンスを含む任意の文字列に一致しますns |
n{x,} | 少なくとも X のシーケンスを含む任意の文字列に一致しますns |
注:式で特殊文字の1つを検索する必要がある場合は、バックスラッシュ( \ )を使用してそれらをエスケープできます。たとえば、1つまたは複数の疑問符を検索するには、次の式を使用できます: $pattern = '/\?+/' ;
グループ化
括弧を使用できます( )
パターン全体に数量詞を適用します。また、一致として使用するパターンの一部を選択するためにも使用できます。
例
グループ化を使用して、*ba*とその後に続く2つの*na*のインスタンスを検索して、単語「banana」を検索します。:
完全な正規表現リファレンス
完全なリファレンスについては、完全な PHP 正規表現リファレンスを参照して下さい。
このリファレンスには、すべての正規表現関数の説明と例が含まれています。
プログラミング学習を加速させる
プログラミングをプロの講師に教えてもらいませんか。