用正则表达式或其他可能的方法替换特定字符

时间:2016-03-19 05:13:41

标签: java regex

您好我想用模式<%= anything %>替换所有文本 <%= someFunction(anything) %>。我想保留新字符串中的任何内容。

示例:

<%= user %>
<%= encode(user) %>

OR

<%=user%>
<%=encode(user)%>

有可能使用REGEX或其他方法吗?

之前谢谢

3 个答案:

答案 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) %=>");

第一部分是模式(你想要找到的),第二部分是替换(你希望它看起来像什么)。

参考: http://fiddle.re/u374q6

我建议您阅读有关正则表达式here的更多信息并在第一个链接上进行游戏。