English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
appendReplacement()
Die Methoden der Matcher-Klasse akzeptieren ein StringBuffer-Objekt und einen String (Ersatzzeichenkette) als Parameter und fügen die Eingabedaten dem StringBuffer-Objekt hinzu, indem sie den zu ersetzen Inhalt durch die Ersatzzeichenkette ersetzen.
Innerhalb dieses Verfahrens liest es jeden Zeichen der Eingabezeichenkette und fügt es in den String-Puffer ein. Bei jeder Übereinstimmung ersetzt es den String anstatt den übereinstimmenden Teils der Zeichenkette in den Puffer einzufügen und fährt von der nächsten Position des Übereinstimmungstextes fort.
wenn "}} /" oder " $", wird der String an diese Methode übergeben, dann werden sie nicht als reguläre Zeichen betrachtet und es wird eine Ausnahme ausgelöst-
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>"; //Der reguläre Ausdruck wird verwendet, um den Inhalt der fettgedruckten Tags zu matchen String regex = "<b>(\\S+)</b>"; System.out.println("Eingabestring: \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("Inhalt der StringBuffer: \n")+ sb.toString()); } }
输出结果
Eingabestring:<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)
Die Methode quoteReplacement der Matcher-Klasse akzeptiert einen String-Wert und gibt einen textuellen Ersatz zurück. Das bedeutet, dass die Zeichen in der gegebenen Zeichenfolge/und $ werden ignoriert, das Ergebnis kann verwendet werdenappendReplacement()Parameter der Methode.
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>"; //Der reguläre Ausdruck wird verwendet, um den Inhalt der fettgedruckten Tags zu matchen String regex = "<b>(\\S+)</b>"; System.out.println("Eingabestring: \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("Inhalt der 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>
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