我有这段文字:
${{stuff${{more stuff}}}}
我要这个:
data(stuff+data(more stuff))
不是这个:
data(stuffdata(more stuff))
我的代码:
int flags = Pattern.CASE_INSENSITIVE | Pattern.DOTALL;
Pattern dataPattern = Pattern.compile("\\$\\{\\{(?<DATA>.*?)\\}\\}", flags);
Matcher dataMatcher = dataPattern.matcher("");
String raw = "${{stuff${{more stuff}}}}";
dataMatcher.reset(raw);
String result = dataMatcher.replaceAll("data($1)");
那么...如何识别嵌套状态并添加加号呢?
最佳答案
与我最初的评论(仍然适用于一般情况)相反,我认为您的语法实际上足够简单,可以通过简单的替换来解决问题:
${{ --> +data(
}} --> )
然后,在您构建了最后一个字符串之后,请丢弃第一个字符(即
finalResult.substring(1)
。关于java - 如何使用关于嵌套标签和识别嵌套状态的replaceAll?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20628677/