用自己的部分替换 Java 正则表达式捕获组
Replace Java Regex Capture Groups with Parts of Themselves
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
我尝试使用正则表达式捕获组,但如何用另一个捕获组替换一个捕获组?
使用
https://www.tutorialspoint.com/java/java_string_replaceall.htm
并做类似
的事情
a.replaceAll("\[\[(\w+)[^\[]+\]\]", "");
a.replaceAll("\[\[(\*\*\w+\*\*)(?:\s\w+\s?)+\]\]", "");
根据您的需要,您可以使用像
这样的oneliner
a.replaceAll("\[\[(\*\*\w+\*\*).*?\]\]", "");
或者更复杂的版本,您可以控制用什么替换每个匹配项。
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();
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
我尝试使用正则表达式捕获组,但如何用另一个捕获组替换一个捕获组?
使用
https://www.tutorialspoint.com/java/java_string_replaceall.htm
并做类似
的事情a.replaceAll("\[\[(\w+)[^\[]+\]\]", "");
a.replaceAll("\[\[(\*\*\w+\*\*)(?:\s\w+\s?)+\]\]", "");
根据您的需要,您可以使用像
这样的onelinera.replaceAll("\[\[(\*\*\w+\*\*).*?\]\]", "");
或者更复杂的版本,您可以控制用什么替换每个匹配项。
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();