使用正则表达式在两个不同字符前后存储文本

Using regex to store text before and after two different characters

我有一系列具有这种格式的文件:

01x05e - Some text (Some more text)
01x05f - Some text (Some more text)
01x05g - Some text (Some more text)

我想做的是剥离它们来制作这个:

01x05e - Some more text
01x05f - Some more text
01x05g - Some more text

为此,我使用了批量重命名实用程序。我以为我有一些正则表达式可以用来做这个:

-.*?\(

这成功匹配了上面“-”和“(”之间的所有内容。我希望我可以用它来删除所有这些文本,然后再要求批量重命名实用程序对最后一个进行非常微不足道的删除每个文件名中的字符(即“)”)。

但是,在批量重命名实用程序中,我不能只匹配文本并将其替换为无内容以将其删除。相反,我必须指定一个替换标准,而我输入的任何内容似乎都不起作用。每当我在 "replace" 部分输入任何数据时,它只会删除我的所有文件名。

这让我认为我需要以不同的方式处理正则表达式并找到某种方式来获取“-”之前的数据并获取“(”和“)”之间的数据并将它们放在一起。

但是,我什至不知道如何开始这样做。这是正确的方法,还是我遗漏了一些关于匹配和替换我目前拥有的正则表达式的明显信息?

批量重命名实用程序有一个支持网站,包括一个论坛,其中有一个部分提供正则表达式重命名支持,here

您似乎想要从第一个括号(打开)到最后一个括号(关闭)进行捕获,并删除第一个连字符之后的所有内容。捕获组是你的朋友:

^([^-]* -)   - This will match from start to first hyphen after space.

[^(]*    - This will match everything except open paren.

\((.*)\)$ - This will match things inside the parens.

你可以把它们放在一起:

^([^-]* -)[^(]*\((.*)\)$

并将其替换为第一组和最后一组: