Perl-rename:用于不区分大小写匹配的正则表达式

Perl-rename:用于不区分大小写匹配的正则表达式

perl-rename 's/b(\d{2}A)/\1/' *查找并重命名任何文件的每个部分

  1. “b”后跟

  2. 后面跟着 2 位数字

  3. “A”

是否有选项或方法使正则表达式不区分大小写,即也匹配第一部分的大写“B”和/或最后一部分的小写“a”?

答案1

Perl 中的替换命令s///(以及 Perlrename命令中)有一个标志/i来执行不区分大小写的匹配。您需要做的就是

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

-n当您确定文件已按预期重命名时,请删除该标志。它仅进行一次试运行以显示文件最终将如何重命名。

要选择性地允许不区分大小写的匹配一个或多个字符,请使用 eg [aA](将匹配aA)。

答案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

相关内容