我有一整套书籍的格式为
A Knight dogs of the Word - Terry Brooks.epub
或
Enders Game - Orson Scott Card.epub
我希望将它们换成表格
Author's name - Book name.epub
我查看了网站,发现了这个:
^(.*)\s+(\w+\s+\w+)$
接下来是:
$2 : $1
(我发现\ 2 - \ 1产生了我想要的一些书的结果,但也带有尾随 - 。
然而,任何具有不同结构名称的书,如Orson Scott Card也会留下名字,如果有两个人用&编写了这本书,这真的很奇怪。他们之间。
答案 0 :(得分:2)
让我做几个假设:
在这种情况下,您可以替换:
^(.*?)\s*-\s*(.*?)\.epub$
使用“$2
- $1
。epub”。
这是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实用程序上有很多可以轻松实现这一点,例如:
答案 1 :(得分:1)