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