我目前正在开发一个解析音乐数据库数据的项目,我正在使用python(3.5.1版)中的正则表达式创建搜索功能。
我想创建一个正则表达式来制作歌曲名称 - 没有字符的歌曲跟随名称和带有功能详细信息的歌曲 - 但不是包含匹配歌曲名称中给定歌曲名称的歌曲(示例可能有助于说明我的观点):
我想要匹配的内容:
什么不想匹配:
我当前的正则表达式是' /工作(\ s(\ w +)?/ ',但这符合所有4个示例案例。
有人可以帮我找出一个表达方式来实现这个目标吗?
答案 0 :(得分:1)
就个人而言,我会选择像
这样的东西^Work(?:\s+\(.+\))?$
将匹配您提供的两个测试用例,但不是您要避免的两个测试用例。如果你想对匹配艺术家是谁更具体,你可以选择像
这样的东西^Work(?:\s+\((?:ft.|featuring).+\))?$
哪个仍会匹配您的两个案例,但只会匹配以“ft”开头的括号中的内容。或“特色”。