Computer >> Máy Tính >  >> Lập trình >> Java

Phương thức Matcher useTransparentBounds () trong Java với các ví dụ

Lớp java.util.regex.Matcher đại diện cho một công cụ thực hiện các hoạt động so khớp khác nhau. Không có hàm tạo nào cho lớp này, bạn có thể tạo / lấy một đối tượng của lớp này bằng cách sử dụng phương thức match () của lớp java.util.regex.Pattern.

Trong biểu thức chính quy, các cấu trúc lookbehind và lookahead được sử dụng để khớp với một mẫu cụ thể đứng trước hoặc kế tiếp trong một số mẫu khác. Ví dụ:nếu bạn cần chấp nhận một chuỗi chấp nhận từ 5 đến 12 ký tự thì biểu thức chính quy sẽ là -

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

Theo mặc định, các ranh giới của vùng đối sánh không trong suốt đối với các cấu trúc nhìn trước, nhìn sau và đối sánh ranh giới, tức là các cấu trúc này không thể khớp với nội dung của văn bản nhập ngoài ranh giới vùng -

Ví dụ 1

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class useTransparentBoundsExample {
   public static void main(String[] args) {
      //Regular expression to accepts 6 to 10 characters
      String regex = "\\A(?=\\w{6,10}\\z)";
      System.out.println("Enter 5 to 12 characters: ");
      String input = new Scanner(System.in).next();
      //Creating a pattern object
      Pattern pattern = Pattern.compile(regex);
      //Creating a Matcher object
      Matcher matcher = pattern.matcher(input);
      //Setting region to the input string
      matcher.region(0, 4);
      //Switching to transparent bounds
      if(matcher.find()) {
         System.out.println("Match found");
      } else {
         System.out.println("Match not found");
      }
   }
}

Đầu ra

Enter 5 to 12 characters:
sampleText
Match not found

useTransparentBounds () phương thức của phương thức lớp này chấp nhận một giá trị boolean và nếu bạn chuyển true cho phương thức này, trình so khớp hiện tại sẽ sử dụng các giới hạn trong suốt và nếu bạn chuyển false cho phương thức này, nó sẽ sử dụng các giới hạn không trong suốt.

Ví dụ 2

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
   public static void main(String[] args) {
      //Regular expression to accepts 6 to 10 characters
      String regex = "\\A(?=\\w{6,10}\\z)";
      System.out.println("Enter 5 to 12 characters: ");
      String input = new Scanner(System.in).next();
      //Creating a pattern object
      Pattern pattern = Pattern.compile(regex);
      //Creating a Matcher object
      Matcher matcher = pattern.matcher(input);
      //Setting region to the input string
      matcher.region(0, 4);
      //Switching to transparent bounds
      matcher = matcher.useTransparentBounds(true);
      if(matcher.find()) {
         System.out.println("Match found");
      } else {
         System.out.println("Match not found");
      }
   }
}

Đầu ra

Enter 5 to 12 characters:
sampletext
Match found