[英]Java String.replaceAll backreference with named groups
您如何在Java的String.replaceAll
方法中引用命名的捕獲組?
作為我要嘗試做的簡化示例,說我有正則表達式
\{(?<id>\d\d\d\d):(?<render>.*?)\}
代表字符串中的標簽。 一個字符串中可以有多個標簽,我想用“渲染”捕獲組的內容替換所有標簽。
如果我有一個像
String test = "{0000:Billy} bites {0001:Jake}";
並希望獲得像"Billy bites Jake"
這樣的結果,我知道我可以通過
test.replaceAll(tagRegex, "$2")
但我希望能夠使用類似
test.replaceAll(tagRegex, "$render")`
有沒有辦法做到這一點? 使用"$render"
我得到IllegalArgumentException: Illegal group reference
。
基於https://blogs.oracle.com/xuemingshen/entry/named_capturing_group_in_jdk7
您應該使用${nameOfCapturedGroup}
,在您的情況下為${render}
。
DEMO:
String test = "{0000:Billy} bites {0001:Jake}";
test = test.replaceAll("\\{(?<id>\\d\\d\\d\\d):(?<render>.*?)\\}", "${render}");
System.out.println(test);
輸出: Billy bites Jake
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.