我正在使用软件使用正则表达式编辑歌曲。这就是我所拥有的:
吉米吃世界 - 中间(.mp3)
我想要做的是删除“ - ”之前的空格以及之后的所有内容,所以我只剩下“吉米吃世界”
我想要执行的其他操作是删除所有内容,直到“ - ”和后面的空格,所以我只剩下“中间”
答案 0 :(得分:9)
这很简单。
第一个操作 - 删除短划线后的所有内容:
/ -.*/
。 (注意破折号前面有一个实际空间。)/ +-.*/
(同样在+
之前有一个实际空格。)第二次操作 - 删除短划线上的所有内容:
/.* - /
。 (注意破折号后面有一个实际的空格。)注释
/
不是正则表达式的一部分,您不必输入它们。它们在这里作为视觉分隔符。.
表示“任何字符”(换行符除外,您不会在文件名中使用)*
表示“上一项,零至任意次数” +
表示“上一项,至少一次,可能是任意次数” ^
,$
,.
,+
,*
,?
,{
,}
,(
,)
,[
,]
,|
和\
,它们有其特殊的含义,但没有深入关注你的情况。答案 1 :(得分:1)
这将匹配用空格,空格和后面的所有内容包围的第一个连字符(用空字符串替换):
\s\-\s.*
这将匹配用空格,空格和之前的所有内容包围的第一个连字符:
.*\s\-\s
这将匹配文字(.mp3)
和之前的可选空格(任意金额):
\s*\(\.mp3\)
答案 2 :(得分:0)
要检索歌曲名称,请尝试替换.*-\s*
。然后无需替换\s*\(\.mp3\)
。
如果你有各种文件类型,如MP3和WMA,你可以将其他文件类型添加到第二个正则表达式,如下所示:\s*\(\.(mp3|wma|avi|mpg|mpeg)\)
。
答案 3 :(得分:0)
您的程序是否能够提取正则表达式中括号括起来的组?如果是这样,你可以在这里创建一个像这样的表达式(例子是用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'