こんな悩みを解決できます!
営業職から会社員WEBエンジニア、
その後フリーランスWEBエンジニアに転向した自分が解説します。
この記事では「これを使っておけばOK!」という正規表現チェッカーの紹介と、その他のおすすめチェッカーとの比較や使い方をご紹介します。
この記事を読み終えれば、お気に入りの正規表現チェッカーが見つかっているはずですよ!
目次
正規表現とは?
正規表現とは^
や$
などの特殊な記号を使うことで、複数の文字列をたった一つの文字列で表す方法です。
例えば以下の文字列が電話番号かどうか判別してくださいと言われたらどうするでしょうか?
090-XXXX-XXXX /* X = 数字 */
人間からすれば一目見て電話番号だとわかりますが、コンピュータはそうはいきません。
コンピュータに「090-0000-0000
は電話番号だよ、090-0000-0001
は電話番号だよ、090-0000-0002
は、、」と1つずつ教えれば判別してくれますが、無駄が多すぎです。
そこで「先頭に0~9までの数字が3つ、その後にハイフン、その後ろに...」のように電話番号とはどんなパターンの文字列なのかを説明してあげればよいではないか。と昔の偉い人は考えました。
その説明をするために必要なのが正規表現です。
電話番号を正規表現で書くと以下のようになります。
[0-9]{3}-[0-9]{4}-[0-9]{4}
/* = 左から、0~9の数字が3つ、ハイフン1つ、0~9の数字が4つ、ハイフン1つ、0~9の数字が4つある文字列 */
この正規表現を使えば、コンピュータ側が電話番号というものを理解し、大量の文章の中から電話番号だけを取得するといったことが可能になります。
このように欲しい文字列のパターンを指定することで1つの文字列で複数の文字列を表すことができるのが正規表現です。
正規表現チェッカーはなぜ必要なのか?
上の例のように、正規表現は人間からするとややわかりづらいです。
なのでその正規表現が意図したものになっているかチェックする必要がありますが、PHPコード上のチェックでは手間がかかり、出力結果もわかりづらくなりがちです。
しかし正規表現チェッカーではお手軽かつ視覚的にもわかりやすくチェック結果を出力してくれます!
正規表現チェッカーを使えば、チェックしたい正規表現とマッチ対象の文字列を入力するだけでマッチ確認、置換結果確認、マッチした文字列のリスト出力などなど...さまざまな機能を提供してくれます!
正規表現を扱う上でこんなに便利なものはないので、積極的に活用することをおすすめします!
結局どれを使えばいいの?
結論から言うとregex101が圧倒的におすすめです。
理由はダントツで高機能だからです。
正規表現チェックや置換機能はもちろん、正規表現解説やステップ数(≒ 正規表現のパフォーマンス)の確認機能まで搭載されています。
さらに、PHPだけでなくJavaScriptやPython、Javaなどさまざまな言語に対応しているので、正規表現に関してはこのツールを使っておけば間違いない!と断言できます。
ただあまりにも多機能だったり、使い方が一目ではわかりづらかったりと、初心者の方には合わない可能性もあります。
そういった方はこの後紹介するその他の正規表現チェッカーも検討してみてください。
PHP用の正規表現チェッカーおすすめ3選
ここからは、regex101も含めたおすすめ正規表現チェッカーを3つ紹介します。
1 : regex101
自分が把握している正規表現チェッカーの中で最も高機能です。
このツールには正規表現チェッカーに必要なほぼ全ての機能が搭載されています。
特にデバッグ機能では正規表現がマッチするまでにかかったステップ数、つまり正規表現のパフォーマンスを計測することができます。
普段あまり気にすることはないかもしれませんが、上級者の方にはこれほど便利な機能はないと思います。
またPHP以外の言語にも対応しており、迷ったらこちらを選んでおけば問題ないでしょう。
2 : RegExr
機能的にはregex101にやや劣りますが、デザインが洗練されており、使用方法も視覚的にわかりやすいです。
デバッグ機能なんて使わないし、regex101は見た目がちょっと無骨すぎるな...という方にはこちらをおすすめします。
3 : Live Regex
こちらはPHP特化型の正規表現チェッカーです。
PHPの正規表現処理に使われるpreg_match
やpreg_replace
などの関数の実行結果を確認することができます。
各チェッカーの機能早見表
ここまで紹介してきた正規表現チェッカー3つの機能を表にまとめました。
それぞれの項目の説明は以下の通りです。
- マッチ ... 正規表現が対象の文字列にマッチするか確認できる機能
- 置換 ... マッチした文字列を置換する機能
- リスト ... マッチした文字列をリストとしてまとめて確認できる機能
- デバッグ ... 正規表現がマッチするまでの処理手順や試行回数を確認できる機能
- 視覚化 ... 正規表現を視覚的に表示する機能
- コードジェネレーター ... 入力した正規表現と対象文字列を元にコードを生成する機能
マッチ | 置換 | リスト | 視覚化 | デバッグ | コード ジェネレーター | |
---|---|---|---|---|---|---|
regex101 | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ |
RegExr | ◯ | ◯ | ◯ | ◯ | × | × |
Live Regex | ◯ | ◯ | ◯ | × | × | × |
各チェッカーの使い方
1 : regex101
最もおすすめのregex101から説明していきます。
ここでは4つの機能の使い方を説明します!
- 基本の使い方(正規表現マッチ)
- 置換機能
- リスト出力機能
- デバッグ機能
1 : 基本の使い方(正規表現マッチ)
① 『FLAVOR』欄で『PCRE2 (PHP >=7.3)』を選択
② 『REGULAR EXPRESSION』欄に正規表現を入力
③ 『TEST STRING』欄にチェック対象の文字列を入力
そうすると、『TEST STRING』に入力した文字列のうち、正規表現にマッチしたものだけマーキングされます。
ちなみに ( ) でグループ指定などしているとマーキング色を分けてくれるので、視覚的にどの正規表現がどことマッチしているかがわかりやすいです。
『REGULAR EXPRESSION』欄に正規表現を入力すると、自動的に『EXPLANATION』欄で正規表現の解説をしてくれます。
また、『MATCH INFORMATION』欄では正規表現にマッチした文字列(とグループ化していればその文字列)をリスト表示してくれます。
2 : 置換機能
① 画面左『FUNCTION』で『Substitution』を選択
② 画面中央の『SUBSTITUTION』欄に置換文字列を入力
すると下に置換結果を出力してくれます!
3 : リスト出力機能
① 画面左『FUNCTION』で『List』を選択
② 画面中央の『List』欄にリスト出力形式を入力
これでマッチ結果をリスト化して出力してくれます。
マッチした文字列を出力してほしい場合は「$0」と入力してください!
4 : デバッグ機能
画面中央の『Tool』欄で『Regex Debugger』をクリック
すると以下のような画面が出てきます。
① 左側の『MATCH』でチェックしたいマッチを選択
② 右側の『MATCH STEPS』で合計ステップ数やステップごとの処理内容を確認
ややわかりづらいですが、上記の例だと「1つ目のマッチに合計5ステップかかった」ということがわかります。
このステップ数が異常に多い場合は正規表現の見直しをした方が良いですね。
また『MATCH STEPS』の再生ボタンや、矢印ボタンを押すことで各ステップで対象文字列のどこをチェックしているのかが視覚的にわかり便利です。
2024年4月現在デバッグ機能に対応しているのはPCREのみです。
2 : RegExr
ここでは3つの機能の使い方を説明します。
- 正規表現マッチ
- 置換機能
- リスト出力機能
1 : 正規表現マッチ
① 右上の言語選択で『PCRE』を選択
②『Expression』欄に正規表現を入力
③ 『Text』欄にチェック対象の文字列を入力
そうすると、『Text』に入力した文字列のうち、正規表現にマッチしたものだけ青くマーキングされて表示されます。
また、画面下の『Tool』欄ではいくつかモードが選べるのですが、デフォルトでは『Explain』になっており、入力した正規表現の解説をしてくれます。
2 : 置換機能
『Tool』のモードを『Replace』にすると置換結果を確認することができます。
置換文字を赤枠のエリアに入力すると下に置換結果が表示されます。
3 : リスト出力機能
『Tool』のモードを『List』にするとキャプチャした文字列などの一覧を表示してくれます。
また、赤枠の部分で出力形式を変更することも可能です。
マッチした文字列を出力してほしい場合は「$0」と入力してください!
3 : Live Regex
PHPの関数ごとに全部で5つの機能がありますが、割愛して2つのみ紹介します。
- 正規表現マッチ
- 置換機能
1 : 正規表現マッチ
① 『Regex』欄にチェックしたい正規表現を入力
② 『Your search string(s)』欄にチェック対象の文字列を入力
するとこのように preg_match の実行結果を表示してくれます!
2 : 置換機能
① 『preg_replace』を選択
② 『Replacement』欄に置換文字列を入力
すると下に preg_replace の実行結果を表示してくれます。(折り返してくれないのが残念ですが、、)
まとめ
ここまでで紹介した正規表現チェッカーからお気に入りを見つければ、今後は正規表現チェックに手間取ることもなくなり、業務効率UP間違いなしです。
最後にもう一度おすすめの正規表現チェッカーをまとめておきます。
正規表現を1から勉強したい!という方はこちらの書籍がおすすめです。
なんとなく初心者にとっつきにくいイメージがあるオライリー本ですが、こちらは正規表現に馴染みのない方でも読みやすく、初心者にもおすすめです!