将嵌套双括号对替换为单个

时间:2018-06-25 10:57:38

标签: regex visual-studio-code

任何想法如何替换:

..((....))..

使用:

..(...)..

请注意,它不是将“(((” )替换为“(” 。表达式必须确定包含要删除的子括号对。直接与父对配对,没有其他内容。

如果有人可以弄清楚如何递归运行,例如“((((...)))” “(...)”

1 个答案:

答案 0 :(得分:1)

您可以使用此:

([(]*)(?:\([^)]*\))([)]*)

如果第一个组的大小等于第二个组的大小,或者只使用最小的一个,则只需用空字符串替换组。

测试:

(ABC)
((ABC))
(((ABC)))
((ABC)a)

比赛信息:

Match 1
Full match  0-5 `(ABC)`
Group 1.    0-0 ``
Group 2.    5-5 ``
--> Hence, no update required
Match 2
Full match  6-13    `((ABC))`
Group 1.    6-7 `(`
Group 2.    12-13   `)`
--> As Group 1 and Group 2 size is same, replace those values with '' resulting to '(ABC)
Match 3
Full match  14-23   `(((ABC)))`
Group 1.    14-16   `((`
Group 2.    21-23   `))`
--> Same in this case as well
Match 4
Full match  24-30   `((ABC)`
Group 1.    24-25   `(`
Group 2.    30-30   ``
--> As group 1 and group 2 are not of same size, reduce to the min one which is group 2 (size 0) and hence no update required leaving it to '((ABC)A)'

Demo