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

Làm thế nào để kiểm tra nhiều mẫu regex với một đầu vào? Sử dụng Java.

Dấu "|" ký tự meta: Ký tự meta "|" trong Java biểu thức chính quy cho phép bạn đối sánh nhiều hơn một biểu thức chính quy, ví dụ:nếu bạn cần đối sánh văn bản nhập cụ thể với nhiều hơn một biểu thức, bạn cần tách chúng bằng cách sử dụng nó như sau:

exp1|exp2|exp3

Ví dụ

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class SampleExample {
   public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      System.out.println("Enter your input: ");
      String input = sc.nextLine();
      //Regular expression
      String regex = "\\d{10}|^[aeiou]";
      //Creating a pattern object
      Pattern pattern = Pattern.compile(regex);
      //Creating a Matcher object
      Matcher matcher = pattern.matcher(input);
      if(matcher.find()) {
         System.out.println(input+" is valid");
      }else {
         System.out.println(input+" is not valid");
      }
   }
}

Đầu ra 1

Enter your input:
9848033228
9848033228 is valid

Đầu ra 2

Enter your input:
an apple a day keeps doctor away
an apple a day keeps doctor away is valid

Sử dụng đối tượng Danh sách

Một giải pháp khác là bạn biên dịch tất cả các biểu thức chính quy bằng cách sử dụng các đối tượng Mẫu riêng lẻ và thêm chúng vào đối tượng danh sách và tìm kết quả phù hợp trên văn bản đầu vào dưới dạng -

List list = new ArrayList<>();
list.add(Pattern.compile(regex1));
list.add(Pattern.compile(regex2));
for (Pattern pattern: list) {
   Matcher matcher = pattern.matcher(input);
   if(matcher.find()) {
      . . . . . . . . . . . . . . .
   }else {
      . . . . . . . . . . . . . . .
   }
}

Ví dụ

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MultipleRegex {
   public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      System.out.println("Enter your input: ");
      String input = sc.nextLine();
      //Regular expressions
      String regex1 = "\\d{10}";
      String regex2 = "^[aeiou]";
      //Creating a pattern objects
      Pattern pattern1 = Pattern.compile(regex1);
      Pattern pattern2 = Pattern.compile(regex2);
      //Creating an List object
      List<Pattern> patterns = new ArrayList<>();
      patterns.add(pattern1);
      patterns.add(pattern2);
      for (Pattern pattern: patterns) {
         Matcher matcher = pattern.matcher(input);
         if(matcher.find()) {
            System.out.println("For regex "+pattern.pattern()+" "+input+" is valid");
         } else {
            System.out.println("For regex "+pattern.pattern()+" "+input+" is not valid");
         }
      }
   }
}

Đầu ra 1

Enter your input:
9848033228
For regex \d{10} 9848033228 is valid
For regex ^[aeiou] 9848033228 is not valid

Đầu ra 2

Enter your input:
an apple a day keeps doctor away
For regex \d{10} an apple a day keeps doctor away is not valid
For regex ^[aeiou] an apple a day keeps doctor away is valid