有人可以编辑%:s/\([0-9]*\)_\(*\)/\2
以便我可以重命名文件。例如,如果文件名是5555_word_word.jpg
,那么我希望文件名为word_word.jpg
。我觉得我太近了!
答案 0 :(得分:6)
您可能希望简化并只删除前导数字和下划线:
s/^[0-9]+_//
答案 1 :(得分:3)
试试这个:
:%s/\([0-9]*\)_\(.*\)/\2
.
将匹配任何字符(第二个分组的一部分),*
将贪婪地匹配任意数量。你的原始正则表达式缺少该指令。这也会将_word_word.txt
格式的文件重命名为word_word.txt
。如果您想要匹配数字(可能是个好主意),请使用:
:%s/\([0-9]\+\)_\(.*\)/\2
\+
指令意味着匹配一个或多个实例。
答案 2 :(得分:3)
您的版本没问题,但您忘记了一段时间,您可能应该使用^
或\<
将其锚定到行的开头或字边界。
:%s/^\([0-9]*\)_\(.*\)/\2/
您可以使用\v
清除其中一些斜杠。
:%s/\v^([0-9]*)_(.*)/\2/
您可以使用\ze
来避免捕获组。
:%s/^[0-9]*_\ze.*//
但尾随.*
是多余的,因为它匹配任何东西。所以使用Seth的版本,这是最简单的。