Regex 仅保留支架之间的特定部分,并移除所有其他部分
我要删除[]和()之间的所有内容 样本:Regex 仅保留支架之间的特定部分,并移除所有其他部分,regex,literals,Regex,Literals,我要删除[]和()之间的所有内容 样本: ST Action第08期(1988-12)(高尔纳出版有限公司) ST杂志070(1993-03)(环境地球)(fr) 《海底两万联赛》(1988)(科特尔愿景)[cr Big 4] 比赛的一天(1989)(团队)(光盘1/2)[cr MCA] 我的正则表达式:[^a-zA-Z\s\d][\d-()a-zA-Z\]+ 它可以工作,唯一的问题是我需要保留这个:(磁盘1/2)。在最后一个例子中,是这样的:比赛的一天(磁盘1/2) 我找不到排除(第1张,共2
ST Action第08期(1988-12)(高尔纳出版有限公司)
ST杂志070(1993-03)(环境地球)(fr)
《海底两万联赛》(1988)(科特尔愿景)[cr Big 4]
比赛的一天(1989)(团队)(光盘1/2)[cr MCA] 我的正则表达式:
[^a-zA-Z\s\d][\d-()a-zA-Z\]+
它可以工作,唯一的问题是我需要保留这个:(磁盘1/2)。在最后一个例子中,是这样的:比赛的一天(磁盘1/2)
我找不到排除
(第1张,共2张)
(即“不匹配”)并将其集成到整个表达式中的方法。您可以利用消极的前瞻(?![([[]第1张,共2张[\]))
来避免匹配(第1张,共2张)
或[第1张,共2张]
:
(?![([]Disk 1 of 2[\])])(?:\([^()]*\)|\[[^\][]*])
见
(?:\([^()]*\)\[^\][*])
部分只匹配圆括号(括号)之间没有括号的字符串(\([^()]*\)
)或(
)方括号内没有方括号的字符串(\[^\][*])
)
如果
1
和2
是动态的,并且代表整数,那么使用\d+
:(?![([]磁盘\d+of\d+[\])])
它当然工作得很好,但对我来说有点太复杂了。有没有一个更简单的方法来做这件事(也许对我原来的正则表达式来说更像)?我似乎只理解“后缀不存在时匹配”部分,但我也无法让它工作。也许你可以让我知道你使用的语言?