Java
 Computer >> コンピューター >  >> プログラミング >> Java

例を使用したJavaのマッチャーquoteReplacement(String s)メソッド


MatcherクラスのappendReplacement()メソッドは、StringBufferオブジェクトとString(置換文字列)をパラメーターとして受け入れ、入力データをStringBufferオブジェクトに追加して、一致したコンテンツを置換文字列に置き換えます。

内部的に、このメソッドは入力文字列から各文字を読み取り、文字列バッファを追加します。一致が発生するたびに、文字列の一致したコンテンツ部分の代わりに置換文字列をバッファに追加し、一致したサブ文字列の次の位置から進みます。

「/」または「$」を使用すると、置換文字列をこのメソッドに渡すときに、通常の文字とは見なされず、例外が発生します-

例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> an <b>example</b> HTML <b>script</b>.</p>";
      //Regular expression to match contents of the bold tags
      String regex = "<b>(\\S+)</b>";
      System.out.println("Input string: \n"+str);
      //Creating a pattern object
      Pattern pattern = Pattern.compile(regex);
      //Matching the compiled pattern in the String
      Matcher matcher = pattern.matcher(str);
      //Creating an empty string buffer
      StringBuffer sb = new StringBuffer();
      while (matcher.find()) {
         matcher.appendReplacement(sb, "sampledata$" );
         //Matcher.quoteReplacement("Bo$ld/Data$"));
      }
      matcher.appendTail(sb);
      System.out.println("Contents of the StringBuffer: \n"+ sb.toString() );
   }
}

出力

Input string:

<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)

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> an <b>example</b> HTML <b>script</b>.</p>";
      //Regular expression to match contents of the bold tags
      String regex = "<b>(\\S+)</b>";
      System.out.println("Input string: \n"+str);
      //Creating a pattern object
      Pattern pattern = Pattern.compile(regex);
      //Matching the compiled pattern in the String
      Matcher matcher = pattern.matcher(str);
      //Creating an empty string buffer
      StringBuffer sb = new StringBuffer();
      while (matcher.find()) {
         matcher.appendReplacement(sb, Matcher.quoteReplacement("Bo$ld/Data$"));
      }
      matcher.appendTail(sb);
      System.out.println("Contents of the 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>

例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 = "[#]";
      //Creating a pattern object
      Pattern pattern = Pattern.compile(regex);
      //Matching the compiled pattern in the String
      Matcher matcher = pattern.matcher(input);
      //Creating an empty string buffer
      String str = Matcher.quoteReplacement("sampledata");
      System.out.println(str);
   }
}

出力

sampledata

  1. 例を使用したJavaのマッチャーpattern()メソッド

    java.util.regex.Matcher classは、さまざまな一致操作を実行するエンジンを表します。このクラスのコンストラクターはありません。クラスjava.util.regex.Patternのmatches()メソッドを使用して、このクラスのオブジェクトを作成/取得できます。 pattern() この方法(マッチャー )クラスは、現在のマッチャーによって解釈されたパターン(オブジェクト)をフェッチして返します。 例1 import java.util.Scanner; import java.util.regex.Matcher; import java.util.reg

  2. 例を使用したJavaのパターンマッチャー()メソッド

    java.util.regex javaのパッケージは、文字シーケンスの特定のパターンを見つけるためのさまざまなクラスを提供します。 このパッケージのパターンクラスは、正規表現のコンパイル済み表現です。 matcher() このクラスのメソッドは、 CharSequenceのオブジェクトを受け入れます 入力文字列を表すクラスとは、指定された文字列を現在の(パターン)オブジェクトで表される正規表現に一致させるMatcherオブジェクトを返します。 例 import java.util.Scanner; import java.util.regex.Matcher; import java