让我做几个假设:
- 名称的第一部分不能包含“-”
- 所有文件都以“.epub”结尾
在这种情况下,您可以替换:
^(.*?)\s*-\s*(.*?)\.epub$
使用“ $2
-.epub $1
”。
这是 Java 中的概念证明(忽略双反斜杠 - 这只是 Java 语法):
public static void main(String[] args) throws Exception {
final String[] testData = {"A Knight dogs of the Word - Terry Brooks.epub", "Enders Game - Orson Scott Card.epub"};
final Pattern patt = Pattern.compile("^(.*?)\\s*-\\s*(.*?)\\.epub$");
for(final String s : testData) {
final Matcher m = patt.matcher(s);
if(m.matches()) {
System.out.println(m.group(2) + " - "+ m.group(1) + ".epub");
}
}
}
输出:
Terry Brooks - A Knight dogs of the Word.epub
Orson Scott Card - Enders Game.epub
正如其他人指出的那样,正则表达式不一定是这项工作的正确工具,它有点像大锤核桃问题。UNIX 上有很多实用程序可以轻松地做到这一点,例如:
- mmv
- 普通的 bash