我有这段文字:

  ${{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/

10-12 19:04