置換テキストチュートリアル |
はじめに |
文字 |
非印刷文字 |
マッチしたテキスト |
後方参照 |
マッチコンテキスト |
大文字/小文字変換 |
条件 |
当サイトのその他の情報 |
はじめに |
正規表現クイックスタート |
正規表現チュートリアル |
置換文字列チュートリアル |
アプリケーションとプログラミング言語 |
正規表現の例 |
正規表現リファレンス |
置換文字列リファレンス |
書評 |
印刷可能なPDF |
当サイトについて |
RSSフィード & ブログ |
最も基本的な置換文字列は、リテラル文字のみで構成されます。置換は置換は単純に各正規表現の一致をテキストで置換します置換は.
各正規表現の一致をまったく同じテキストで置換するだけでなく、より多くのことを行えるようにするために、特定の文字を特別な用途のために予約する必要があります。ほとんどの置換テキストフレーバーでは、2つの文字が特別な意味を持つ傾向があります。それはバックスラッシュ\とドル記号$です。それらをエスケープするかどうか、またどのようにエスケープするかは、使用しているアプリケーションによって異なります。一部のアプリケーションでは、リテラル文字として使用する場合は、常にそれらをエスケープする必要があります。他のアプリケーションでは、後続の文字と置換テキストトークンを形成する場合にのみ、それらをエスケープする必要があります。
JGsoftフレーバーとDelphiでは、バックスラッシュを使ってバックスラッシュとドルをエスケープでき、ドルを使ってドルをエスケープできます。\\はリテラルなバックスラッシュに置換され、一方\$と$$はリテラルなドル記号に置換されます。他の文字との組み合わせで特別な意味を抑制するためにのみ、それらをエスケープする必要があります。 に\!と$!、バックスラッシュとドルは、感嘆符と組み合わせて特別な意味を持たないため、リテラル文字です。バックスラッシュとドル以外の、感嘆符やその他の文字は、JGsoftおよびDelphiの置換文字列で特別な意味を持たないため、エスケープすることはできず、また必要もありません。
.NET、JavaScript、VBScript、XRegExp、PCRE2、およびstd::regexでは、ドル記号を別のドル記号でエスケープできます。$$はリテラルなドル記号に置換されます。XRegExpとPCRE2では、すべてのリテラルなドル記号をエスケープする必要があります。有効な置換テキストトークンを形成しないエスケープされていないドル記号はエラーとして扱われます。.NET、JavaScript(XRegExpなし)、およびVBScriptでは、他の文字と組み合わせて特別な意味を抑制するためにのみ、ドル記号をエスケープする必要があります。に$\と$!、ドルは、バックスラッシュまたは感嘆符と組み合わせて特別な意味を持たないため、リテラル文字です。.NET、JavaScript、VBScript、およびPCRE2の置換文字列では、ドル以外の、バックスラッシュ、感嘆符、その他の文字は特別な意味を持たないため、エスケープすることはできず、また必要もありません。
Javaでは、トークンを形成しないエスケープされていないドル記号はエラーです。リテラル文字として使用するには、ドル記号をバックスラッシュまたは別のドル記号でエスケープする必要があります。$!は、ドル記号がエスケープされておらず、感嘆符と組み合わせて特別な意味を持たないため、エラーです。バックスラッシュは常に後続の文字をエスケープします。\!はリテラルな感嘆符に置換され、\\は単一のバックスラッシュに置換されます。置換テキストの末尾にある単一のバックスラッシュはエラーです。
PythonとRubyでは、ドル記号は特別な意味を持ちません。バックスラッシュを使ってバックスラッシュをエスケープできます。他の文字との組み合わせで特別な意味を抑制するためにのみ、バックスラッシュをエスケープする必要があります。に\!、バックスラッシュは、感嘆符と組み合わせて特別な意味を持たないため、リテラル文字です。バックスラッシュ以外の、感嘆符やその他の文字は、PythonおよびRubyの置換文字列で特別な意味を持たないため、エスケープすることはできず、また必要もありません。ただし、置換テキストの末尾にあるエスケープされていないバックスラッシュは、Pythonではエラーですが、Rubyではリテラルなバックスラッシュです。
PHPのpreg_replaceでは、バックスラッシュを使ってバックスラッシュとドルをエスケープできます。\\はリテラルなバックスラッシュに置換され、一方\$はリテラルなドル記号に置換されます。他の文字との組み合わせで特別な意味を抑制するためにのみ、それらをエスケープする必要があります。に\!、バックスラッシュは、感嘆符と組み合わせて特別な意味を持たないため、リテラル文字です。バックスラッシュとドル以外の、感嘆符やその他の文字は、PHPの置換文字列で特別な意味を持たないため、エスケープすることはできず、また必要もありません。
Boostでは、バックスラッシュは常に後続の文字をエスケープします。\!はリテラルな感嘆符に置換され、\\は単一のバックスラッシュに置換されます。置換テキストの末尾にある単一のバックスラッシュは無視されます。エスケープされていないドル記号は、置換文字列トークンを形成しない場合、リテラルなドル記号です。ドル記号はバックスラッシュまたは別のドル記号でエスケープできます。したがって、$, $$、および\$はすべて、単一のドル記号に置換されます。
Rでは、ドル記号は特別な意味を持ちません。バックスラッシュは常に後続の文字をエスケープします。\!はリテラルな感嘆符に置換され、\\は単一のバックスラッシュに置換されます。置換テキストの末尾にある単一のバックスラッシュは無視されます。
Tclでは、アンパサンド&は特別な意味を持ち、置換テキストでリテラルなアンパサンドが必要な場合は、バックスラッシュでエスケープする必要があります。バックスラッシュを使ってバックスラッシュをエスケープできます。他の文字との組み合わせで特別な意味を抑制するためにのみ、バックスラッシュをエスケープする必要があります。に\!、バックスラッシュは、感嘆符と組み合わせて特別な意味を持たないため、リテラル文字です。バックスラッシュとアンパサンド以外の、感嘆符やその他の文字は、Tclの置換文字列で特別な意味を持たないため、エスケープすることはできず、また必要もありません。置換テキストの末尾にあるエスケープされていないバックスラッシュは、リテラルなバックスラッシュです。
XPathでは、エスケープされていないバックスラッシュはエラーです。トークンを形成しないエスケープされていないドル記号もエラーです。リテラル文字として使用するには、バックスラッシュとドルをバックスラッシュでエスケープする必要があります。バックスラッシュは、別のバックスラッシュまたはドル記号をエスケープする以外に特別な意味を持ちません。
Perlは特別なケースです。Perlには、実際には置換テキストの構文はありません。したがって、置換テキストのエスケープ規則もありません。Perlのソースコードでは、置換文字列は単に二重引用符で囲まれた文字列です。置換テキストで後方参照のように見えるものは、実際には補間された変数です。正規表現の一致後であれば、検索と置換を行っていない場合でも、他の二重引用符で囲まれた文字列に補間することができます。
前のセクションの規則は、これらのプログラミング言語の検索および置換関数が置換テキストをどのように解析するかを説明しています。アプリケーションがユーザー入力から置換テキストを受け取る場合、アプリケーションのユーザーはこれらのエスケープ規則に従う必要があり、これらの規則のみに従う必要があります。一重引用符や二重引用符のような文字が特殊文字ではないことに驚かれるかもしれません。それは正しいです。PowerGREPのようなテキストエディタの正規表現またはgrepツールを使用する場合、またはEditPad Proのようなテキストエディタの検索および置換機能を使用する場合は、プログラミング言語で行うように、引用符をエスケープまたは繰り返さないでください。
ソースコードで置換テキストを文字列定数として指定する場合は、プログラミング言語で文字列定数内でどの文字が特別扱いされるかを念頭に置いておく必要があります。それは、それらの文字が、置換テキスト関数が文字列を見る前に、コンパイラによって処理されるためです。たとえば、Javaでは、すべての正規表現の一致を単一のドル記号に置き換えるには、置換テキストを使用する必要があります。\$、ソースコードに次のように入力する必要があります。"\\$"。Javaコンパイラは、ソースコード内のエスケープされたバックスラッシュを、replaceAll()関数に渡される文字列内の単一のバックスラッシュに変換します。次に、その関数は、単一のバックスラッシュとドル記号をエスケープされたドル記号として認識します。
さまざまなプログラミング言語での置換文字列の使用方法の詳細については、このWebサイトのツールとプログラミング言語セクションを参照してください。
| クイックスタート | チュートリアル | ツールと言語 | 例 | リファレンス | 書評 |
| はじめに | 文字 | 非印刷文字 | マッチしたテキスト | 後方参照 | マッチコンテキスト | 大文字/小文字変換 | 条件 |
ページURL: https://regular-expressions.dokyumento.jp/replacecharacters.html
ページ最終更新日: 2021年8月12日
サイト最終更新日: 2024年3月15日
Copyright © 2003-2024 Jan Goyvaerts. All rights reserved.