Perl-rename:大文字と小文字を区別しない一致のための正規表現

Perl-rename:大文字と小文字を区別しない一致のための正規表現

perl-rename 's/b(\d{2}A)/\1/' *ファイルのすべての部分を見つけて名前を変更する

  1. 「b」の後に

  2. その後、2桁の数字

  3. 「ㅏ」

正規表現で大文字と小文字を区別しないようにするオプションや方法はありますか?つまり、最初の部分の大文字「B」および/または最後の部分の小文字「a」も一致しますか?

答え1

Perlの置換コマンドs///(Perlコマンドも含む)には、大文字と小文字を区別しない一致を実行するrenameフラグがあります。/i何をすべきか

perl-rename -n 's/b(\d{2}A)/\1/i' *.jpg

-nファイル名が期待どおりに変更されたことがわかったら、フラグを削除します。ファイル名が最終的にどのように変わるかを示すために、テスト実行のみを実行します。

1つ以上の文字に対して大文字と小文字を区別しない一致を選択的に許可するには、たとえば[aA](一致aまたはA)を使用します。

答え2

修飾子は最も一般的でよく知られている答えですが、正規表現/i自体内で修正される可能性があると言うべきです。

/(?i)b(\d{2}A)/

これは、動的に生成されたスキーマ、ファイルに保存されているスキーマなどに役立ちます。また、グループに制限して(キャプチャまたはその他)「オフ」にすることもできます。

/(?:(?i)b(\d{2}A)) Foo Bar/ # the Foo Bar portion is still case-sensitive

またはモーダル設定なので、否定で閉じることができます。

/(?i)b(\d{2}A)(?-i) Foo Bar/ # again only Foo Bar is case sensitive

関連情報