用于删除文件名中的多个段的正则表达式



我有几个文件要重命名。我将使用批量重命名器软件重命名它们。它可以使用正则表达式删除模式。下面是两个文件名示例:

  • 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))]但得到了奇怪的结果。我不知道这是否可能。

您真正要做的是删除_s(之间的所有内容,以及)之后的所有内容。或者,您希望将所有内容都保持到_s,以及介于()之间。大多数时候,您应该以定义捕获组的分隔符而不是内容为目标:

(.+?)_s.*((d+ min)).*

在这种情况下,不要删除捕获组 1 和 2 的内容。许多工具将允许您在替换模式中说出类似12的话。

如果您的工具删除了整个匹配项,并且您坚持这样做,则必须使用两次传递方法,因为您要删除两个断开连接的区域。这将需要一个支持前瞻和后视的工具,就像大多数工具一样。

第一遍将使用

_s.*(?=(d+ min))

第二遍将删除

(?<=(d+ min)).*

方括号是正则表达式中的特殊字符:当您在[]之间放置一组字符时,它们将被解释为与集合中的任何一个字符匹配。但是,在这里您似乎想要匹配一个真实的[角色。您可以通过在[前面放置反斜杠来使其不特别,因此请尝试将正则表达式中的[替换为[,看看是否有帮助。

相关内容

  • 没有找到相关文章

最新更新