English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Método quoteReplacement (String s) com exemplo em Matcher no Java

appendReplacement()Os métodos da classe Matcher aceitam um objeto StringBuffer e uma String (string de substituição) como parâmetros, e então adicionam os dados de entrada ao objeto StringBuffer e substituem o conteúdo correspondente com a string de substituição.

Internamente, este método lê cada caractere da string de entrada e adiciona ao buffer de String, sempre que houver correspondência, substitui a string em vez de adicionar o conteúdo correspondente ao buffer, e continua a partir da próxima posição do substring correspondente.

Se usar"}} /"ou" $" ao passar a string substituição para este método, eles não serão considerados caracteres normais e ocorrerá uma exceção-

Exemplo1

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> um <b>exemplo</b> HTML <b>script</b>.</p>";
      //A expressão regular é usada para匹配粗体标签的内容
      String regex = "<b>(\\S+)</b>";
      System.out.println("Stringa de entrada: \n")+str);
      //Crie um objeto de padrão
      Pattern pattern = Pattern.compile(regex);
      //Combina o padrão compilado na string
      Matcher matcher = pattern.matcher(str);
      //Crie um缓冲区 de string vazio
      StringBuffer sb = new StringBuffer();
      while (matcher.find()) {
         matcher.appendReplacement(sb, "sampledata$"));
         //Matcher.quoteReplacement("Bo$ld"));/Data$"));
      }
      matcher.appendTail(sb);
      System.out.println("Conteúdo do StringBuffer: \n")+ sb.toString());
   }
}

Resultados de saída

Stringa de entrada:<p>This <b>is</b> um <b>exemplo</b> HTML <b>script</b>.</p>Exception em thread "main" java.lang.IllegalArgumentException: referência de grupo ilegal: índice do grupo está faltando
   at java.util.regex.Matcher.appendReplacement(Unknown Source)
   at OCTOBER.matcher.QuoteReplacement.main(QuoteReplacement.java:18)

O método quote Replacement da classe Matcher aceita um valor de string e retorna uma string de substituição literal. Isso é, os caracteres/e $ são ignorados, o resultado pode ser usado comoappendReplacement()o parâmetro do método.

Exemplo2

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> um <b>exemplo</b> HTML <b>script</b>.</p>";
      //A expressão regular é usada para匹配粗体标签的内容
      String regex = "<b>(\\S+)</b>";
      System.out.println("Stringa de entrada: \n")+str);
      //Crie um objeto de padrão
      Pattern pattern = Pattern.compile(regex);
      //Combina o padrão compilado na string
      Matcher matcher = pattern.matcher(str);
      //Crie um缓冲区 de string vazio
      StringBuffer sb = new StringBuffer();
      while (matcher.find()) {
         matcher.appendReplacement(sb, Matcher.quoteReplacement("Bo$ld"));/Data$"));
      }
      matcher.appendTail(sb);
      System.out.println("Conteúdo do StringBuffer: \n")+ sb.toString());
   }
}

Resultados de saída

String de entrada:
<p>This <b>is</b> um <b>exemplo</b> HTML <b>script</b>.</p>
Conteúdo do StringBuffer:
<p>This Bo$ld/Data$ an Bo$ld/Data$ HTML Bo$ld/Data$.</p>

Exemplo3

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 = "[#]";
      //Crie um objeto de padrão
      Pattern pattern = Pattern.compile(regex);
      //Combina o padrão compilado na string
      Matcher matcher = pattern.matcher(input);
      //Crie um缓冲区 de string vazio
      String str = Matcher.quoteReplacement("sampledata");
      System.out.println(str);
   }
}

Resultados de saída

sampledata