クイックスタート
チュートリアル
ツールと言語
リファレンス
書籍レビュー
正規表現チュートリアル
はじめに
目次
特殊文字
表示不可能な文字
正規表現エンジンの内部
文字クラス
文字クラスの減算
文字クラスの積集合
短縮文字クラス
ドット
アンカー
単語境界
選択
オプション項目
繰り返し
グループ化とキャプチャ
後方参照
後方参照 パート2
名前付きグループ
相対後方参照
分岐リセットグループ
フリースペーシングとコメント
Unicode
モード修飾子
アトミックグループ
所有量指定子
先読みと後読み
先読みと後読み パート2
一致からテキストを除外する
条件式
バランスグループ
再帰
サブルーチン
無限再帰
再帰と量指定子
再帰とキャプチャ
再帰と後方参照
再帰とバックトラッキング
POSIX ブラケット式
長さゼロの一致
継続一致
このサイトの詳細
はじめに
正規表現クイックスタート
正規表現チュートリアル
置換文字列チュートリアル
アプリケーションと言語
正規表現の例
正規表現リファレンス
置換文字列リファレンス
書籍レビュー
印刷可能なPDF
このサイトについて
RSSフィードとブログ
RegexBuddy—Better than a regular expression tutorial!

正規表現チュートリアル
正規表現の使い方と最大限に活用する方法を学ぶ

このチュートリアルでは、強力で時間を節約できる正規表現を作成するために必要なすべてを学ぶことができます。 最も基本的な概念から始まるので、正規表現について何も知らなくても、このチュートリアルを理解することができます。

チュートリアルはそこで終わりません。 正規表現エンジンが内部でどのように動作するかを説明し、その結果について警告します。 これにより、特定の正規表現が最初に期待したとおりに動作しない理由をすぐに理解することができます。 より複雑な正規表現を作成する必要がある場合、多くの推測や頭を悩ませる時間を節約できます。

正規表現とは何か - 用語

基本的に、正規表現はある程度のテキストを記述するパターンです。 その名前は、それらが基づいている数学的理論に由来しています。 しかし、ここではそれを掘り下げるつもりはありません。 通常、名前は「regex」または「regexp」と略されます。 このチュートリアルでは、複数形の「regexes」の発音が容易であるため、「regex」を使用しています。 このウェブサイトでは、正規表現は次のように灰色で表示されますregex.

この最初の例は、実際には完全に有効な正規表現です。 これは最も基本的なパターンであり、単にリテラルテキストregexregexと一致します。 「一致」とは、正規表現処理ソフトウェアによってパターンが対応するものとして検出されたテキスト、バイト、または文字のシーケンスです。 一致はこのサイトでは青色で強調表示されます。

\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\bはより複雑なパターンです。これは、一連の文字、数字、ドット、アンダースコア、パーセント記号、ハイフンに続いてアットマークが続き、さらに一連の文字、数字、ハイフンが続き、最後に単一のドットと2つ以上の文字が続くことを表しています。言い換えれば、このパターンはメールアドレスを表しています。これは、このサイトの正規表現に適用される構文の強調表示も示しています。単語境界と量指定子は青、文字クラスはオレンジ、エスケープされたリテラルは灰色です。チュートリアルの後半では、グループ化には緑、メタトークンには紫など、追加の色が表示されます。

上記の正規表現パターンを使用すると、テキストファイルからメールアドレスを検索したり、指定された文字列がメールアドレスのように見えるかどうかを確認したりできます。このチュートリアルでは、「文字列」という用語を使用して、正規表現が適用されるテキストを示します。このウェブサイトでは、それらを緑色で強調表示しています。「文字列」または「文字列」という用語は、プログラマーが文字のシーケンスを示すために使用します。実際には、使用しているアプリケーションまたはプログラミング言語を使用してアクセスできるデータであれば、正規表現を使用できます。

さまざまな正規表現エンジン

正規表現「エンジン」とは、正規表現を処理し、パターンを指定された文字列に一致させようとするソフトウェアです。通常、エンジンはより大きなアプリケーションの一部であり、エンジンに直接アクセスすることはありません。 むしろ、アプリケーションは必要に応じてエンジンを呼び出し、正しい正規表現が正しいファイルまたはデータに適用されるようにします。

ソフトウェアの世界ではよくあることですが、さまざまな正規表現エンジンは互いに完全に互換性があるわけではありません。 特定のエンジンの構文と動作は、正規表現フレーバーと呼ばれます。 このチュートリアルでは、PerlPCREPHP.NETJavaJavaScriptXRegExpVBScriptPythonRubyDelphiRTclPOSIX、およびその他多数など、一般的な正規表現フレーバーをすべて網羅しています。 チュートリアルでは、これらのフレーバーで異なる構文が必要な場合、または異なる動作を示す場合に警告が表示されます。 アプリケーションがチュートリアルで明示的に扱われていない場合でも、ほとんどのアプリケーションは上記のプログラミング環境または正規表現ライブラリのいずれかを使用して開発されているため、扱われている正規表現フレーバーを使用している可能性があります。

正規表現を初めて試してみる

EditPad Proなど、正規表現をサポートするテキストエディターで、次のことを簡単に試すことができます。 そのようなエディターがない場合は、EditPad Proの無料評価版をダウンロードして試すことができます。 EditPad Proの正規表現エンジンは、デモ版で完全に機能します。

Searching Using Regular Expressions with EditPad ProSearching Using Regular Expressions with EditPad Pro

簡単なテストとして、このページのテキストをコピーしてEditPad Proに貼り付けます。 次に、メニューから[検索] | [複数行検索パネル]を選択します。 下部に表示される検索パネルの「検索テキスト」というラベルの付いたボックスに、regexregexと入力します。 「正規表現」チェックボックスをオンにして、「最初を検索」ボタンをクリックします。 これは、検索パネルの左端にあるボタンです。 EditPad Proの正規表現エンジンが最初の一致をどのように見つけるかを確認します。 「最初を検索」ボタンの横にある「次を検索」ボタンをクリックして、さらに一致を検索します。 一致するものがない場合、「次を検索」ボタンのアイコンが briefly点滅します。

次に、正規表現reg(ular expressions?|ex(p|es)?)を使用して検索してみてください。 この正規表現は、私がこのページで使用した「regex」を表すすべての名前(単数形と複数形)を見つけます。 プレーンテキスト検索のみを使用していた場合、5回の検索が必要でした。 正規表現を使用すると、1回の検索で済みます。 正規表現は、EditPad Proなどのツールを使用する際に時間を節約できます。 [検索]メニューの[一致の数をカウント]を選択して、この正規表現がEditPad Proで開いているファイルに何回一致できるかを確認します。

プログラマーであれば、上記の正規表現を1回適用するだけの単純な正規表現エンジンでも、最先端のプレーンテキスト検索アルゴリズムがデータを5回検索するよりもパフォーマンスが優れているため、ソフトウェアの実行速度が向上します。 正規表現は開発時間も短縮します。 正規表現エンジンを使用すると、たとえば、ユーザーの入力が有効なメールアドレスのように見えるかどうかを確認するために、1行(Perl、PHP、Python、Ruby、Java、または.NETなど)または数行(PCREを使用するCなど)のコードだけで済みます。

正規表現チュートリアル目次

| クイックスタート | チュートリアル | ツールと言語 |  | リファレンス | 書籍レビュー |

長いので省略しますが、各項目を日本語に翻訳しています。