用自己的部分替换Java Regex Capture组

时间:2017-01-31 15:31:05

标签: java regex replaceall capture-group

Java在字符串中进行以下替换的最佳方法是什么:

我的文字与此类似:

one two [[**my_word** other words]] three four [[**my_other_word** other words]] five six

我想要以下文字

one two **my_word** three four **my_other_word** five six

我尝试使用正则表达式捕获组但是如何将一个捕获组替换为另一个?

3 个答案:

答案 0 :(得分:3)

使用

https://www.tutorialspoint.com/java/java_string_replaceall.htm

并执行类似

的操作
a.replaceAll("\\[\\[(\\w+)[^\\[]+\\]\\]", "$1");

答案 1 :(得分:1)

a.replaceAll("\\[\\[(\\*\\*\\w+\\*\\*)(?:\\s\\w+\\s?)+\\]\\]", "$1");

答案 2 :(得分:1)

根据您的需求,您可以使用像

这样的oneliner
String inputString = "one two [[**my_word** other words]] three four [[**my_other_word** other words]] five six";
Pattern pattern = Pattern.compile("\\[\\[(\\*\\*\\w+\\*\\*).*?\\]\\]", Pattern.DOTALL);
Matcher matcher = pattern.matcher(inputString);
StringBuffer outputBuffer = new StringBuffer();
while (matcher.find()) {
    String match = matcher.group(1);        
    matcher.appendReplacement(outputBuffer, match);
}
matcher.appendTail(outputBuffer);

String output = outputBuffer.toString();

或更复杂的版本,您可以控制用每个匹配替换的内容。

{{1}}