我试图写模式,以识别公式,如果形式字符串。
例如字符串
[@param_6@] @IF(@param_5@==null;@param_5@;@IF(1==1;@param_2@;@param_4@)@)@ - @param_3@ - <@IF(@parameter_tag2@ == null;@param_4@;@param_5@)@>我想得到这个结果
1. Match: @IF(@param_5@==null;@param_5@;@IF(1==1;@param_2@;@param_4@)@)@
2. Match: @IF(@parameter_tag2@ == null;@param_4@;@param_5@)@我的模式看起来是:
@IF\(.*\;.*\;.*\)@但是regex给了我错误的结果。
发布于 2022-03-08 12:34:52
您可以使用
(?s)@IF\((?>(?!@IF\(|\)@).|(?<o>)@IF\(|(?<-o>)\)@)*\)@见regex演示。详细信息
(?s) - RegexOptions.Singleline等效,.现在也与LF字符匹配。@IF\( -一个@IF(字符串(?>(?!@IF\(|\)@).|(?<o>)@IF\(|(?<-o>)\)@)* -- 的零次或多次重复(?!@IF\(|\)@).| -任何不启动@IF(或)@字符序列的字符(?<o>)@IF\(| -一个@IF(子字符串和一个值被推送到"o“组堆栈,或者(?<-o>)\)@ -从"o“组堆栈弹出一个)@字符串和一个值。\)@ -一个)@字符串https://stackoverflow.com/questions/71395090
复制相似问题