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

Javaに例のあるMatcher useTransparentBounds()メソッド

java.util.regex.Matcherクラスは、さまざまなマッチング操作を実行するエンジンを表します。このクラスにはコンストラクタがありませんが、matches()java.util.regex.Patternクラスのメソッドで作成/このクラスのオブジェクトを取得します。

正規表現の中で、lookbehindおよびlookahead構造は、他の特定のパターン之前またはその後の特定のパターンにマッチングするために使用されます。例えば、5から12文字の文字列、その場合正規表現は-

"\\A(?=\\w{6,10}\\z)";

デフォルトでは、マッチャーの範囲の境界は構造の前向き、後向き、および境界マッチングに対して透明ではありません。つまり、これらの構造は範囲の境界を超えた入力テキスト内容をマッチングできません。-

例1

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class useTransparentBoundsExample {
   public static void main(String[] args) {
      //正規表現が受け入れ可能6から10文字
      String regex = "\\A(?=\\w{6,10}\\z)";
      System.out.println("入力 5 まで 12 文字数: ");
      String input = new Scanner(System.in).next();
      //パターンオブジェクトを作成
      Pattern pattern = Pattern.compile(regex);
      //Matcherオブジェクトを作成
      Matcher matcher = pattern.matcher(input);
      //区域を入力文字列に設定
      matcher.region(0, 4);
      //透明範囲に切り替え
      if(matcher.find()) {
         System.out.println("一致しました");
      } else {
         System.out.println("一致しません");
      }
   }
}

出力結果

入力 5 まで 12 文字数:
sampleText
マッチングなし

このクラスメソッドのuseTransparentBounds()このメソッドはボルン値を受け取り、このメソッドにtrueを渡した場合、現在のマッチャーは透過範囲を使用し、falseを渡した場合、非透過範囲を使用します。

例2

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
   public static void main(String[] args) {
      //正規表現が受け入れ可能6から10文字
      String regex = "\\A(?=\\w{6,10}\\z)";
      System.out.println("入力 5 まで 12 文字数: ");
      String input = new Scanner(System.in).next();
      //パターンオブジェクトを作成
      Pattern pattern = Pattern.compile(regex);
      //Matcherオブジェクトを作成
      Matcher matcher = pattern.matcher(input);
      //区域を入力文字列に設定
      matcher.region(0, 4);
      //透明範囲に切り替え
      matcher = matcher.useTransparentBounds(true);
      if(matcher.find()) {
         System.out.println("一致しました");
      } else {
         System.out.println("一致しません");
      }
   }
}

出力結果

入力 5 まで 12 文字数:
サンプルテキスト
一致しました