English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
appendReplacement()
MatcherクラスのメソッドはStringBufferオブジェクトとString(置換文字列)を受け取り、その後入力データをStringBufferオブジェクトに追加し、置換文字列でマッチング内容を置き換えます。
内部では、このメソッドは入力文字列から各文字を読み取り、Stringバッファーに追加します。マッチングが発生するときは、文字列をそのマッチング内容部分に追加する代わりに、バッファーに置き換えます。その後、マッチング子文字列の次の位置から続けます。
「」を使用すると、文字列を置換する /」または「$」を使用してこのメソッドに文字列を渡すと、それらは通常の文字として扱われず、例外が発生します-
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()メソッドの引数。
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>
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