簡體   English   中英

正則表達式 - 捕獲花括號之間的增量數字

[英]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+\\}$";

說明:

  1. 從字符串的開頭得到一個{
  2. 然后獲取盡可能多的數字
  3. 直到在字符串的末尾到達}

例:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM