はい、承知いたしました。「正規表現をオンラインで試す方法【初心者向けガイド】」の詳細な説明を含む記事を約5000語で記述し、直接表示します。
正規表現をオンラインで試す方法【初心者向け徹底ガイド】
はじめに
プログラミング、データ処理、テキスト編集など、様々な場面で非常に強力な力を発揮するツール、それが「正規表現」です。膨大なテキストの中から特定のパターンを見つけ出したり、形式をチェックしたり、文字列を効率的に置換したりと、一度使い方をマスターすれば、あなたの作業効率は飛躍的に向上するでしょう。
しかし、正規表現はその特殊な記号(メタ文字)の組み合わせが複雑に見えやすく、「とっつきにくい」「難しい」と感じる方も少なくありません。特に、自分で考えた正規表現が意図通りに機能するかどうかを確認する際、プログラムに組み込んで実行するたびに試行錯誤するのは非常に手間がかかります。
そこで初心者の方にぜひ活用していただきたいのが、「オンライン正規表現テスター」です。これは、Webブラウザ上で正規表現と対象のテキストを入力するだけで、リアルタイムにマッチング結果を確認できる便利なツールです。環境構築も不要で、すぐに使い始めることができます。
この記事では、正規表現の基本的な考え方から、なぜオンラインテスターが便利なのか、そして具体的なおすすめテスターの使い方までを、初心者の方でも理解できるように丁寧に解説します。約5000語のボリュームで、オンラインテスターを使った実践的な練習方法や、よくある疑問、さらには知っておくと役立つ発展的な情報まで、網羅的にご紹介します。
この記事を読み終える頃には、あなたはオンラインテスターを使いこなし、正規表現を効率的に学び、デバッグできるようになっているはずです。さあ、正規表現マスターへの第一歩を踏み出しましょう!
目次
- 正規表現とは?なぜ学ぶ価値があるのか?
- なぜオンラインテスターが便利なのか?
- 正規表現の基本概念のおさらい (テスターでの見方を含めて)
- リテラル文字
- メタ文字 (., *, +, ?, {}, [], (), |, ^, $)
- エスケープ
- 量指定子
- 文字クラス
- グループ化とキャプチャ
- 代替 (or)
- アンカー (^, $)
- フラグ/オプション (g, i, m)
- おすすめのオンライン正規表現テスター紹介
- Regex101: 機能性・網羅性でトップクラス
- Regexr: 視覚的で初心者フレンドリー
- Debuggex: 正規表現を図で理解
- その他のテスター
- オンラインテスターを使った実践的なステップ
- ステップ1: テスターを選ぶ
- ステップ2: テストテキストを入力する
- ステップ3: 正規表現を入力する
- ステップ4: マッチ結果を確認する
- ステップ5: ExplanationやDebuggerを活用する
- ステップ6: 正規表現を調整する
- ステップ7: フラグを試す
- ステップ8: 異なるフレーバーで試す
- 具体的な使用例とデモ (Regex101を中心に)
- 例1: 簡単な単語の検索
- 例2: 数字列の検索
- 例3: 特定のパターンの日付の抽出
- 例4: メールアドレスの基本的な検証 (簡易版)
- 例5: 特定のタグ属性値の抽出
- 例6: 文字列の置換 (Substitution機能)
- オンラインテスターを使いこなすためのヒント
- 正規表現の「フレーバー」とは?テスターでの扱い
- 正規表現のデバッグ方法 (テスターの活用)
- 正規表現を学ぶ上での注意点
- まとめ
1. 正規表現とは?なぜ学ぶ価値があるのか?
正規表現(Regular Expression、略称: RegEx または RegExp)とは、文字列のパターンを表現するための特殊な記号列です。これは、文字通り「正規の表現」ではなく、「規則的な表現」あるいは「定型的な表現」といった意味合いが近いです。
たとえば、「電話番号の形式になっている文字列を見つけたい」「メールアドレスの入力が正しい形式かチェックしたい」「すべてのHTMLタグを削除したい」「特定のキーワードが含まれる行だけを抽出したい」といった場面で、正規表現は絶大な威力を発揮します。
なぜ正規表現を学ぶ価値があるのでしょうか?
- 強力な検索・抽出機能: 通常のキーワード検索では難しい、「○○で始まり、△△で終わり、その間に数字が3つ並んでいる」といった複雑なパターンを持つ文字列を正確に見つけ出すことができます。
- 効率的な置換: 見つけ出したパターンを別の文字列に置き換えることができます。例えば、「すべてのハイフンをスラッシュに置き換える」だけでなく、「YYYY-MM-DD形式の日付をDD/MM/YYYY形式に変換する」といった構造的な置換も可能です。
- 入力検証 (バリデーション): ユーザーが入力したデータが、期待する形式(メールアドレス、郵便番号、URLなど)になっているかを簡単にチェックできます。
- 作業の自動化: テキストエディタ、プログラミング言語、各種ツールなどで正規表現を利用することで、手作業では時間のかかる定型的なテキスト処理を自動化できます。
- 汎用性の高さ: 正規表現の文法は、多くのプログラミング言語 (Python, Java, JavaScript, Ruby, PHP, Perlなど)、テキストエディタ (VS Code, Sublime Text, Atomなど)、シェルスクリプト、データベースなどで共通して利用できます。一度学べば、様々な環境でその知識を活かせます。
もちろん、正規表現は最初は少し難解に感じるかもしれません。しかし、基本的な記号の意味を理解し、繰り返し練習することで、徐々に使いこなせるようになります。そして、その学習を強力にサポートしてくれるのが、オンライン正規表現テスターなのです。
2. なぜオンラインテスターが便利なのか?
正規表現を学ぶ際、そして実際に使う際に、オンラインテスターは欠かせないツールです。なぜなら、以下のようなメリットがあるからです。
- 環境構築が不要: Webブラウザさえあれば、特別なソフトウェアのインストールや設定は一切不要です。すぐにアクセスして使い始めることができます。
- リアルタイムな結果表示: 入力した正規表現とテキストに対して、マッチする部分が即座にハイライト表示されます。これにより、自分が書いた正規表現がどのように機能するのかを視覚的に、かつリアルタイムに確認できます。
- 試行錯誤がしやすい: 正規表現は一度で完璧に書けることは稀です。オンラインテスターなら、少し正規表現を変更するたびに即座に結果が更新されるため、細かく調整しながら理想のパターンを作り上げていくことができます。
- デバッグの強力な味方: なぜ意図した部分がマッチしないのか、あるいは意図しない部分がマッチしてしまうのか。多くのテスターには、正規表現がテキストのどの位置でどのように処理されているかをステップごとに追跡できるデバッグ機能や、正規表現の各要素が何にマッチしているかを説明してくれる機能があります。これらは、正規表現の仕組みを理解し、問題を特定する上で非常に役立ちます。
- 異なる言語の「フレーバー」に対応: 正規表現の文法は多くの環境で共通していますが、実は微妙な違い(「フレーバー」と呼ばれます)が存在します。オンラインテスターでは、JavaScirpt、Python、Java、PCRE (PHPなどで使われる)、.NETなど、様々なフレーバーを選択して試すことができます。自分が実際に使う環境に合わせてテストできるのは大きな利点です。
- 学習ツールとして最適: 各記号の意味を調べながら、実際にテスターでその記号がどのように働くかを確認できます。また、他の人が作った正規表現をテスターに貼り付けて、その動作を解析することも可能です。多くのテスターには、正規表現の構文を解説するチートシートやリファレンス機能も備わっています。
- 共有の容易さ: 作成した正規表現とテストテキスト、さらには設定したオプションなどを、ユニークなURLとして保存・共有できるテスターもあります。これにより、他の人に質問したり、共同で作業したりする際に非常に便利です。
これらの理由から、正規表現を学ぶ初心者の方だけでなく、経験豊富なプロフェッショナルにとっても、オンラインテスターは必須のツールと言えます。
3. 正規表現の基本概念のおさらい (テスターでの見方を含めて)
ここでは、正規表現の基本的な構成要素をいくつか紹介します。それぞれの概念がオンラインテスター上でどのように結果に影響するかにも触れながら説明します。
オンラインテスターを使う際は、主に以下の3つの領域があります。
- Regex (正規表現) 入力フィールド: あなたが考えた正規表現を入力する場所です。
- Test String (テスト文字列) 入力フィールド: 正規表現を適用したい、検証したいテキストを入力する場所です。
- Results/Matches (結果/マッチ) 表示領域: テスト文字列の中で正規表現にマッチした部分が表示されます。多くのテスターでは、マッチした部分がハイライトされます。また、どの部分がどのグループにキャプチャされたかなども表示されます。
- Explanation/Reference/Tools (解説/リファレンス/ツール) 領域: 入力した正規表現の各部分が何を意味するかを解説したり、正規表現の記号一覧を表示したり、デバッグ機能を提供したりする領域です。
これらの領域を見ながら、以下の基本概念を理解していきましょう。
-
リテラル文字 (Literal Characters)
ほとんどの文字は、そのまま入力すると自分自身にマッチします。例えば、正規表現
abc
は、テキスト中の「abc」という連続した文字列にマッチします。
* テスターでの見方: テスト文字列に「xyzabc123」と入力し、正規表現に「abc」と入力すると、「abc」の部分がハイライトされます。 -
メタ文字 (Meta Characters)
特定の特別な意味を持つ文字です。正規表現のパワーの源ですが、最初は少し戸惑うかもしれません。よく使うものをいくつか挙げます。
-
.
(ドット): 改行文字 (\n
) を除く任意の一文字にマッチします。- 例: 正規表現
a.c
は、「abc」「adc」「a0c」「a*c」など、”a”と”c”の間に何かしら一文字が入るパターンにマッチします。 - テスターでの見方: テスト文字列に「axc ayc azc」と入力し、正規表現に「a.c」と入力すると、「axc」「ayc」「azc」のそれぞれがハイライトされます。
- 例: 正規表現
-
*
(アスタリスク): 直前の要素が0回以上繰り返されることにマッチします。- 例: 正規表現
ab*c
は、「ac」(bが0回)、「abc」(bが1回)、「abbc」(bが2回)などにマッチします。 - テスターでの見方: テスト文字列に「ac abc abbc abbbc」と入力し、正規表現に「ab*c」と入力すると、すべての文字列がマッチとしてハイライトされます。
- 例: 正規表現
-
+
(プラス): 直前の要素が1回以上繰り返されることにマッチします。- 例: 正規表現
ab+c
は、「abc」「abbc」「abbbc」などにマッチしますが、「ac」にはマッチしません(bが1回以上必要)。 - テスターでの見方: テスト文字列に「ac abc abbc abbbc」と入力し、正規表現に「ab+c」と入力すると、「abc」「abbc」「abbbc」がハイライトされ、「ac」はハイライトされません。
- 例: 正規表現
-
?
(クエスチョンマーク): 直前の要素が0回または1回存在することにマッチします。これは「省略可能」を表すことが多いです。- 例: 正規表現
colou?r
は、「color」と「colour」の両方にマッチします。 - テスターでの見方: テスト文字列に「color colour」と入力し、正規表現に「colou?r」と入力すると、両方の単語がハイライトされます。
- 例: 正規表現
-
{}
(波括弧): 直前の要素が指定した回数繰り返されることにマッチします。{n}
: ちょうどn回{n,}
: n回以上{n,m}
: n回以上m回以下- 例: 正規表現
a{3}b
は、「aaab」にマッチします。a{2,4}b
は「aab」「aaab」「aaaab」にマッチします。 - テスターでの見方: テスト文字列に「ab aab aaab aaaab aaaaab」と入力し、正規表現に「a{2,4}b」と入力すると、「aab」「aaab」「aaaab」がハイライトされます。
-
[]
(角括弧): 文字クラスと呼ばれ、括弧内の文字のいずれか一文字にマッチします。ハイフン-
を使うと範囲を指定できます(例:[0-9]
は数字一文字、[a-z]
は小文字アルファベット一文字)。キャレット^
を先頭に置くと否定になります(例:[^0-9]
は数字以外の任意の一文字)。- 例: 正規表現
[aeiou]
は、任意の一つの母音にマッチします。[0-9]{3}-[0-9]{4}
は、「数字3桁-数字4桁」のパターンにマッチします。 - テスターでの見方: テスト文字列に「hello world 12345」と入力し、正規表現に「[0-9]+」と入力すると、「12345」がハイライトされます。(
+
は直前の要素(文字クラス[0-9]
)が1回以上繰り返されることを意味します)。
- 例: 正規表現
-
()
(丸括弧): グループ化を行います。複数の要素を一つのまとまりとして扱ったり、マッチした部分を後から参照したり(キャプチャ)するために使います。- 例: 正規表現
(ab)+
は、「ab」「abab」「ababab」などにマッチします(ab
という並びが1回以上繰り返される)。グループ化しないab+
だと「abb」「abbb」などにマッチするので結果が異なります。また、グループはキャプチャ機能も持ち、後述の置換などで利用されます。 - テスターでの見方: テスト文字列に「ababab abb」と入力し、正規表現に「(ab)+」と入力すると、「ababab」がマッチします。また、多くのテスターでは、マッチ全体だけでなく、括弧で囲まれた「グループ」ごとにマッチした部分も表示してくれます(この例では「ab」がグループ1として複数回マッチしたことが示されるかもしれません)。
- 例: 正規表現
-
|
(パイプ): 代替 (OR) を表します。左辺または右辺のパターンにマッチします。- 例: 正規表現
cat|dog
は、「cat」または「dog」のどちらかにマッチします。gr(a|e)y
は、「gray」または「grey」にマッチします。 - テスターでの見方: テスト文字列に「I like cat and dog」と入力し、正規表現に「cat|dog」と入力すると、「cat」と「dog」のそれぞれが独立してマッチとしてハイライトされます。
- 例: 正規表現
-
^
(キャレット): 行の先頭にマッチします。ただし、文字クラス[]
の中に置かれた場合は否定の意味になります。- 例: 正規表現
^abc
は、「abc」で始まる行にマッチします。 - テスターでの見方: テスト文字列を複数行にし(多くのテスターは複数行入力に対応しています)、例えば1行目が「abcde」、2行目が「xxxabc」だった場合、正規表現に「^abc」と入力すると、1行目の「abc」のみがマッチとしてハイライトされます。
- 例: 正規表現
-
$
(ドル記号): 行の末尾にマッチします。- 例: 正規表現
abc$
は、「abc」で終わる行にマッチします。 - テスターでの見方: テスト文字列を複数行にし、例えば1行目が「xxxabc」、2行目が「abcde」だった場合、正規表現に「abc$」と入力すると、1行目の「abc」のみがマッチとしてハイライトされます。
- 例: 正規表現
^
と$
は合わせて使うことで、「行全体がこのパターンと完全に一致するか?」をチェックする際によく使われます。例えば、正規表現^[0-9]+$
は、「行全体が1文字以上の数字だけで構成されているか?」をチェックします。 -
-
エスケープ (Escaping)
メタ文字として特別な意味を持つ文字(
.
,*
,+
,?
,{
,}
,[
,]
,(
,)
,|
,^
,$
,\
など)を、文字通りの記号としてマッチさせたい場合は、直前にバックスラッシュ\
を付けてエスケープする必要があります。
* 例: 正規表現1\.5
は、小数点を含む「1.5」という文字列にマッチします(.
をエスケープしないと「1a5」「1b5」などにもマッチしてしまう)。正規表現\(abc\)
は、括弧を含む「(abc)」という文字列にマッチします。
* テスターでの見方: テスト文字列に「価格は1.5ドルです」と入力し、正規表現に「1.5」と入力すると「1.5」がマッチします。しかし、テスト文字列に「価格は1a5ドルです」と入力しても「1a5」がマッチしてしまいます。ここで正規表現を「1.5」とエスケープすると、「1a5」にはマッチしなくなり、「1.5」にのみマッチするようになります。 -
フラグ/オプション (Flags/Options)
正規表現のマッチング動作を制御するためのオプションです。テスターでは通常、正規表現入力フィールドの横などにチェックボックスや入力欄として表示されます。主なフラグを紹介します。
g
(Global): グローバルマッチ。マッチする最初の一箇所だけでなく、対象テキスト全体からマッチするすべての部分を見つけます。これがオフだと最初に見つかったマッチだけで終了します。多くのテスターではデフォルトでオンになっていますが、挙動を理解しておくことは重要です。i
(Case-insensitive): 大文字・小文字を区別しないマッチングを行います。- 例: フラグ
i
をつけて正規表現apple
とすると、「apple」「Apple」「APPLE」のすべてにマッチします。
- 例: フラグ
m
(Multiline): マルチラインモード。^
が行の先頭、$
が行の末尾にマッチするようになります。これがオフの場合、^
はテキスト全体の先頭、$
はテキスト全体の末尾にのみマッチします。- テスターでの見方: テスト文字列を複数行にし、フラグ
m
をオン/オフした場合で^abc
やabc$
のマッチ結果がどう変わるかを確認してみましょう。
- テスターでの見方: テスト文字列を複数行にし、フラグ
これらの基本的な概念は、オンラインテスターを使って実際に手を動かしながら学ぶのが最も効率的です。テスターの解説機能を見ながら、それぞれの記号が何にマッチしているのかをリアルタイムで確認してみてください。
4. おすすめのオンライン正規表現テスター紹介
さて、実際に正規表現を試すために、いくつか人気があって初心者にも使いやすいオンラインテスターを紹介します。それぞれ特徴があるので、いくつか試してみて、自分に合うものを見つけると良いでしょう。
-
Regex101 (https://regex101.com/)
(注: 上記はプレースホルダー画像です。実際の画面はサイトで確認してください)おそらく最も有名で、高機能なオンラインテスターです。学習用としても、実践的なデバッグ用としても非常に優れています。
-
特徴:
- Regex Explanation: 入力した正規表現の各要素(リテラル文字、メタ文字、量指定子など)が何にマッチするかを、非常に分かりやすく解説してくれます。これが Regex101 の最大の強みと言えるでしょう。初心者の方はこの機能で正規表現の仕組みを理解するのに役立ちます。
- Match Information: マッチした全体だけでなく、各キャプチャグループ(括弧
()
で囲まれた部分)が何にマッチしたかを詳細に表示します。 - Substitution: マッチした部分を別の文字列に置換する機能を試せます。後方参照(
$1
,$2
など)を使った複雑な置換も確認できます。 - Debugger: 正規表現エンジンがテスト文字列の上をどのように移動し、どこでマッチやバックトラック(後戻り)が発生しているかをステップごとに確認できます。複雑な正規表現のデバッグに非常に有効です。
- Flavors: PHP (PCRE)、JavaScript、Python、Go、Java、.NET、C++ など、非常に多くの正規表現フレーバーに対応しています。
- Sharing: 作成した正規表現、テスト文字列、オプション設定などを保存し、固有のURLで共有できます。質問する際や、チームで共有する際に便利です。
- Quick Reference: よく使うメタ文字やエスケープシーケンスなどの一覧がすぐに参照できます。
-
基本的な使い方:
- サイトにアクセスします。
- 左上の「FLAVOR」ドロップダウンから、テストしたい正規表現のフレーバーを選択します (迷ったら「PCRE (PHP & Perl)」や「JavaScript」あたりが無難です)。
- 上部の大きな入力エリアに「REGULAR EXPRESSION」を入力します。
- その下の大きな入力エリアに「TEST STRING」を入力します。
- 入力すると即座に、TEST STRING 内のマッチした部分がハイライト表示され、右側の「MATCH INFORMATION」と「REGEX EXPLANATION」が更新されます。
- 「FLAGS」セクションで、
g
,i
,m
などのフラグをオン/オフできます。 - 「SUBSTITUTION」セクションでは、置換文字列を入力して結果を確認できます。
- 「DEBUGGER」タブに切り替えると、ステップ実行でマッチング過程を確認できます。
-
初心者へのおすすめポイント: 何と言っても「REGEX EXPLANATION」機能です。自分で考えた正規表現がなぜそうなるのか、なぜマッチしないのかを理解するのに役立ちます。まずはこの機能を見ながら、基本的な正規表現を色々試してみるのが良いでしょう。
-
-
Regexr (https://regexr.com/)
(注: 上記はプレースホルダー画像です。実際の画面はサイトで確認してください)Regexr は、Regex101 と比較するとややシンプルですが、視覚的な要素が多く、初心者にとって非常に分かりやすいテスターです。
-
特徴:
- Interactive: 入力した正規表現やテストテキストに合わせて、関連する情報(マッチ、グループ、チートシートの該当部分など)がインタラクティブに変化します。
- Cheatsheet: よく使う正規表現の記号一覧が常に表示されており、クリックすると簡単な説明が表示されます。
- Reference: より詳細な正規表現のリファレンスが参照できます。
- Examples: 一般的な正規表現のサンプル集が用意されており、クリックするとテスターに反映させて試すことができます。これも学習に非常に役立ちます。
- Community Patterns: 他のユーザーが共有した正規表現パターンを見ることができます(ただし、PCREフレーバーのみ)。
- Substitution: 置換機能も備わっています。
- Visual Explanation: Regex101ほど詳細ではありませんが、マウスカーソルを正規表現の要素に合わせると簡単な説明が表示されます。
-
基本的な使い方:
- サイトにアクセスします。
- 上部の入力エリアに「EXPRESSION」を入力します。
- その下の大きな入力エリアに「TEXT」を入力します。
- 入力すると即座に、TEXT 内のマッチした部分がハイライト表示され、下部の「MATCH」セクションに詳細が表示されます。
- 右側の「FLAGS」で
g
,i
,m
などを設定できます。 - 「SUBSTITUTION」タブに切り替えると、置換文字列を入力して結果を確認できます。
- 画面右側の「CHEATSHEET」「REFERENCE」「EXAMPLES」タブで、必要な情報を参照できます。
-
初心者へのおすすめポイント: チートシートやリファレンスが常に手元に表示されている感覚で使える点、豊富なサンプル例がある点です。まずはExamplesを開いて、どんな正規表現があるのかを見て、それを少し改変して試してみることから始めると良いでしょう。
-
-
Debuggex (https://www.debuggex.com/)
(注: 上記はプレースホルダー画像です。実際の画面はサイトで確認してください)Debuggex の最大の特徴は、入力した正規表現を視覚的な図として表示してくれることです。これにより、正規表現の構造が非常に分かりやすくなります。
-
特徴:
- Visualizer: 正規表現をフローチャートのような図に変換して表示します。複雑な正規表現でも、その内部構造や分岐、繰り返しなどが直感的に理解できます。
- Matching: テストテキストを入力すると、マッチした部分がハイライトされます。
- Flavors: JavaScript, Python, PCRE (PHP/Perl) に対応しています。
-
基本的な使い方:
- サイトにアクセスします。
- 上部の入力エリアに「Your regex:」として正規表現を入力します。
- その下の入力エリアに「Your test string:」としてテスト文字列を入力します。
- 入力すると、正規表現の図が生成され、テスト文字列内のマッチした部分がハイライトされます。
- 左側のドロップダウンからフレーバーを選択できます。
-
初心者へのおすすめポイント: 正規表現の図解は、特に
|
(OR) や?
,*
,+
などの量指定子、()
(グループ) といった、複数の可能性や繰り返しを含むパターンを理解するのに非常に役立ちます。視覚的に理解したい方におすすめです。
-
-
その他のテスター
上記以外にも、多くのオンライン正規表現テスターが存在します。
- Online regex tester and debugger (regex tester)
- The best online regex tester, debugger, and converter (myregexp.com)
- Javascript regex tester with explanations (extendsclass.com)
これらのテスターも基本的な機能(正規表現入力、テスト文字列入力、マッチ結果表示、フラグ設定)を備えています。UIや追加機能(例えば、ExtendsClassはJavaScriptに特化してより詳細なJS関連情報を提供)に違いがあるので、色々試して使いやすいものを見つけると良いでしょう。
5. オンラインテスターを使った実践的なステップ
ここからは、実際にオンラインテスターを使って正規表現を学び、テストし、デバッグする具体的な手順を追ってみましょう。Regex101 を例に進めますが、他のテスターでも同様の考え方で応用できます。
-
ステップ1: テスターを選ぶ
まずは、どのテスターを使うか決めます。初心者には、Regex101 (詳細な解説)、Regexr (視覚的、例が豊富)、Debuggex (図解) が特におすすめです。この記事では Regex101 を中心に解説します。
-
ステップ2: テストテキストを入力する
正規表現でマッチさせたい、またはマッチさせたくない文字列を「TEST STRING」エリアに入力します。ポイントは、マッチさせたいパターンを含む文字列と、マッチさせたくないが似ている文字列(エッジケース)の両方を含めることです。
例えば、電話番号の正規表現をテストしたいなら:
電話番号は 03-1234-5678 です。
携帯は 090-9876-5432 です。
ハイフンなし: 01234567890
短い番号: 110
似ているが違う: abc-def-ghij
正しい形式の別の例: 045-111-2222
このように、正しい例だけでなく、間違った例や判断に迷うような例も含めておくと、正規表現が意図通りに機能するかをより正確に検証できます。 -
ステップ3: 正規表現を入力する
考えた正規表現を「REGULAR EXPRESSION」エリアに入力します。入力するたびにリアルタイムで結果が更新されます。
-
ステップ4: マッチ結果を確認する
テスト文字列の中で、正規表現にマッチした部分がハイライト表示されます。右側の「MATCH INFORMATION」エリアには、全体のマッチ(Full match)と、キャプチャグループ(Group 1, Group 2…)ごとのマッチ内容が詳細に表示されます。
- 意図通りにマッチしているか?: マッチさせたい部分がすべてハイライトされているか?
- 意図しない部分がマッチしていないか?: マッチさせたくない部分がハイライトされていないか?
- キャプチャグループは正しいか?: グループ化した部分が期待通りに抽出されているか?
これらの点を注意深く確認します。
-
ステップ5: ExplanationやDebuggerを活用する
なぜそのような結果になったのか理解できない場合は、Regex101 の「REGEX EXPLANATION」や「DEBUGGER」を活用します。
- REGEX EXPLANATION: 正規表現の各記号にマウスを合わせるか、クリックすると、その記号が何を意味し、テスト文字列のどの部分にマッチしようとしているのかが解説されます。特に複雑なパターンや初めて使う記号が出てきた際に非常に役立ちます。
- DEBUGGER: テキスト上を正規表現エンジンがどのように進んでいくかをステップ実行できます。「Next Step」ボタンを押すごとに、エンジンが1文字ずつ進む様子や、そこで正規表現のどの部分が評価され、マッチしたか/失敗したか、バックトラックが発生したかなどが表示されます。これは、正規表現が裏側でどう動いているかを理解し、複雑なバグ(なぜかマッチしない、遅いなど)の原因を特定するのに役立ちます。
-
ステップ6: 正規表現を調整する
マッチ結果やExplanation/Debuggerから得られた情報を元に、正規表現を修正します。例えば、「数字だけじゃなくて文字もマッチしてしまう」なら
.
を[0-9]
に変更する、「特定の記号も許容したい」なら文字クラス[]
にその記号を追加するなど、目的を達成するために必要な変更を加えます。修正するたびにステップ4に戻り、結果を確認します。この繰り返しが、正規表現習得の鍵です。 -
ステップ7: フラグを試す
大文字・小文字を区別したい/したくない (i)、複数行にまたがるマッチングをしたい (m)、すべてのマッチを見つけたい (g) など、正規表現の挙動を変更したい場合は、「FLAGS」セクションで適切なフラグをオン/オフします。フラグを変更すると、結果がどう変わるかを確認しましょう。
-
ステップ8: 異なるフレーバーで試す
将来的に特定のプログラミング言語やツールでその正規表現を使いたい場合は、使用する環境に合った「FLAVOR」を選択してテストします。フレーバーによって、サポートされる機能(例えば、後方参照の書き方、特定のメタ文字など)や挙動が微妙に異なることがあるため、実際に使う環境でテストすることは重要です。
-
ステップ9: 結果を共有する (必要であれば)
Regex101などのテスターでは、画面右上の「Share」ボタンなどを押すと、現在の正規表現、テスト文字列、設定などが保存された固有のURLが生成されます。正規表現について誰かに質問したいときや、他の人に自分の正規表現を見てもらいたいときに、このURLを共有すると非常に便利です。
このステップを繰り返すことで、あなたは徐々に複雑な正規表現も扱えるようになり、意図通りにパターンを表現するスキルが身についていきます。
6. 具体的な使用例とデモ (Regex101を中心に)
ここでは、いくつかの一般的なケースについて、Regex101 を使った正規表現の構築とテストのプロセスを具体的に見ていきましょう。
例1: 簡単な単語の検索
特定の単語「apple」を検索したい。ただし、大文字・小文字は区別しない。
- テスト文字列:
I have an apple, an Apple, and a big APPLE.
pineapple is also a fruit. - 正規表現:
apple
- フラグ:
i
(Case-insensitive) とg
(Global) をオンにする。 -
Regex101での入力と結果:
- FLAVOR: PCRE など任意
- REGULAR EXPRESSION:
apple
- TEST STRING: 上記の文字列を貼り付け
- FLAGS:
g
,i
にチェックを入れる
入力すると、「apple」「Apple」「APPLE」の3箇所がハイライトされます。右側の「MATCH INFORMATION」には、これらのマッチが表示されます。
「REGEX EXPLANATION」を見ると、
apple
はリテラル文字にマッチすることが解説されます。フラグi
の説明も表示され、大文字・小文字を区別しないマッチングが行われていることが確認できます。フラグg
の説明も表示され、テキスト全体からすべてのマッチを検索していることがわかります。
例2: 数字列の検索
テキスト中の連続した数字をすべて見つけたい。
- テスト文字列:
注文番号は 12345 です。
価格は 980 円です。在庫は 50 個。
電話番号: 012-345-6789 (ハイフンは除外したい)
ABC123XYZ - 正規表現:
[0-9]+
-
フラグ:
g
(Global) をオンにする。 -
Regex101での入力と結果:
- REGULAR EXPRESSION:
[0-9]+
- TEST STRING: 上記の文字列を貼り付け
- FLAGS:
g
にチェックを入れる
入力すると、「12345」「980」「50」「012」「345」「6789」「123」がハイライトされます。「REGEX EXPLANATION」を見ると、
[0-9]
は「0から9までのいずれかの数字」にマッチし、+
は「直前の要素([0-9]
)が1回以上繰り返される」ことを意味することが解説されます。これにより、「連続した数字の並び」にマッチしていることが理解できます。もし「ハイフンを含む電話番号全体」にマッチさせたい場合は、正規表現を
[0-9]+-[0-9]+-[0-9]+
のように変更するなど、目的に応じて調整します。 - REGULAR EXPRESSION:
例3: 特定のパターンの日付の抽出
「YYYY-MM-DD」形式の日付を抽出したい。
- テスト文字列:
今日の会議は 2023-10-27 です。
明日は 2023-10-28 です。
別の形式: 2023/10/29
関係ない文字列: ABC-DEF-GHIJ - 正規表現:
\d{4}-\d{2}-\d{2}
または
[0-9]{4}-[0-9]{2}-[0-9]{2}
(\d
は[0-9]
のショートハンドです) -
フラグ:
g
(Global) をオンにする。 -
Regex101での入力と結果:
- REGULAR EXPRESSION:
\d{4}-\d{2}-\d{2}
- TEST STRING: 上記の文字列を貼り付け
- FLAGS:
g
にチェックを入れる
入力すると、「2023-10-27」と「2023-10-28」がハイライトされます。「REGEX EXPLANATION」を見ると、
\d
が数字一文字、{4}
が4回繰り返し、-
がリテラルのハイフン、{2}
が2回繰り返しであることが解説されます。これにより、「数字4桁-数字2桁-数字2桁」のパターンにマッチしていることが確認できます。もし年・月・日を個別に抽出したい場合は、括弧
()
でグループ化します。
正規表現:(\d{4})-(\d{2})-(\d{2})
Regex101 の「MATCH INFORMATION」で、全体マッチ(例: 2023-10-27)の下に、Group 1 (2023), Group 2 (10), Group 3 (27) のように、それぞれのグループが抽出されていることが確認できます。これは、後述の置換機能で非常に役立ちます。 - REGULAR EXPRESSION:
例4: メールアドレスの基本的な検証 (簡易版)
簡単なメールアドレスの形式「文字+@+文字+ドット+文字」にマッチするかをチェックしたい。これはあくまで簡易版であり、実際のメールアドレスの正規表現は非常に複雑になることに注意してください。
- テスト文字列:
私のメールは [email protected] です。
友達のは [email protected] です。
無効な例: user@domain, [email protected], @domain.com - 正規表現:
\S+@\S+\.\S+
(\S
は\s
(空白文字) 以外の任意の一文字にマッチします。+
で1回以上の繰り返し。.
はメタ文字なので\.
とエスケープしています。) -
フラグ:
g
(Global) をオンにする。 -
Regex101での入力と結果:
- REGULAR EXPRESSION:
\S+@\S+\.\S+
- TEST STRING: 上記の文字列を貼り付け
- FLAGS:
g
にチェックを入れる
入力すると、「[email protected]」と「[email protected]」がハイライトされます。無効な例はマッチしません。
「REGEX EXPLANATION」を見ると、
\S+
が「空白文字以外の1文字以上」、@
がリテラルの@、\.
がリテラルのドットであることを解説されます。この簡易パターンが意図した範囲にマッチしているかを確認できます。より厳密なメールアドレス検証には、RFCに準拠した非常に複雑な正規表現が必要です。例えば、
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
のような少し複雑なパターンもテスターで試してみましょう。「REGEX EXPLANATION」を見ながら、各部分が何にマッチしているかを理解するのが学習の近道です。 - REGULAR EXPRESSION:
例5: 特定のタグ属性値の抽出
簡単なHTMLライクなテキストから、href
属性の値を抽出したい。
(注: HTMLを正規表現でパースすることは推奨されませんが、正規表現の練習としては有効です)
- テスト文字列:
html
<a href="https://www.example.com/page1">Link 1</a>
<a href="https://www.example.com/page2" class="link">Link 2</a>
<img src="image.png" alt="An image"> -
正規表現:
<a.*?href="([^"]*)"
<a
: リテラルの<a
にマッチ.*?
:a
の後からhref
までの任意の文字 (.
は任意の一文字、*
は0回以上繰り返し)。?
は「非貪欲(non-greedy)」マッチを指定します。これがないと、最初の<a
から最後の"
まで全てをマッチさせてしまう可能性があります。href="
: リテラルのhref="
にマッチ(
: キャプチャグループ開始[^"]*
: ダブルクォーテーション"
以外の文字 ([^"]
) が0回以上 (*
) 繰り返されることにマッチ。これが属性値です。"
: キャプチャグループ終了とリテラルの"
にマッチ
-
フラグ:
g
(Global) をオンにする。 -
Regex101での入力と結果:
- REGULAR EXPRESSION:
<a.*?href="([^"]*)"
- TEST STRING: 上記の文字列を貼り付け
- FLAGS:
g
にチェックを入れる
入力すると、
<a href="https://www.example.com/page1">
と<a href="https://www.example.com/page2" class="link">
の部分が全体マッチとしてハイライトされます。「MATCH INFORMATION」を見ると、これらの全体マッチの下に「Group 1」として「https://www.example.com/page1」と「https://www.example.com/page2」がそれぞれ抽出されていることが確認できます。「REGEX EXPLANATION」を見ながら、
.
が任意の一文字、*?
が非貪欲な0回以上の繰り返し、[]
が文字クラス、^
が否定、()
がキャプチャグループ、\
がエスケープであることを確認し、正規表現の各部分がどのように機能しているかを理解しましょう。 - REGULAR EXPRESSION:
例6: 文字列の置換 (Substitution機能)
「YYYY-MM-DD」形式の日付を「DD/MM/YYYY」形式に変換したい。
- テスト文字列:
開始日: 2023-10-27
終了日: 2024-01-15
無関係: 2023/10/27 - 正規表現:
(\d{4})-(\d{2})-(\d{2})
(例3で使用した、年・月・日をグループ化した正規表現) - 置換文字列 (Substitution):
$3/$2/$1
($1
は1番目のグループ、$2
は2番目のグループ、$3
は3番目のグループにマッチした内容を参照します。これを後方参照 (Backreference) と呼びます。) -
フラグ:
g
(Global) をオンにする。 -
Regex101での入力と結果:
- REGULAR EXPRESSION:
(\d{4})-(\d{2})-(\d{2})
- TEST STRING: 上記の文字列を貼り付け
- FLAGS:
g
にチェックを入れる - 画面下部の「SUBSTITUTION」エリアを開き、入力フィールドに
$3/$2/$1
を入力する。
入力すると、「SUBSTITUTION」エリアに置換結果が表示されます。
開始日: 27/10/2023
終了日: 15/01/2024
無関係: 2023/10/27
このように、正規表現で特定のパターンを特定し、グループ化によって必要な部分を抽出し、Substitution機能と後方参照を使って、抽出した部分を並べ替えたり別の文字列と組み合わせたりして置換できることが確認できます。 - REGULAR EXPRESSION:
これらの例を通して、オンラインテスターが正規表現の学習と実践にどのように役立つか、具体的なイメージが掴めたのではないでしょうか。最初は簡単なパターンから始め、テスターの解説機能を活用しながら、少しずつ複雑な表現に挑戦してみてください。
7. オンラインテスターを使いこなすためのヒント
オンラインテスターの機能を最大限に活用するために、いくつかのヒントを紹介します。
- 最初は簡単なパターンから: いきなり複雑な正規表現に挑戦せず、まずはリテラル文字、
.
,*
,+
,?
,[]
といった基本的な要素を単体や単純な組み合わせで試してみましょう。 - テストテキストを多様にする: マッチさせたい正常なパターンだけでなく、マッチさせたくない無効なパターン、境界値(例えば3桁以上、4桁未満など)、空文字列など、様々なケースを含むテストテキストを用意することが重要です。
- Explanation機能を積極的に使う: なぜ意図通りにマッチしないのか、あるいはなぜ意図しないマッチが発生するのかが分からないときは、Regex101のExplanation機能を必ず確認しましょう。正規表現の各部分が何にマッチしているかを理解するのに役立ちます。
- Debuggerを使ってみる: 特にマッチングの過程が複雑に思える場合や、パフォーマンスが気になる場合は、Debuggerを使ってステップ実行してみましょう。正規表現エンジンがどのようにテキストを読み進めているのか、バックトラックがどこで起きているのかなどが視覚的に分かります。
- CheatsheetやReferenceを参照する: どのような記号があったか忘れてしまったときは、テスター内蔵のチートシートやリファレンスをすぐに参照しましょう。
- 他の人の共有パターンを見る: Regexrなどのコミュニティ機能や、他の人が公開している正規表現パターンをテスターに貼り付けてみるのも良い学習方法です。どのように複雑なパターンを表現しているのか、解説機能と合わせて理解を深められます。
- 異なるテスターを試す: それぞれのテスターに得意な点や使いやすいUIがあります。いくつか試してみて、自分の学習スタイルや目的に最も合ったものを見つけましょう。
- 困ったら検索する: 考えたいパターンに対してどのような正規表現を書けばいいか分からない、あるいは書いた正規表現がうまくいかない場合は、「正規表現 [特定のパターン]」や「regex [特定の記号] 意味」といったキーワードで検索してみましょう。多くの情報が見つかります。
- 正規表現の文法書やチュートリアルと併用する: テスターは実践的な練習に最適ですが、体系的に正規表現の全ての概念を学ぶには、良質な書籍やオンラインチュートリアルも併せて活用することをおすすめします。テスターは、そこで学んだ知識を試す「実験場」として使いましょう。
8. 正規表現の「フレーバー」とは?テスターでの扱い
前述の通り、正規表現には「フレーバー」と呼ばれる、実装ごとの微妙な違いがあります。これは、プログラミング言語やツールによって、正規表現エンジンの仕様が完全に統一されていないためです。
主なフレーバーとしては、以下のようなものがあります。
- PCRE (Perl Compatible Regular Expressions): Perlの正規表現に強く影響を受けており、PHP、R、C++の多くのライブラリなどで使われています。非常に機能が豊富です。
- JavaScript: WebブラウザやNode.jsで使われます。他のフレーバーに比べて使える機能がやや少ない傾向があります。
- Python: Pythonの
re
モジュールで使用されます。 - Java: Javaの
java.util.regex
パッケージで使用されます。 - .NET: C#などの.NET言語で使用されます。
- Go: Go言語の標準ライブラリで使用されます。
フレーバーによって、以下のような点が異なることがあります。
- サポートされているメタ文字やエスケープシーケンスの種類
- 量指定子の「非貪欲(non-greedy)」マッチの記法 (
?
の有無など) - 肯定先読み (Positive Lookahead) や否定後読み (Negative Lookbehind) といった高度な機能のサポート状況や記法
- 改行文字 (
\n
) やテキストの開始・終了 (^
,$
) の扱いや、マルチラインフラグ (m
) の挙動 - Unicode 文字の扱い
- パフォーマンス特性
オンラインテスターでのフレーバーの扱い:
多くの高機能テスター (Regex101, Debuggexなど) では、複数のフレーバーを選択できるようになっています。
-
なぜフレーバーを選ぶ必要があるのか?:
あなたが最終的にその正規表現をどの環境(例えば、JavaScriptのコード、Pythonスクリプト、PHPプログラムなど)で使うかを想定して、テスターでも同じフレーバーを選択することが重要です。テスターで完璧に動いた正規表現でも、異なるフレーバーの実際の環境では意図通りに動かない、あるいはエラーになる可能性があります。 -
初心者はどのフレーバーを選べば良いか?:
特に目的の環境が決まっていない場合は、PCRE か JavaScript を選んでおくと良いでしょう。Web開発をするならJavaScript、多くのサーバーサイド言語で広く使われる機能を確認したいならPCREが良いでしょう。まずは一つのフレーバーで基本的な記法をマスターし、必要に応じて他のフレーバーでの違いを学ぶのが効率的です。
テスターでフレーバーを切り替えて、同じ正規表現とテスト文字列で結果がどう変わるかを確認してみるのも、正規表現の奥深さを知る良い経験になります。
9. 正規表現のデバッグ方法 (テスターの活用)
正規表現は、特に複雑になってくると、なぜか期待通りにマッチしない、あるいは意図しない箇所がマッチしてしまうといった問題が発生しがちです。このような「バグ」を修正する作業をデバッグと呼びます。オンラインテスターは、正規表現のデバッグに非常に強力なツールです。
-
デバッグが必要な典型的なケース:
- 意図した部分がマッチしない: 書いた正規表現が、本来見つけたい文字列を見つけてくれない。
- 意図しない部分がマッチしてしまう: 関係ない文字列までマッチしてしまう。
- マッチしすぎる(貪欲マッチの問題):
.*
などを使った際に、期待したよりも広い範囲をマッチしてしまう(非貪欲マッチ.*?
を使うことで解決することが多い)。 - パフォーマンスが悪い(遅い): 特に長いテキストに対して、正規表現のマッチングに時間がかかりすぎる(バックトラックの多発などが原因となる)。
- 正規表現が無効と判定される: 特定の環境でエラーになる。
-
テスターを使ったデバッグのステップ:
- 問題を再現するテスト文字列を用意: 意図しない結果が発生する具体的なテスト文字列をテスターに入力します。問題が発生するケースだけでなく、正常にマッチするケースも複数含めておくと、どこに違いがあるのかが分かりやすくなります。
- マッチ結果を確認: テスター上で、どこがマッチしてどこがマッチしていないかを正確に確認します。なぜこの部分がマッチしないのか? なぜこの部分がマッチしてしまうのか? を考えます。
- Explanation機能で解析: 正規表現の各部分がテスト文字列のどこに適用されているかを、Explanation機能を見ながら詳細に確認します。「この
.
は改行にマッチしないからここで失敗しているのか」「この*
はこの部分にマッチしているのか」など、正規表現の動作を理解しようと努めます。 - Debuggerでステップ実行: 特に複雑な問題やパフォーマンスの問題の場合は、Debuggerを使ってマッチングプロセスをステップごとに追跡します。正規表現エンジンがテキストのどの位置で、正規表現のどの要素を評価し、成功したか失敗したか、バックトラックしたかを見ることができます。これにより、どこで処理が停滞しているか、どこで間違ったパスに進んでいるかなどが分かります。
- 正規表現を少しずつ修正: 問題の原因が特定できたら、正規表現を修正します。一度に大きく変更せず、問題に関係する部分だけを少しずつ修正し、その都度テスターで結果を確認することが重要です。例えば、「文字クラスにハイフンを追加する」「量指定子を
{n}
から{n,}
に変更する」「貪欲マッチを非貪欲マッチに変更する」など、具体的な修正を行います。 - 異なるフレーバーで確認: 特定の環境でエラーになる場合は、その環境のフレーバーを選択してテスターで確認します。テスターによっては、「このフレーバーではこの記号はサポートされていません」といった警告を出してくれることもあります。
デバッグは、正規表現をマスターする上で避けられないプロセスです。オンラインテスターの強力なデバッグ機能を活用することで、このプロセスを効率的に進めることができます。
10. 正規表現を学ぶ上での注意点
正規表現は非常に強力ですが、万能ではありませんし、いくつかの落とし穴があります。初心者の方が学習を進める上で知っておくべき注意点です。
- 万能ではないことを理解する: 特に、構造が複雑でネスト(入れ子)が深いデータのパース(例えば、HTML、XML、JSONなど)には正規表現は向いていません。これらのデータ形式は、それぞれの構造を理解する専用のパーサー(ライブラリ)を使うべきです。正規表現で無理にパースしようとすると、正規表現が非常に複雑になり、メンテナンス性が低下し、バグの温床になりやすいです。「正規表現でHTMLをパースするな」は有名な格言です。正規表現は、あくまで比較的定型的なテキストのパターンマッチングや簡単な抽出・置換に使うツールだと認識しましょう。
- 可読性の問題: 複雑な正規表現は、書いた本人でも後から見返すと理解するのが難しい場合があります。特に複数のメタ文字や量指定子、グループ化が組み合わさると、一見しただけでは何を意味するのか分かりにくくなります。可読性を高めるために、コメント機能(テスターや一部の言語の正規表現エンジンでサポートされていることがあります)を使ったり、複雑な正規表現を避けて複数ステップの処理に分けたりすることも検討しましょう。オンラインテスターのExplanation機能は、他の人が書いた、あるいは自分が書いた複雑な正規表現を解析するのに役立ちます。
- パフォーマンスの問題: 非効率な正規表現は、特に長いテキストに対してマッチングに非常に時間がかかることがあります。これは「バックトラック」が多発することで発生することが多いです。例としては、
.*
といった貪欲なパターンを多用したり、冗長な文字クラスを使ったりする場合などです。オンラインテスターのDebugger機能は、バックトラックの状況を確認するのに役立ちます。パフォーマンスが重要な場面では、正規表現の効率性も考慮する必要があります。 - セキュリティの問題 (ReDoS): 脆弱な正規表現を使用すると、特定の悪意のある入力によって正規表現エンジンの処理が異常に長時間かかるようになる攻撃(Regular expression Denial of Service; ReDoS)を受ける可能性があります。特にユーザーからの入力に対して正規表現で検証を行う場合は注意が必要です。これもバックトラックが原因で発生することが多いです。オンラインテスターによっては、ReDoSのリスクを警告してくれる機能を持つものもあります(例: Regex101)。
- 最初は基本的な表現から習得する: いきなり高度な機能を学ぼうとせず、まずはリテラル文字、文字クラス、量指定子、アンカー、グループ化といった基本的な要素とその組み合わせをしっかりと習得しましょう。オンラインテスターで一つずつ試しながら理解を深めるのが効果的です。
これらの注意点を頭に入れつつ、オンラインテスターを「実験場」として活用しながら、安全かつ効率的な正規表現の使い方を身につけていきましょう。
11. まとめ
この記事では、正規表現の基本的な考え方から、オンラインテスターの便利さ、具体的なテスターの使い方、実践的なデモ、そして学習上の注意点までを網羅的に解説しました。
正規表現は、最初は確かに特殊な記号が多くて難しく感じるかもしれません。しかし、オンライン正規表現テスターという強力なツールを使えば、その学習曲線は格段に緩やかになり、楽しく効率的に学ぶことができます。
オンラインテスターの利便性は以下の通りです。
- 環境構築不要で即座に始められる。
- リアルタイムなマッチング結果を視覚的に確認できる。
- 試行錯誤やデバッグが容易になる。
- 正規表現の解説機能やデバッガーが学習をサポートする。
- 異なるプログラミング言語のフレーバーに対応できる。
- 作成した正規表現やテストを簡単に共有できる。
Regex101、Regexr、Debuggex など、様々な特徴を持つテスターがありますが、まずはどれか一つ(機能が豊富で解説が詳しい Regex101 がおすすめです)を選んで、実際に手を動かしてみてください。テストテキストを入力し、正規表現を入力し、結果を確認し、Explanationを見て理解を深め、少しずつ修正していく、というサイクルを繰り返すことが、正規表現をマスターするための最も効果的な方法です。
この記事で紹介した基本的な正規表現の概念や使用例を参考に、ぜひあなた自身のパターンをテスターで試してみてください。最初は簡単な単語や数字の検索から始めて、徐々に日付、メールアドレス、特定の形式のデータなど、より複雑なパターンに挑戦していきましょう。デバッグで行き詰まったら、ExplanationやDebugger機能を活用し、正規表現の内部動作を理解しようと努めましょう。
正規表現を使いこなせるようになれば、テキスト処理の作業効率が劇的に向上し、データ分析やプログラミングの幅が広がります。オンライン正規表現テスターは、その旅における最高の相棒となるはずです。
さあ、この記事を読み終えたら、すぐにオンライン正規表現テスターのサイトを開いて、あなたの最初の正規表現を試してみてください!