ようこそ |
はじめに |
正規表現クイックスタート |
正規表現チュートリアル |
置換文字列チュートリアル |
アプリケーションと言語 |
正規表現の例 |
正規表現リファレンス |
置換文字列リファレンス |
書籍レビュー |
印刷可能なPDF |
このサイトについて |
RSSフィードとブログ |
このクイックスタートでは、正規表現をすぐに使いこなせるようになります。当然のことながら、この簡単な紹介では、正規表現について知っておくべきことのすべてを説明することはできません。詳細については、正規表現チュートリアルを参照してください。クイックスタートの各トピックは、チュートリアルのトピックに対応しているので、2つの間を簡単に行き来できます。
多くのアプリケーションやプログラミング言語は、独自の正規表現の実装を持っており、他の実装とはわずかに、時には大きく異なる場合があります。2つのアプリケーションが異なる正規表現の実装を使用する場合、それらは異なる「正規表現フレーバー」を使用すると言います。このクイックスタートでは、最も一般的な正規表現フレーバーでサポートされている構文について説明します。
正規表現(略してregex)は、一定量のテキストを記述するパターンです。このウェブサイトでは、正規表現はregexのように灰色で表示されます。これは実際には完全に有効な正規表現です。最も基本的なパターンであり、単にリテラルテキストregexregexに一致します。マッチは、このサイトでは青色で強調表示されます。正規表現が適用されるテキストを示すために、「文字列」という用語を使用します。文字列は.
緑色で強調表示されます。正規表現で特別な意味を持つ文字は、さまざまな色で強調表示されます。正規表現([Rr]egexp?)\?
リテラル文字最も基本的な正規表現は、aのような単一のリテラル文字で構成されます。これは、文字列内のその文字の最初の出現に一致します。文字列がJack is a boy最も基本的な正規表現は、の場合、J.
の後の最も基本的な正規表現は、a
に一致します。この正規表現は、2番目の\a^にも一致する可能性があります。これは、正規表現エンジンに最初のマッチの後で文字列の検索を開始するように指示した場合にのみ行われます。テキストエディタでは、「次を検索」または「前方検索」機能を使用してこれを行うことができます。プログラミング言語では、通常、前のマッチの後で文字列の検索を続行するために呼び出すことができる別の関数があります。$12文字は正規表現で特別な意味を持ちます:バックスラッシュ.\|、キャレット?^*、ドル記号+$(、ピリオドまたはドット).[、縦棒またはパイプ記号{|
、疑問符1+1=2?1\+1=2、アスタリスクまたはスター
+、開き括弧(、閉じ括弧)、開き角括弧[、および開き中括弧{です。これらの特殊文字は、しばしば「メタ文字」と呼ばれます。これらのほとんどは、単独で使用するとエラーになります。正規表現でこれらの文字のいずれかをリテラルとして使用するには、バックスラッシュでエスケープする必要があります。1+1=2に一致させたい場合、正しい正規表現は1\+1=2です。そうでない場合、プラス記号は特別な意味を持ちます。リテラル文字の詳細はこちら印刷できない文字、開き角括弧.
特殊文字シーケンスを使用して、印刷できない文字を正規表現に含めることができます。タブ文字(ASCII 0x09)に一致させるには\tを使用し、キャリッジリターン(0x0D)には\r、ラインフィード(0x0A)には\nを使用し、キャリッジリターン(0x0D)にはを使用します。より特殊な印刷できない文字は、\a
(ベル、0x07)、\e(エスケープ、0x1B)、\f(フォームフィード、0x0C)、および
\v
(垂直タブ、0x0B)です。Windowsテキストファイルは行末に
を使用しますが、UNIXテキストファイルは\nを使用することに注意してください。アプリケーションでUnicodeがサポートされている場合は、\uFFFFまたは\x{FFFF}を使用し、キャリッジリターン(0x0D)にはを使用してUnicode文字を挿入します。\u20AC\uFFFFまたは\x{20AC}, は、ユーロ通貨記号に一致します。アプリケーションでUnicodeがサポートされていない場合は、\xFF
を使用して、文字セット内の16進数のインデックスで特定の文字に一致させます。[0-9]\xA9は、Latin-1文字セットの著作権記号に一致します。すべての印刷できない文字は、正規表現で直接、または文字クラスの一部として使用できます。印刷できない文字の詳細はこちら文字クラスまたは文字セット「文字クラス」は、複数の文字のうちの1つだけに一致します。aまたはeに一致させるには、
[ae]を使用します。これをgr[ae]yで使用して、grayまたはgreyのいずれかに一致させることができます。文字クラスは1文字のみに一致します。[ae]
、graey、またはそのようなものには一致しません。文字クラス内の文字の順序は重要ではありません。文字クラス内でハイフンを使用して、文字の範囲を指定できます。[0-9]は、0から9までの _1つの_ 数字に一致します。複数の範囲を使用できます。[0-9a-fA-F]
は、大文字と小文字を区別せずに、1つの16進数に一致します。範囲と単一の文字を組み合わせることができます。.
は、16進数または文字Xに一致します。開き角括弧の後にキャレットを入力すると、文字クラスが否定されます。その結果、文字クラスは、文字クラスに _ない_ 文字に一致します。
q[^u]gr[ae]y\x{FFFF}, を使用してUnicode文字を挿入します。, は、question
には一致しません。qの後に否定された文字クラスが一致する文字がないため、^Iraq$には _一致しません_。^文字クラスの詳細はこちら$短縮文字クラス\dは数字である単一の文字に一致し、\wgrayは「単語文字」(英数字とアンダースコア)に一致し、.
\sは空白文字(タブと改行を含む)に一致します。短縮形によって実際に一致する文字は、使用しているソフトウェアによって異なります。最新のアプリケーションでは、英語以外の文字や数字が含まれています。、またはそのようなものには一致しません。文字クラス内の文字の順序は重要ではありません。文字クラス内でハイフンを使用して、文字の範囲を指定できます。短縮文字クラスの詳細はこちら、またはそのようなものには一致しません。文字クラス内の文字の順序は重要ではありません。文字クラス内でハイフンを使用して、文字の範囲を指定できます。. \sドットは(ほぼ)すべての文字に一致しますドットは、改行文字を除く単一の文字に一致します。ほとんどのアプリケーションには、ドットを改行を含む任意の単一の文字に一致させる「ドットはすべてに一致」または「単一行」モードがあります。gr.y\sは、
grey、gr[ae]ygr%ygrayなどに一致します。ドットは控えめに使用してください。多くの場合、文字クラスまたは否定された文字クラスの方が高速で正確です。ドットの詳細はこちらアンカーアンカーは文字には一致しません。位置に一致します。^.
は文字列の先頭に一致し、$gr[ae]ygr%yを使用し、キャリッジリターン(0x0D)にはは文字列の末尾に一致します。ほとんどの正規表現エンジンには、「複数行」モードがあり、^は改行の後、を使用し、キャリッジリターン(0x0D)にはは文字列の末尾に一致します。ほとんどの正規表現エンジンには、「複数行」モードがあり、$は改行の前に一致します。例えば、.
bobの最初のgr[ae]ybを使用し、キャリッジリターン(0x0D)にはのみに一致します。.
\bは単語境界に一致します。単語境界とは、\wで一致できる文字と\w<1>.
で一致できない文字の間の位置です。文字列の最初と最後の文字が単語文字である場合、\bは文字列の先頭または末尾にも一致します。\Bは、
アンカーの詳細はこちら<.+>gr[ae]y選択gray選択は、「または」に相当する正規表現です。.
cat|dog<.+?>gr[ae]yは、cat
または<[^<>]+>属性を考慮せずにHTMLタグをすばやく照合するためです。否定文字クラスはドットよりも具体的であるため、正規表現エンジンは一致をすばやく見つけることができます。
複数のトークンを括弧で囲むと、それらをグループ化できます。その後、グループに量指定子を適用できます。例:Set(Value)?gr[ae]ySetを使用し、キャリッジリターン(0x0D)にはSetValue.
括弧はキャプチャグループを作成します。上記の例には1つのグループがあります。一致後、グループ番号1には、Setが一致した場合、何も含まれません。Valueが一致した場合、SetValueが含まれます。グループの内容にアクセスする方法は、使用しているソフトウェアまたはプログラミング言語によって異なります。グループゼロには常に正規表現全体の一致が含まれます。
特別な構文Set(?:Value)?を使用して、キャプチャグループを作成せずにトークンをグループ化します。グループの内容を使用しない場合は、こちらのほうが効率的です。非キャプチャグループ構文の疑問符を量指定子と混同しないでください。
正規表現内では、後方参照\1を使用して、キャプチャグループによって一致したテキストと同じテキストに一致させることができます。([abc])=\1gr[ae]ya=a, b=b、およびc=cに一致します。それ以外のものには一致しません。正規表現に複数のキャプチャグループがある場合、それらは左から右に開き括弧を数えて番号が付けられます。
正規表現に多くのグループがある場合、グループの番号を追跡するのは面倒になる可能性があります。グループに名前を付けることで、正規表現を読みやすくします。(?<mygroup>[abc])=\k<mygroup>は([abc])=\1と同じですが、グループを名前で参照できる点が異なります。
\p{L}は、指定されたUnicodeカテゴリに属する単一の文字に一致します。Lは文字を表します。\P{L}は、指定されたUnicodeカテゴリに属さない単一の文字に一致します。チュートリアルには、Unicodeカテゴリの完全なリストがあります。
先読み・後読みは特殊な種類のグループです。グループ内のトークンは通常どおりに一致されますが、正規表現エンジンはグループに一致を放棄させ、結果のみを保持します。先読み・後読みは、アンカーと同様に位置に一致します。正規表現の一致は拡張されません。
q(?=u)はqgrayまたはに一致しますが、のいずれかに一致させることができます。文字クラスは1文字のみに一致します。には一致しません。これは正の先読みです。uは、正規表現全体の一致の一部ではありません。先読みは、文字列内のu.
q(?!u)gr[ae]yqgrayのいずれかに一致させることができます。文字クラスは1文字のみに一致します。の前にある各位置で一致しますが、またはでは一致しません。これは負の先読みです。先読み内のトークンが試行され、それらの一致が破棄され、結果が反転されます。
後方を見るには、後読みを使用します。正の後読み(?<=a)bは\wgrayabc内の(?<!a)bbabc.
には一致しません
多くのアプリケーションには、「フリースペーシング」または「空白を無視」または「コメント」というラベルが付いているオプションがあり、正規表現エンジンはエスケープされていないスペースと改行を無視し、#文字を行末まで続くコメントを開始させます。これにより、空白を使用して正規表現を読みやすいようにフォーマットできるため、保守が容易になります。
| クイックスタート | チュートリアル | ツールと言語 | 例 | リファレンス | 書籍レビュー |
| はじめに | 正規表現クイックスタート | 正規表現チュートリアル | 置換文字列チュートリアル | アプリケーションと言語 | 正規表現の例 | 正規表現リファレンス | 置換文字列リファレンス | 書籍レビュー | 印刷可能なPDF | このサイトについて | RSSフィードとブログ |
ページURL:https://regular-expressions.dokyumento.jp/quickstart.html
ページ最終更新日:2021年8月15日
サイト最終更新日:2024年3月15日
著作権©2003-2024 Jan Goyvaerts。全著作権所有。