このサイトのその他の情報 |
はじめに |
正規表現クイックスタート |
正規表現チュートリアル |
置換文字列チュートリアル |
アプリケーションとプログラミング言語 |
正規表現の例 |
正規表現リファレンス |
置換文字列リファレンス |
書籍レビュー |
印刷可能なPDF |
このサイトについて |
RSSフィードとブログ |
この正規表現チュートリアルでは、正規表現のあらゆる側面を学習します。各トピックは、以前のトピックをすべて読んで理解していることを前提としています。正規表現を初めて使用する場合は、提示された順序でトピックを読む必要があります。
はじめにでは、チュートリアルの範囲と、どの正規表現フレーバーについて説明するかを示します。また、基本的な用語についても紹介します。
最も単純な正規表現は、リテラル文字のみで構成されています。特定の文字は正規表現で特別な意味を持ち、エスケープする必要があります。ソフトウェアのソースコードで正規表現を使用する場合、エスケープ規則は少し複雑になる可能性があります。
制御文字や特殊なスペースまたは改行文字などの印字できない文字は、制御文字エスケープまたは16進数エスケープを使用して簡単に入力できます。
まず、正規表現エンジンの内部構造を見ていきます。後のトピックでは、この情報に基づいて説明します。エンジンの内部構造を知ることは、意図したとおりに一致する正規表現を作成し、不要なものと一致させないようにするのに非常に役立ちます。
文字クラスまたは文字セットは、個々の文字や文字の範囲で構成される、複数の可能性のある文字の中から1つの文字に一致します。否定された文字クラスは、文字クラスに含まれない1つの文字に一致します。
省略記法による文字クラスを使用すると、一般的な文字セットをすばやく使用できます。省略記法は単独で使用することも、文字クラスの一部として使用することもできます。
文字クラスの減算を使用すると、ある文字セットには存在し、別の文字セットには存在しない1つの文字に一致させることができます。
文字クラスの積集合を使用すると、ある文字セットにも存在し、別の文字セットにも存在する1つの文字に一致させることができます。
ドットは任意の文字に一致しますが、通常はオプションを変更しない限り、改行文字には一致しません。
アンカーは長さ0です。アンカーは文字に一致するのではなく、位置に一致します。対象文字列の先頭と末尾で一致するアンカーと、各行の先頭と末尾で一致するアンカーがあります。
単語境界はアンカーに似ていますが、単語の先頭および/または単語の末尾で一致します。
異なるサブ正規表現を縦棒で区切ることで、正規表現エンジンに左から右に試行し、いずれかが一致するとすぐに成功を返すように指示できます。
項目の後に疑問符を付けると、正規表現エンジンに、可能であれば項目を一致させ、一致できない場合は(敗北を認めるのではなく)とにかく続行するように指示します。
星印、プラス記号、中括弧の3つのスタイルの演算子を使用すると、項目を0回以上、1回以上、または任意の回数繰り返すことができます。これらの量指定子は、明示的に「遅延」にしない限り、デフォルトで「貪欲」であることを理解することが重要です。
正規表現の一部を括弧で囲むことで、量指定子を適用したり、選択肢をグループ化したりするときに、エンジンにその部分を単一の項目として扱うように指示します。括弧はキャプチャグループも作成し、正規表現の一部によって一致したテキストを再利用できます。
キャプチャグループへの後方参照は、以前にそのキャプチャグループによって一致したテキストと同じテキストに一致し、繰り返しテキストのパターンを一致させることができます。
複数のグループを持つ正規表現は、名前付きキャプチャグループと名前付き後方参照を使用すると、はるかに読みやすく、保守が容易になります。
選択を使用して同じものの異なるバリアントを一致させる場合、選択肢をブランチリセットグループに入れることができます。次に、すべての選択肢が同じキャプチャグループを共有します。これにより、どの選択肢がキャプチャしたかを確認しなくても、後方参照を使用したり、一致したテキストの一部を取得したりできます。
正規表現を複数行に分割し、コメントと空白を追加すると、読みやすく理解しやすくなります。
正規表現フレーバーがUnicodeをサポートしている場合は、特殊なUnicode正規表現トークンを使用して、特定のUnicode文字に一致させたり、特定のUnicodeプロパティを持つ文字、または特定のUnicodeスクリプトまたはブロックの一部である文字に一致させたりすることができます。
正規表現の特定の部分に対して、「大文字と小文字を区別しない」などのマッチングモードを変更します。
ネストされた量指定子は、正規表現エンジンを停止させる指数関数的に増加するバックトラックを引き起こす可能性があります。アトミックグループ化と所有量指定子が解決策を提供します。
長さ0のアサーションを使用した先読み、パート1 および パート2
先読みと後読み(総称してlookaroundと呼ばれます)を使用すると、特定テキストが続くまたは続かない、また特定のテキストで先行または先行されない一致を、先行または後続のテキストを正規表現の一致全体に含めることなく見つけることができます。lookaroundを使用して、一致の同じ部分で複数の要件をテストすることもできます。
これまで一致したテキストを正規表現の一致全体から除外することで、先行するテキストを正規表現の一致全体に含めることなく、特定のテキストが先行する一致を見つけることができます。この方法は、後読みのサポートがないか、限られている正規表現フレーバーで主に役立ちます。
条件は、最初に先読みまたは後方参照を評価し、先読みが成功した場合は1つのサブ正規表現を実行し、先読みが失敗した場合は別のサブ正規表現を実行する特別な構成です。
再帰は、正規表現内の特定の時点で正規表現全体を再度一致させ、バランスの取れた構造と一致させることができます。
サブルーチン呼び出しを使用すると、正規表現の一部を複製することなく、同じ構造を複数の場所で一致させる正規表現を記述できます。
再帰とサブルーチン呼び出し内のキャプチャグループは、それらをサポートする正規表現フレーバーによって異なる方法で処理されます。
特殊な後方参照は、キャプチャグループによって最近一致したテキストではなく、特定の再帰レベルでキャプチャグループによって格納されたテキストに一致します。
再帰とサブルーチン呼び出しをサポートする正規表現フレーバーは、再帰またはサブルーチン呼び出しが失敗した後で異なる方法でバックトラックします。
POSIX準拠の正規表現エンジンを使用している場合は、POSIXブラケット式を使用して、ロケール依存の文字を一致させることができます。
正規表現が長さ0のマッチを見つけることができる場合、正規表現エンジンは、文字列内のすべてのマッチを反復処理するときに長さ0のマッチでスタックするのを回避するために、異なる戦略を使用します。これにより、異なるマッチ結果になる可能性があります。
正規表現の一致を以前の一致の終わりに強制的に開始させることは、テキストデータを解析する効率的な方法を提供します。
| クイック スタート | チュートリアル | ツール & 言語 | 例 | リファレンス | 書籍 レビュー |
| はじめに | 目次 | 特殊文字 | 印字できない文字 | 正規表現エンジンの内部構造 | 文字クラス | 文字クラスの減算 | 文字クラスの積集合 | 省略記法による文字クラス | ドット | アンカー | 単語境界 | 選択 | オプション項目 | 繰り返し | グループ化とキャプチャ | 後方参照 | 後方参照、パート2 | 名前付きグループ | 相対後方参照 | ブランチリセットグループ | フリースペーシングとコメント | Unicode | モード修飾子 | アトミックグループ化 | 所有量指定子 | 先読みと後読み | 先読みと後読み、パート2 | マッチからテキストを除外 | 条件 | バランシンググループ | 再帰 | サブルーチン | 無限再帰 | 再帰と量指定子 | 再帰とキャプチャ | 再帰と後方参照 | 再帰とバックトラック | POSIXブラケット式 | 長さ0のマッチ | マッチの継続 |
ページURL: https://regular-expressions.dokyumento.jp/tutorialcnt.html
ページ最終更新日: 2019年11月22日
サイト最終更新日: 2024年3月15日
Copyright © 2003-2024 Jan Goyvaerts. All rights reserved.