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

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> <b>example</b>/b> HTML <b>script</b>/b>.</p>";
      //正規表現を使用して粗体タグの内容をマッチングします
      String regex = "<b>(\\S+)</b>";
      System.out.println("入力文字列: \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("StringBufferの内容: \n")+ sb.toString());
   }
}

出力結果

Input string:<p>This <b>is</b> <b>example</b>/b> HTML <b>script</b>/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> <b>example</b>/b> HTML <b>script</b>/b>.</p>";
      //正規表現を使用して粗体タグの内容をマッチングします
      String regex = "<b>(\\S+)</b>";
      System.out.println("入力文字列: \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("StringBufferの内容: \n")+ sb.toString());
   }
}

出力結果

入力文字列:
<p>This <b>is</b>/b> <b>example</b>/b> HTML <b>script</b>/b>.</p>
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
基本チュートリアル