我有几个文件要重命名。我将使用批量重命名器软件重命名它们。它可以使用正则表达式删除模式。下面是两个文件名示例:
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)).*
方括号是正则表达式中的特殊字符:当您在[
和]
之间放置一组字符时,它们将被解释为与集合中的任何一个字符匹配。但是,在这里您似乎想要匹配一个真实的[
角色。您可以通过在[
前面放置反斜杠来使其不特别,因此请尝试将正则表达式中的[
替换为[
,看看是否有帮助。