您好我想用模式<%= anything %>
替换所有文本
<%= someFunction(anything) %>
。我想保留新字符串中的任何内容。
示例:
<%= user %>
<%= encode(user) %>
OR
<%=user%>
<%=encode(user)%>
有可能使用REGEX或其他方法吗?
之前谢谢
答案 0 :(得分:0)
正则表达式应该可以工作,就像这样
String res = "xxx <%= anything %> xxx".replaceAll("<%= (.*) %>", "<%= func($1) %>");
答案 1 :(得分:0)
是的,可以使用正则表达式。模式\\s*
匹配可选空格,\\S+
匹配一个(或多个)非空白字符。您可以将其与String.format
结合使用。像,
String str = "<%= user %>"; // <-- the input String
String function = "encode"; // <-- the function to add
// Create an output pattern using $1; the first match to `()` in replaceAll.
String replacement = String.format("<%%= %s($1) %%>", function);
str = str.replaceAll("<%=\\s*(\\S+)\\s*%>", replacement);
System.out.println(str);
输出(按要求)
<%= encode(user) %>
答案 2 :(得分:0)
您可以使用正则表达式。
str.replaceAll("\\<%= (.*) %\\>","<%= blah($1) %=>");
第一部分是模式(你想要找到的),第二部分是替换(你希望它看起来像什么)。
我建议您阅读有关正则表达式here的更多信息并在第一个链接上进行游戏。