首页 > 解决方案 > 正则表达式 - 匹配最后出现的括号

问题描述

在下面的字符串中,我试图获取子字符串子(2005, Penguin Classics)字符串。

Marshall B. Rosenberg 博士 - 愤怒的令人惊讶的目的_超越愤怒管理_寻找礼物(非暴力沟通指南)(2005 年,企鹅经典)AAA.pdf

我这样做是为了将子字符串更改为 (2005)。

以下是我当前的解决方案,但它同时匹配(Nonviolent Communication Guides)(2005, Penguin Classics)。有想法该怎么解决这个吗?

import re

parentheses_pattern = "\(([^)]+)\)*$"
reg = re.search(parentheses_pattern, filename)
year = reg.group()
year = year[:5]+")"
filename = re.sub(parentheses_pattern,year,filename)

标签: pythonregexpattern-matchingregex-lookaroundsregexp-replace

解决方案


也许这会有所帮助:

r"\(([^\)]+)\)[^\(]*$"

推荐阅读