クイックスタート
チュートリアル
ツールと言語
リファレンス
書評
置換テキストチュートリアル
はじめに
文字
非表示文字
一致したテキスト
バックリファレンス
一致コンテキスト
大文字小文字変換
条件式
このサイトについて
はじめに
正規表現クイックスタート
正規表現チュートリアル
置換文字列チュートリアル
アプリケーションと言語
正規表現の例
正規表現リファレンス
置換文字列リファレンス
書評
印刷可能なPDF
このサイトについて
RSSフィードとブログ

置換テキストの大文字小文字変換

一部のアプリケーションでは、正規表現またはキャプチャグループによって一致したテキストを大文字または小文字に変換して挿入できます。Just Great Softwareアプリケーションでは、一致したテキストトークン\0およびバックリファレンス\1介して\99挿入されるテキストの大文字小文字を変更する文字をプレフィックスとして付けることができます。Uは大文字用、Lは小文字用、Iは単語の先頭文字を大文字、それ以外は小文字にするイニシャルキャピタル用、そしてFは先頭文字を大文字、それ以外は小文字にする先頭キャピタル用です。この文字は、それが含まれるバックリファレンスの大文字小文字のみに影響します。

正規表現(?i)(Helló) (Wórld)HeLlÓ WóRlDに一致する場合、置換テキスト\U1 \L2 \I0 \F0HELLÓ wórld Helló Wórld Helló wórld.

正規表現と置換テキストにおけるPerl文字列機能

Perlにおける正規表現と置換テキストの二重スラッシュと三重スラッシュ表記は、二重引用符文字列のすべての機能をサポートしています。最も顕著なのは変数補間です。正規表現に関連する変数を置換テキストで使用することで、正規表現またはキャプチャグループによって一致したテキストを簡単に挿入できます。

Perlの大文字小文字変換エスケープも置換テキストで機能します。最も一般的な用途は、補間された変数の大文字小文字を変更することです。\Uは次の\Lまたは\Eまで全てを大文字に変換します。\Lは次の\Uまたは\E小文字に変換します。\uは次の文字を大文字に変換します。\lは次の文字を小文字に変換します。これらを組み合わせることで\l\Uのように最初の文字を小文字、残りを大文字にするか、または\u\Lのように最初の文字を大文字、残りを小文字にすることができます。\Eは大文字小文字変換をオフにします。最初に\uまたは\lでシーケンスを停止しない限り、\Uまたは\Lの後で使用することはできません。\E.

正規表現(?-i)(helló) (wórld)HeLlÓ WóRlDに一致する場合、置換テキスト\U\l$1\E \L\u$2hELLÓ Wórld。リテラルテキストも影響を受けます。\U$1 Dear $2HELLÓ DEAR WÓRLD.

Perlの大文字小文字変換は正規表現でも機能しますが、期待通りに動作するとは限りません。Perlは、スクリプト内の文字列を解析して変数を補間するときに大文字小文字変換を適用します。これは、置換テキストのバックリファレンスでは非常に有効です。なぜなら、それらはPerlで補間された変数だからです。しかし、正規表現内のバックリファレンスは、変数ではなく正規表現トークンです。(?-i)(a)\U\1aaではなくaA. \1は、マッチングプロセス中にではなく、正規表現が解析されるときに大文字に変換されます。そのため\1には文字が含まれていないため、これは効果がありません。正規表現\U\w, \wは、正規表現が解析されるときに大文字に変換されます。つまり、\U\w\Wと同じであり、単語文字ではない任意の文字に一致します。

Boostの置換文字列の大文字小文字変換

Boostは、デフォルトの置換形式または「all」置換形式を使用する場合、置換文字列で大文字小文字変換をサポートします。\Uは次の\Lまたは\Eまで全てを大文字に変換します。\Lは次の\Uまたは\E小文字に変換します。\uは次の文字を大文字に変換します。\lは次の文字を小文字に変換します。\Eは大文字小文字変換をオフにします。Perlと同様に、大文字小文字変換は置換文字列のリテラルテキストとバックリファレンスによって挿入されたテキストの両方に影響します。

BoostとPerlの違いは、これらの組み合わせを逆にする必要がある点です。\U\lは最初の文字を小文字、残りを大文字にします。\L\uは最初の文字を大文字、残りを小文字にします。Boostはまた、\l内の\Uシーケンスと\u内の\Lシーケンスを許可します。そのため、(?-i)(helló) (wórld)HeLlÓ WóRlDを使用できます。\L\u\1 \u\2を使用して一致をHelló Wórld.

で置換します。

PCRE2は、PCRE2_SUBSTITUTE_EXTENDEDを使用する場合、置換文字列で大文字小文字変換をサポートします。\Uはそれに続くすべてを大文字に変換します。\Lはそれに続くすべてを小文字に変換します。\uは次の文字を大文字に変換します。\lは次の文字を小文字に変換します。\Eは大文字小文字変換をオフにします。Perlと同様に、大文字小文字変換は置換文字列のリテラルテキストとバックリファレンスによって挿入されたテキストの両方に影響します。

Perlとは異なり、PCRE2では\U, \L, \u\lはすべて先行する大文字小文字変換を停止します。そのため、たとえば、最初の文字を大文字にして残りを小文字にするために\L\uを組み合わせることはできません。\L\uは最初の文字を大文字にし、残りは変更しません。これは\u. \u\Lと同じようにすべての文字を小文字にします。これは\L.

PCRE2では、大文字小文字変換は条件式を通して実行されます。条件式の前に有効になっている大文字小文字変換は、条件式にも適用されます。条件式が実際に使用される部分に独自のケース変換エスケープが含まれている場合、それらは条件式の後も有効のままです。そのため、${1:+\U:\L}${2}を使用して、最初のグループが参加した場合は大文字で、そうでない場合は小文字で、2番目のキャプチャグループによって一致したテキストを挿入できます。

Rのバックリファレンス大文字小文字変換

Rのsub()gsub()関数は、Perl文字列に触発された大文字小文字変換エスケープをサポートしています。\Uは次のまですべてのバックリファレンスを大文字に変換します。\Lまたは\Eまで全てを大文字に変換します。\Lは次のまですべてのバックリファレンスを大文字に変換します。\Uまたは\E小文字に変換します。\Eは大文字小文字変換をオフにします。

正規表現(?i)(Helló) (Wórld)HeLlÓ WóRlD置換文字列\U$1 \L$2HELLÓ wórld。リテラルテキストは影響を受けません。\U$1 Dear $2HELLÓ Dear WÓRLD.