perl-rename 's/b(\d{2}A)/\1/' *
查找并重命名任何文件的每个部分
“b”后跟
后面跟着 2 位数字
“A”
是否有选项或方法使正则表达式不区分大小写,即也匹配第一部分的大写“B”和/或最后一部分的小写“a”?
答案1
Perl 中的替换命令s///
(以及 Perlrename
命令中)有一个标志/i
来执行不区分大小写的匹配。您需要做的就是
perl-rename -n 's/b(\d{2}A)/\1/i' *.jpg
-n
当您确定文件已按预期重命名时,请删除该标志。它仅进行一次试运行以显示文件最终将如何重命名。
要选择性地允许不区分大小写的匹配一个或多个字符,请使用 eg [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