如何正确匹配正则表达式中包含单词的标签?

时间:2017-11-09 22:02:49

标签: python regex

我试图自动删除包含"下载","免费"或"发布"使用RegEx从Python中的曲目标题开始,我已经接近解决方案,但我不知道为什么RegEx测试人员在我想删除的实际标签之前给我一个匹配。

而不是只匹配" [免费下​​载]"从曲目标题来看,它也匹配每个标签。我想用它来自动标记来自youtube-dl的下载曲目,因为SoundCloud和YouTube并没有给出好的元数据。

以下是我目前的RegEx:https://regex101.com/r/yaJ9yC/3

1 个答案:

答案 0 :(得分:0)

这是因为*单独是贪婪的。它符合线路上最长的可能性。例如:[\(\[]匹配(,然后.*匹配所有Astronaut REMIX) [FREEdownload.*[\)\]]匹配DOWNLOAD]

python re库中的非贪婪重复由*?完成。但是因为匹配从左侧站点开始,对于上面的示例,它仍然不起作用,您需要排除左侧站点上的括号和方括号:

 [\(\[][^\(\[]*download.*?[\)\]]