我有几个文件要重命名。我将使用批处理重命名器软件对其进行重命名。它可以使用正则表达式删除模式。这是两个文件名示例:
13 (a 3f kd) kjhucj 1 _ m (52 min) - jrhkfq 324
647 fjk3 d [63h hh] _ (jhgbh) abim (238 min)
我想删除_\s
之后的所有字符,但保留\(\d+\smin\)
部分。我希望将它们重命名为:
13 (a 3f kd) kjhucj 1 (52 min)
647 fjk3 d [63h hh] (238 min)
我尝试了_\s.*[^(\(\d+\smin\))]
,但结果很奇怪。我不知道这是否有可能。
答案 0 :(得分:0)
方括号是正则表达式中的特殊字符:将一组字符放在[
和]
之间时,它们被解释为与集合中的任何一个字符匹配。但是,这里您似乎要匹配一个真实的[
字符。您可以通过在其前面加上反斜杠来使[
不是 special ,因此请尝试用[
替换正则表达式中的\[
,看看是否会有所帮助。
答案 1 :(得分:0)
您真正想做的是删除_\s
和(
之间的所有内容以及)
之后的所有内容。另外,您希望将所有内容保持在_\s
以及(
和)
之间。您应该旨在定义捕获组的定界符,而不是大多数情况下的内容:
(.+?)_\s.*(\(\d+ min\)).*
在这种情况下,不要删除,而仅保留捕获组1和2的内容。许多工具可让您在替换模式中说类似\1\2
的内容。
如果您的工具删除了整个匹配项,并且您坚持要那样做,则必须使用两次通过方法,因为您要删除两个断开的区域。就像大多数工具一样,这将需要一个支持先行和后行的工具。
第一遍将使用
_\s.*(?=\(\d+ min\))
第二遍将删除
(?<=\(\d+ min\)).*