正则表达式 - 捕获花括号之间的增量数字

时间:2011-11-01 21:02:07

标签: java regex

我有一段代码试图在循环中重复匹配模式和递增的索引:

for(int count = 0; count < args.length; count++) {
        message.replaceFirst("^\\{" + count + "\\d}$", args[count]);
    }

我希望能够做的是将消息字符串中的{0},{1}等的出现替换为args中的出现。但尽量尝试,我根本无法得到匹配的模式。我不是正则表达式专家,但我已经尝试了基于其他问题的各种正则表达式组合。我也尝试在StringUtils中使用replace方法无济于事。有人可以提供任何建议吗?

3 个答案:

答案 0 :(得分:1)

根本不要使用正则表达式。您事先知道您的搜索字符串并且它是常量(即您可以从常量字符串加变量count构建它),因此不需要合并正则表达式。

答案 1 :(得分:1)

^$个字符是锚点。它们匹配字符串的开头和结尾。只有整个String只是{\\d}时,该表达式才会匹配。我认为他们根本不需要在那里。

此外,字符串在java中是不可变的,正确的用法是message = message.replaceAll(blah);

答案 2 :(得分:0)

试试这个正则表达式:

String pattern = "^\\{\\d+\\}$";

说明:

  1. 从字符串的开头获取{
  2. 然后获取尽可能多的数字
  3. 直到在字符串末尾达到}
  4. 示例:

    String s = "{12}";
    String pattern = "^\\{\\d+\\}$";
    String s2 = s.replaceFirst(pattern, "9");
    
    System.out.println(s2);
    

    输出:

    9
    

    这应该很容易应用于您的代码。