以下字符串 - 匹配:
"MNO(A=(B=C) D=(E=F)) PQR(X=(G=H) I=(J=(K=L)))" - "MNO"
"MNO(A=(B=C) D=(E=F))" - "MNO"
"MNO" - "MNO"
"RAX.MNO(A=(B=C) D=(E=F)) PQR(X=(G=H) I=(J=(K=L)))" - "RAX.MNO"
"RAX.MNO(A=(B=C) D=(E=F))" - "RAX.MNO"
"RAX.MNO" - "RAX.MNO"
每个大括号内都可以是无限组,但必须正确关闭。
任何想法?不知道如何正确测试亲密度。
必须使用Perl-Regular-Expression
答案 0 :(得分:4)
例如,在Perl或PHP中,您可以使用像
这样的正则表达式/\((?:[^()]++|(?R))*\)/
匹配平衡括号及其内容。
在regex101上查看。
要从Perl中的字符串$subject
中删除所有匹配项,您可以使用
$subject =~ s/\((?:[^()]++|(?R))*\)//g;
<强>说明:强>
\( # Match a (
(?: # Start of non-capturing group:
[^()]++ # Either match one or more characters except (), don't backtrack
| # or
(?R) # Match the entire regex again, recursively
)* # Any number of times
\) # Match a )