[英]Regex - capturing incremental numbers between curly braces
我有一段代碼試圖在循環內重復匹配模式和遞增的索引:
for(int count = 0; count < args.length; count++) {
message.replaceFirst("^\\{" + count + "\\d}$", args[count]);
}
我希望能夠做的是在消息字符串中替換args中出現的{0},{1}等。 但盡量嘗試,我根本無法得到匹配的模式。 我不是正則表達式專家,但我已經嘗試了基於其他問題的各種正則表達式組合。 我也嘗試在StringUtils中使用replace方法無濟於事。 有人可以提供任何建議嗎?
根本不要使用正則表達式。 您事先知道您的搜索字符串並且它是常量(即您可以從常量字符串和變量count
構建它),因此不需要合並正則表達式。
^
和$
字符是錨點。 它們匹配字符串的開頭和結尾。 只有當整個String只是{\\\\d}
該表達式才會匹配。 我認為他們根本不需要在那里。
另外,字符串在java中是不可變的,正確的用法是message = message.replaceAll(blah);
試試這個正則表達式:
String pattern = "^\\{\\d+\\}$";
說明:
{
}
例:
String s = "{12}";
String pattern = "^\\{\\d+\\}$";
String s2 = s.replaceFirst(pattern, "9");
System.out.println(s2);
輸出:
9
這應該很容易應用於您的代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.