正则表达式 - 替换文件标记的文件扩展名以外的所有内容

时间:2015-03-08 01:53:00

标签: regex replace mp3

我正在努力清理包含网络链接的mp3标签。我尝试了清除网络链接的正则表达式

(\w+)*(\s|\-)(\w+\.(\w+))

with
$1

但是,当我尝试在文件上使用相同的内容时,会替换扩展名。如何在此处进行扩展,.mp3作为上述正则表达式的例外?

我尝试使用this,但替换需要更多时间

2 个答案:

答案 0 :(得分:1)

根据您的示例,使用此模式

\s-\s\S+(?=\.)

并替换为/ nothing

\s              # <whitespace character>
-               # "-"
\s              # <whitespace character>
\S              # <not a whitespace character>
+               # (one or more)(greedy)
(?=             # Look-Ahead
  \.            # "."
)               # End of Look-Ahead

Demo

答案 1 :(得分:0)

如果仅替换第一组,则sthi将只是文件的名称,不包括扩展名。 您的正则表达式实际上没有捕获扩展名,它会在网站的顶级域名(.com)之后停止。

您应该使用:

(\w+)(\s\-\s)(\w+\.\w+.\w+)(\.\w+)

Regular expression visualization

Debuggex Demo

并按组1和组4替换所有内容。提醒通常组0包含正则表达式匹配的整个字符串。

更多细节,例如“MySong - www.mysite.com.mp3:

    (\w+) // 1. will match "MySong", replace by ([\w\s]+) to match "My Song"
    (\s\-\s)  // 2. will match " - "
    (\w+\.\w+.\w+)  // 3. will match "www.mysite.com". You may want to let "www." be optional by replacing by "([\w+\.]?\w+.\w+)
    (\.\w+)  // 4. the '.mp3" extension