簡體   English   中英

Java String.replaceAll帶有命名組的反向引用

[英]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.

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