<#if ${x} == 'abc' > ${add} <#else if ${y} == 'dfg' > bef </#if>
在此,我要删除${
和}
内的所有<
和>
。 ,我怎么能在java中做到这一点?
预期的产出应该是
<#if x == 'abc' > ${add} <#else if y == 'dfg' > bef </#if>
答案 0 :(得分:2)
你可以试试这个:
String str = "<#if ${x} == 'abc' > ${add} <#else if ${y} == 'dfg' > bef </#if>";
System.out.println(str.replaceAll("(<#.+?)\\$\\{(.+?)\\}(.+?>)", "$1$2$3"));
收率:
<#if x == 'abc' > ${add} <#else if y == 'dfg' > bef </#if>
正则表达式可用解释here。
编辑:
我已经做了一些修正,以及我如何假设else
将被实施。代码应该可以解决问题:
String str = "<#if ${x} || ${z} > ${add} <#else if ${y} == 'dfg' && ${x} == 'abx'> bef <#else if ${y} == 'dfg' > sdadas <#else> ${foo}</#if>";
System.out.println(str.replaceAll("(?<=(?!<#else>)<#|\\|\\||&&)(.+?)\\$\\{(.+?)\\}", "$1$2"));
鉴于此:
<#if ${x} || ${z} > ${add} <#else if ${y} == 'dfg' && ${x} == 'abx'> bef <#else if ${y} == 'dfg' > sdadas <#else> ${foo}</#if>
收率:
<#if x || z > ${add} <#else if y == 'dfg' && x == 'abx'> bef <#else if y == 'dfg' > sdadas <#else> ${foo}</#if>