正则表达式中的最后匹配符号

2 投票
4 回答
564 浏览
提问于 2025-04-15 20:21

我找不到更合适的标题,不过这里有个例子:

import re
m = re.search(r"\((?P<remixer>.+) (Remix)\)", "Title (Menda Remix)")
m.group("remixer") # returns 'Menda' OK
m = re.search(r"\((?P<remixer>.+) (Remix)\)", "Title (Blabla) (Menda Remix)")
m.group("remixer") # returns 'Blabla) (Menda' FAIL

这个正则表达式可以找到第一个括号,但我想要找到最后一个括号,这样我总是能得到'Menda'。我用了一些额外的函数来解决这个问题,但我希望能用同一个正则表达式找到一个更简单、更一致的方法。

非常感谢大家。

4 个回答

1

[^()]+ 代替 .+,这样就不会匹配到括号了。

1

我可能会这样做:

m = re.search(r".*\((?P<remixer>.+) (Remix)\)", "Title (Blabla) (Menda Remix)")
3
re.search(r"\((?P<remixer>[^)]+) (Remix)\)", "Title (Blabla) (Menda Remix)")

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

撰写回答