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

Regular Expression - Replace all except the file extension for file tagging

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

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

with

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

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

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

你应该使用:

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

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

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

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

什么都不替换

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

Demo