正则表达式嵌套匹配替换问题,需要编写一个正则表达式匹配:“${if(任意字符)} ”,如果匹配上就替换为一个指定内容。
目前写的:
\$\{\s*if([\s\S]*)\}
可以实现匹配,但是如果存在内部循环的情况,会被全部替换掉,如下图所示。
目前这个正则表达式,会直接从A到D1全部替换了。我想实现 A-A1、B-B1、C-C1、D-D1 一个部分一个部分的匹配和替换,请帮忙,感激不尽!
正则表达式嵌套匹配替换问题,需要编写一个正则表达式匹配:“${if(任意字符)} ”,如果匹配上就替换为一个指定内容。
目前写的:
\$\{\s*if([\s\S]*)\}
可以实现匹配,但是如果存在内部循环的情况,会被全部替换掉,如下图所示。
目前这个正则表达式,会直接从A到D1全部替换了。我想实现 A-A1、B-B1、C-C1、D-D1 一个部分一个部分的匹配和替换,请帮忙,感激不尽!
正则表达式改为
\$\{\s*if([\s\S]*?)\}
*号在正则表达式中是贪婪匹配,如果想非贪婪匹配,要配合?问号一起使用。具体来说,在你的例子中,正则表达式 ${\s*if([\s\S]*)} 和 ${\s*if([\s\S]*?)} 用于匹配字符串中的条件标记,其中条件标记的形式为 ${\sif(条件)\s}$。