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