English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
appendReplacement()
Los métodos de Matcher aceptan un objeto StringBuffer y una cadena (cadena de reemplazo) como parámetros, y luego adjuntan los datos de entrada al objeto StringBuffer y reemplazan el contenido coincidente con la cadena de reemplazo.
Dentro, este método lee cada carácter de la cadena de entrada y lo agrega al StringBuffer, y cada vez que ocurre una coincidencia, reemplaza la cadena en lugar de agregar la parte coincidente de la cadena al缓冲区, luego continúa desde la posición siguiente del subcadena coincidente.
Si se utiliza "}} /"o " $" se pasan a este método, no se considerarán caracteres normales y se producirá una excepción-
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> un <b>ejemplo</b> HTML <b>script</b>.</p>"; //La expresión regular se utiliza para coincidir con el contenido de la etiqueta en negrita String regex = "<b>(\\S+)</b>"; System.out.println("Cadena de entrada: \n")+str); //Crear un objeto de patrón Pattern pattern = Pattern.compile(regex); //Coincidir con el patrón compilado en la cadena Matcher matcher = pattern.matcher(str); //Crear un búfer de cadenas vacío StringBuffer sb = new StringBuffer(); while (matcher.find()) { matcher.appendReplacement(sb, "sampledata$" ); //Matcher.quoteReplacement("Bo$ld";/Data$")); } matcher.appendTail(sb); System.out.println("Contenido del StringBuffer: \n")+ sb.toString()); } }
Resultados de salida
Cadena de entrada:<p>This <b>is</b> un <b>ejemplo</b> HTML <b>script</b>.</p>Exception en el hilo "main" java.lang.IllegalArgumentException: Referencia de grupo ilegal: falta el índice del grupo at java.util.regex.Matcher.appendReplacement(Unknown Source) at OCTOBER.matcher.QuoteReplacement.main(QuoteReplacement.java:18)
El método quote Replacement de la clase Matcher toma un valor de cadena y devuelve una cadena de reemplazo literal. Es decir, los caracteres/y $ se ignoran, el resultado se puede usar comoappendReplacement()los parámetros del método.
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> un <b>ejemplo</b> HTML <b>script</b>.</p>"; //La expresión regular se utiliza para coincidir con el contenido de la etiqueta en negrita String regex = "<b>(\\S+)</b>"; System.out.println("Cadena de entrada: \n")+str); //Crear un objeto de patrón Pattern pattern = Pattern.compile(regex); //Coincidir con el patrón compilado en la cadena Matcher matcher = pattern.matcher(str); //Crear un búfer de cadenas vacío StringBuffer sb = new StringBuffer(); while (matcher.find()) { matcher.appendReplacement(sb, Matcher.quoteReplacement("Bo$ld"));/Data$")); } matcher.appendTail(sb); System.out.println("Contenido del StringBuffer: \n")+ sb.toString()); } }
Resultados de salida
Cadena de entrada: <p>This <b>is</b> un <b>ejemplo</b> HTML <b>script</b>.</p> Contenido del 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 = "[#]"; //Crear un objeto de patrón Pattern pattern = Pattern.compile(regex); //Coincidir con el patrón compilado en la cadena Matcher matcher = pattern.matcher(input); //Crear un búfer de cadenas vacío String str = Matcher.quoteReplacement("sampledata"); System.out.println(str); } }
Resultados de salida
sampledata