Java中具有示例的Matcher quoteReplacement(String s)方法
appendReplacement()Matcher类的方法接受StringBuffer对象和String(替换字符串)作为参数,然后将输入数据附加到StringBuffer对象,用替换字符串替换匹配的内容。
在内部,此方法从输入字符串中读取每个字符并追加String缓冲区,每当发生匹配时,它将替换字符串而不是字符串的匹配内容部分追加到缓冲区,然后从匹配子字符串的下一个位置继续。
如果使用“/”或“$”将替换字符串传递给此方法,则它们将不被视为常规字符,并且会发生异常-
例子1
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class QuoteReplacement {
public static void main(String[] args) {
String str = " <p>This <b>is</b> an <b>example</b> HTML <b>script</b>.</p>";
//正则表达式以匹配粗体标签的内容
String regex = "<b>(\\S+)</b>";
System.out.println("Input string: \n"+str);
//创建一个模式对象
Pattern pattern = Pattern.compile(regex);
//匹配字符串中的已编译模式
Matcher matcher = pattern.matcher(str);
//创建一个空的字符串缓冲区
StringBuffer sb = new StringBuffer();
while (matcher.find()) {
matcher.appendReplacement(sb, "sampledata$" );
//Matcher.quoteReplacement("Bo$ld/Data$"));
}
matcher.appendTail(sb);
System.out.println("Contents of the StringBuffer: \n"+ sb.toString() );
}
}输出结果
Input string:<p>This <b>is</b> an <b>example</b> HTML <b>script</b>.</p>Exception in thread "main" java.lang.IllegalArgumentException: Illegal group reference: group index is missing at java.util.regex.Matcher.appendReplacement(Unknown Source) at OCTOBER.matcher.QuoteReplacement.main(QuoteReplacement.java:18)
Matcher类的quoteReplacement方法接受一个字符串值并返回一个文字替换字符串。即,给定字符串中的字符/和$被忽略,结果可以用作appendReplacement()方法的参数。
例子2
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class QuoteReplacement {
public static void main(String[] args) {
String str = "<p>This <b>is</b> an <b>example</b> HTML <b>script</b>.</p>";
//正则表达式以匹配粗体标签的内容
String regex = "<b>(\\S+)</b>";
System.out.println("Input string: \n"+str);
//创建一个模式对象
Pattern pattern = Pattern.compile(regex);
//匹配字符串中的已编译模式
Matcher matcher = pattern.matcher(str);
//创建一个空的字符串缓冲区
StringBuffer sb = new StringBuffer();
while (matcher.find()) {
matcher.appendReplacement(sb, Matcher.quoteReplacement("Bo$ld/Data$"));
}
matcher.appendTail(sb);
System.out.println("Contents of the StringBuffer: \n"+ sb.toString() );
}
}输出结果
Input string: <p>This <b>is</b> an <b>example</b> HTML <b>script</b>.</p> Contents of the StringBuffer: <p>This Bo$ld/Data$ an Bo$ld/Data$ HTML Bo$ld/Data$.</p>
例子3
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class QuoteReplacementExample {
public static void main(String[] args) {
String input = "This is sample text";
String regex = "[#]";
//创建一个模式对象
Pattern pattern = Pattern.compile(regex);
//匹配字符串中的已编译模式
Matcher matcher = pattern.matcher(input);
//创建一个空的字符串缓冲区
String str = Matcher.quoteReplacement("sampledata");
System.out.println(str);
}
}输出结果
sampledata