-1

以下字符串 - 匹配:

"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 正则表达式

4

1 回答 1

4

例如,在 Perl 或 PHP 中,您可以使用正则表达式

/\((?:[^()]++|(?R))*\)/

匹配平衡的括号及其内容。

regex101上查看。

要从$subjectPerl 中的字符串中删除所有这些匹配项,您可以使用

$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 )
于 2013-09-06T08:49:14.210 回答