我正在使用软件使用正则表达式编辑歌曲。这就是我所拥有的:
吉米吃世界 - 中间 (.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)\)
: