Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 仅保留支架之间的特定部分,并移除所有其他部分_Regex_Literals - Fatal编程技术网

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+[\])])

它当然工作得很好,但对我来说有点太复杂了。有没有一个更简单的方法来做这件事(也许对我原来的正则表达式来说更像)?我似乎只理解“后缀不存在时匹配”部分,但我也无法让它工作。也许你可以让我知道你使用的语言?