我正试图从下面的字符串中找到所有顶级的'except'子句。
where (
param1 equals value1
and
param 2 equals valu2
except (
param3 equals value3
where (
param4 equals value4
except (
param6 equals value6
)
)
)
)
except (
param5 equal value5
)
预期结果:
except (
param3 equals value3
where (
param4 equals value4
except (
param6 equals value6
)
)
)
&
except (
param5 equal value5
)
我是regex的新手,我尝试了下面的regex,但它不起作用。除外((?:[^((]+|(?R((+(
演示:https://regex101.com/r/AJZ1MV/1
此正则表达式将您提到但必须改进的情况分组:
(?:(?<=[s])(except (?:.|s)*)(?=except|)))?|(?:(?<=n)(except (?:.|s)*)(?=$|)))
演示:https://regex101.com/r/20RAQV/1