我有一段代码试图在循环中重复匹配模式和递增的索引:
for(int count = 0; count < args.length; count++) {
message.replaceFirst("^\\{" + count + "\\d}$", args[count]);
}
我希望能够做的是将消息字符串中的{0},{1}等的出现替换为args中的出现。但尽量尝试,我根本无法得到匹配的模式。我不是正则表达式专家,但我已经尝试了基于其他问题的各种正则表达式组合。我也尝试在StringUtils中使用replace方法无济于事。有人可以提供任何建议吗?
答案 0 :(得分:1)
根本不要使用正则表达式。您事先知道您的搜索字符串并且它是常量(即您可以从常量字符串加变量count
构建它),因此不需要合并正则表达式。
答案 1 :(得分:1)
^
和$
个字符是锚点。它们匹配字符串的开头和结尾。只有整个String只是{\\d}
时,该表达式才会匹配。我认为他们根本不需要在那里。
此外,字符串在java中是不可变的,正确的用法是message = message.replaceAll(blah);
答案 2 :(得分:0)
试试这个正则表达式:
String pattern = "^\\{\\d+\\}$";
说明:
{
}
示例:
String s = "{12}";
String pattern = "^\\{\\d+\\}$";
String s2 = s.replaceFirst(pattern, "9");
System.out.println(s2);
输出:
9
这应该很容易应用于您的代码。