我正在使用软件使用正则表达式编辑歌曲。这就是我所拥有的:
吉米吃世界 - 中间 (.mp3)
我想做的是删除“-”之前的空格和之后的所有内容,所以我只剩下“Jimmy Eat World”
我想要执行的另一个操作是删除“-”之前的所有内容以及后面的空格,这样我就只剩下“中间”了
我正在使用软件使用正则表达式编辑歌曲。这就是我所拥有的:
吉米吃世界 - 中间 (.mp3)
我想做的是删除“-”之前的空格和之后的所有内容,所以我只剩下“Jimmy Eat World”
我想要执行的另一个操作是删除“-”之前的所有内容以及后面的空格,这样我就只剩下“中间”了
这很容易。
第一个动作- 删除破折号后的任何内容:
/ -.*/为空字符串。(请注意,破折号之前有一个实际空格。)/ +-.*/再次在 之前使用实际空格+)。第二个动作- 删除任何东西到破折号:
/.* - /为空字符串。(请注意,破折号后有一个实际空格。)笔记
/不是正则表达式的一部分,您不必输入它们。它们在这里用作视觉分隔符。.意思是“任何字符”(换行符除外,文件名中无论如何都不会有)*意思是“上一项,零到任意次数”+意思是“前一项,至少一次,可能是任意次数”^, $, ., +, *, ?, {, }, (, ), [, ], |and \,它们有自己的特殊含义,但在您的情况下没有更深的关注。您的程序是否能够提取正则表达式中括号包围的组?如果是这样,您可以在这里创建一个像这样的表达式(示例是用 Python 编写的):
In [1]: import re
In [2]: match_obj = re.match(r'(.+?)\s*-\s*(.+?)\.mp3', 'Jimmy Eat World - The Middle.mp3')
In [3]: match_obj.group(1)
Out[3]: 'Jimmy Eat World'
In [4]: match_obj.group(2)
Out[4]: 'The Middle'
这将匹配被空格包围的第一个连字符、空格以及它之后的所有内容(替换为空字符串):
\s\-\s.*
这将匹配被空格包围的第一个连字符、空格和它之前的所有内容:
.*\s\-\s
这将匹配它(.mp3)之前的文字和一个可选的空格(任意数量):
\s*\(\.mp3\)
要检索歌曲名称,请尝试替换.*-\s*为空。然后什么都不换\s*\(\.mp3\)。
如果您有各种文件类型,例如 MP3 和 WMA,您可以将其他文件类型添加到第二个正则表达式,如下所示\s*\(\.(mp3|wma|avi|mpg|mpeg)\):