我想删除[]和()
之间的所有内容样品:
ST Action Issue 08(1988-12)(GollnerPublishing Ltd)
ST Magazine 070(1993-03)(La Terre du Milieu)(fr)
20000海底联赛(1988)(Coktel Vision)[cr Big 4]
比赛日(1989年)(队)(第1轮,共2册)[cr MCA]
我的正则表达式:[^a-zA-Z\s\d][\d-()A-Za-z\] ]+
它有效,唯一的问题是我需要保留这个:(磁盘1的2)。所以在最后一个例子中,这将是这样的:比赛的一天(磁盘1的2)
我找不到排除(Disk 1 of 2)
的方法(即“不匹配”)并将其整合到整个表达式中。
答案 0 :(得分:1)
您可以利用消极前瞻(?![([]Disk 1 of 2[\])])
来避免匹配(Disk 1 of 2)
或[Disk 1 of 2]
:
(?![([]Disk 1 of 2[\])])(?:\([^()]*\)|\[[^\][]*])
请参阅regex demo
(?:\([^()]*\)|\[[^\][]*])
部分匹配圆括号(圆括号)中不包含括号(\([^()]*\)
)或(|
)的字符串,方括号内的字符串不包含方括号(\[[^\][]*]
)。
如果1
和2
是动态的,代表整数,请使用\d+
:(?![([]Disk \d+ of \d+[\])])