PHPで正規表現入門!7分で書き方・チェッカーツールの使い方を学ぼう

PHPでは、正規表現を使用して、文字列を検索・置換・抽出することができます。しかし、正規表現にはさまざまなパターンがあり、とっつきにくいという点もあります。そこで、この記事では

  • preg_matchの使い方
  • preg_replaceの使い方
  • preg_match_allの使い方
  • 正規表現のパターンが正しいかチェックするツールの使い方
  • その他の正規表現チェッカーの使い方

というように、基本的な内容から解説していきます。今回はそんなPHPの正規表現によるマッチング方法とチェッカーの使い方について、わかりやすく解説します!

正規表現とは?

正規表現とは、文字列の集合を1つの形式で表現する方法です。1つの形式でさまざまな意味を持たせることによって、特定の文字列を検索したり、置換することが可能です。

なお、正規表現はほとんどのプログラミング言語で使うことができます。「メールアドレス」、「電話番号」、「URL」、「ID・パスワード」、「大文字小文字」などのチェックに便利です。

書き方もとても簡単で、アルファベットの小文字のみを抽出したい場合、PHPでは以下のように記述します。

上のサンプルでは、preg_grep関数を使用して、引数に正規表現パターン’/[a-z]/‘(アルファベットの小文字aからzが存在するか?)を指定しています。

正規表現のパターン構文は以下のサイトを参照してください。
http://php.net/manual/ja/reference.pcre.pattern.syntax.php

正規表現チェッカーとは?

正規表現はさまざまなパターンがあり、パターンを組み合わせて文字列を抽出する必要があるため、全てのパターンを覚えるのは難しい言えるでしょう。

そのため、PHPでは正規表現を使用する関数に正規表現チェッカーが用意されており、コーディング前に指定した正規表現のパターンが正しいかチェックすることができます。

なお、正規表現を使用した文字列の抽出・置換する方法については、以下の記事で詳しく解説しています!


【PHP入門】正規表現で置換する方法
更新日 : 2019年5月20日

【PHP入門】正規表現で検索・抽出・置換する5つの関数を使い倒せ!
更新日 : 2019年5月11日

preg_matchによるマッチング

preg_matchの使い方

preg_match関数は、指定した正規表現パターンにマッチした文字列を検索します。

書き方:

引数:

  • 正規表現パターン:マッチさせたいパターンを指定します。
  • 検索対象の文字列:正規表現でマッチさせる対象文字列を指定します。
  • 検索結果の配列:指定した場合、検索結果が代入されます。
  • フラグ:「PREG_OFFSET_CAPTURE」を指定した場合、マッチした文字列の登場した位置(オフセット)をバイト数で取得できます。
  • 検索開始位置:デフォルトでは検索は対象文字列の先頭から開始されますが、検索の開始位置をバイト単位で指定することができます。

返り値:パターンにマッチした場合は1を返し、マッチしない場合は0を返します。

preg_match関数を使用したサンプルです。

サンプルプログラム:

実行結果

「preg_match(‘/PHP/’, $str)」では、検索対象の文字列$strに正規表現パターン’/PHP/’がマッチするので、「1」が表示されます。

「preg_match(‘/JAVA/’, $str)」では、正規表現パターン’/JAVA/’がマッチしないので、「0」が表示されます。

正規表現チェッカー(preg_match)

preg_match関数の正規表現チェッカーは、以下で行います。
http://php-regexp.a-zumi.net/

  • 文字列:正規表現での検索対象文字列を入力
  • 正規表現:正規表現パターンを入力
  • 結果:検索結果を出力

※以降のpreg_match、preg_match_all関数も同様

以下では指定した文字列に対して、YYYY/mm/dd形式の日付が存在するか正規表現でチェックを行い、マッチした文字列を戻り値の配列で結果に出力しています。

seiki1

引用元:正規表現チェッカー https://php-regexp.a-zumi.net/

preg_replaceによる置き換え

preg_replaceの使い方

preg_replace関数は、指定した正規表現パターンにマッチした文字列の検索及び置換を行います。

書き方:

引数:

  • 正規表現パターン:マッチさせたいパターンを指定します。文字列、または配列が指定できます。
  • 置換を行う文字列:正規表現にマッチした文字列が、この文字列に置換されます。
  • 検索対象の文字列:正規表現でマッチさせる対象文字列を指定します。
  • 置換を行う最大回数:置換を行う最大回数を指定できます。デフォルトは制限なし(-1)です。
  • 置換回数:指定した場合、置換回数が代入されます。

返り値:パターンにマッチした文字列を置換して返します。

preg_replace関数を使用したサンプルです。

サンプルプログラム:

実行結果:

検索対象の文字列$strで‘/PHP/’にマッチした部分が、’JAVA’に置換されます。

正規表現チェッカー(preg_replace)

preg_replace関数の正規表現チェッカーは、以下で行います。
http://php-regexp.a-zumi.net/preg_replace

以下では指定した文字列に対して、(\d{4})(日付の4文字)での正規表現でチェックを行い、マッチした場合は置換後の文字列を結果に出力しています。

seiki2

引用元:正規表現チェッカー https://php-regexp.a-zumi.net/preg_replace

また、preg_replace関数のチェッカーは「エスケープシーケンス」「メタ文字」「文字クラス」「量指定子」など正規表現を細かく指定することができます。

preg_match_allによる繰り返しマッチング

preg_match_allの使い方

preg_match_all関数は、繰り返し正規表現の検索を行う場合に使用します。

書き方:

引数:

  • 正規表現パターン:マッチさせたいパターンを指定します。
  • 検索対象の文字列:正規表現でマッチさせる対象文字列を指定します。
  • 検索結果の配列:フラグで指定した形式で、検索結果が代入されます。
  • フラグ:検索結果を代入する形式を指定します。
  • 検索開始位置:デフォルトでは検索は対象文字列の先頭から開始されますが、検索の開始位置をバイト単位で指定することができます。

返り値:
パターンがマッチした総数を返します。

preg_match_all関数を使用したサンプルです。

サンプルプログラム:

実行結果:

検索対象の文字列$strで、正規表現パターン’/PHP/’が2つマッチするので、「2」が表示されます。

正規表現チェッカー(preg_match_all)

preg_match_all関数の正規表現チェッカーは、以下で行います。
http://php-regexp.a-zumi.net/preg_match_all

以下では指定したメールアドレスを、正規表現で記号ごとに区切って指定し、マッチした場合はメールアドレスの各文字列を多次元配列で出力しています。

seiki3

引用元:正規表現チェッカー https://php-regexp.a-zumi.net/preg_match_all

その他の正規表現チェッカー

正規表現をチェックするには、以下のサービスでも可能です。

正規表現チェッカー

正規表現チェッカーは、PHPのpreg_match関数とJavaScriptのmatch関数の実行結果を返してくれるツールです。

正規表現チェッカー:http://okumocchi.jp/php/re.php

正規表現のリファレンスとサンプルも用意されているため、正規表現のメタ文字を忘れてしまった場合でも便利です。

chekker

引用元:正規表現チェッカー http://okumocchi.jp/php/re.php

正規表現デバッグツール

正規表現デバッグツールは、PHPのpreg系の正規表現をテストするためのツールです。

LANDHERE 正規表現デバッグツール:http://landhere.jp/services/etc/preg_test.php

パターン修飾子の一覧も詳細に説明していますので、正規表現について不慣れな方は一読されることをオススメします。また、最新のPHPでは非対応となったパターン修飾子「e」は使用できないようになっています。

pettern

引用元:LANDHERE 正規表現デバッグツール http://landhere.jp/services/etc/preg_test.php

PHPについてもっと知りたい方へ

いかがでしたか?

PHPはさまざまで方法で正規表現で検索できることや、公式で便利なチェックツールが用意されていることがわかりましたね!

「PHPについて実はいまいちわかっていない・・・」「もっとPHPについて詳しく知りたい!」と思っている方は以下の記事も参考にしてみてください。

まとめ

今回は、正規表現を使用して、文字列を検索・置換・抽出する方法と、正規表現チェッカーについて説明しました。

正規表現を使用して文字列を検索・置換・抽出する処理は、よく使用しますのでこの機会にぜひ覚えておきましょう。もし、正規表現によるマッチング方法やチェッカーについて忘れてしまったら、この記事を思い出してくださいね!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

ヤマシタ

エンジニア歴10年のフリーランスエンジニア。ITに関わるさまざまなコンテンツの企画・制作も行っています。
ITに関してはノウハウ系、ライフハック系、トレンド系など、200本以上の執筆経験があります。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説