搜索和替换模式 - 正则表达式模式

时间:2014-01-12 20:12:56

标签: regex

我正在使用RegexRenamer以使用regex match& replace重命名某些文件;

不幸的是,该教程没有涵盖任何接近我想做的事情,也不太了解正则表达式是如何工作的。 我基本上想要做的是用以下模式重命名一些文件。

艺术家,姓名 - 歌曲名称

  

杰克逊,迈克尔 - 我们是世界

最终结果应为:

  迈克尔杰克逊 - 我们是世界。

我对这首特色歌曲的规则有一些例外,但是第一个例子的代码肯定会让我的日常用户用谷歌搜索。

例外:

  

杰克逊,迈克尔&阿肯 - 握住我的手

应该是

  迈克尔杰克逊&阿肯 - 握住我的手

3 个答案:

答案 0 :(得分:0)

您可以使用以下内容:

^([\w -]+?),\s+([\w -]+)\s+([&\w ]+)?\s*-\s+(.*)$

示例:http://regex101.com/r/pZ5fP6

答案 1 :(得分:0)

正则表达式很难,特别是如果你是新手。试试这个:

Find: "([a-zA-Z]+), ([a-zA-Z]+)([a-zA-Z& ]*) \\- ([a-zA-Z ]+)\n"
         /\ group 1.  /\ group 2.   /\ 3.              /\ 4
Replace: "$2 $1 $3 - $4"

请注意,某些正则表达式字符需要进行转义,并且我使用双反斜杠转义它们,就像在大多数编程语言中一样。如果你只需要一个反斜杠,请使用一个反斜杠,但请注意,你需要用换行符替换\ n。

基本上它的作用是匹配两个以逗号分隔的字母单词,分为1美元和2美元。 [a-zA-Z]+表示匹配一个或多个字母字符。括号使它捕获任何匹配,以便我们可以在以后替换它。它交换了这些名字。然后它在3美元之前捕获任何额外的东西,然后追加。这就像第1组和第2组一样,除了它还包括&字符和空格,它有*而不是+,所以它匹配0或更多字符。 (额外部分可能存在也可能不存在)。最后,它以4美元的价格捕获歌曲名称并追加。我假设所有歌曲名称只包含字母字符和空格。如果您的歌曲名称包含其他内容,则需要将其添加。

免责声明:此正则表达式未经过测试,可能包含错误。

答案 2 :(得分:0)

正则表达式:

(\w+),\s+(\w+)

替换:

$2 $1

Live demo #1

多次出现:

(?:(\w+),\s+(\w+))+

Live demo #2

如果歌曲名称中也可能包含逗号,,请使用:

(\w+),\s+(\w+)(?=.*?-)