Bạn có thể nhóm tất cả các ký tự cần khớp trong ngoặc vuông "[ ]", tức là metacharacter/sub-expression "[ ]" khớp với tất cả các ký tự được chỉ định. Do đó, để khớp tất cả các chữ cái nguyên âm, hãy chỉ định các chữ cái nguyên âm trong đó như sau:
[aeiouAEIOU]
Ví dụ 1: Sử dụng Pattern và Matcher
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MatchVowels {
public static void main(String args[]) {
String regex = "[aeiouAEIOU]";
System.out.println("Nhập chuỗi đầu vào: ");
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
// Biên dịch biểu thức chính quy
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
System.out.println("Chuỗi đầu vào chứa nguyên âm");
} else {
System.out.println("Chuỗi đầu vào không chứa nguyên âm");
}
}
}
Kết quả
Nhập chuỗi đầu vào: hello how are you welcome Chuỗi đầu vào chứa nguyên âm
Ví dụ 2: Sử dụng String.matches()
import java.util.Scanner;
public class Test {
public static void main(String args[]) {
String regex = "[aeiouAEIOU]";
System.out.println("Nhập chuỗi đầu vào: ");
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
boolean result = input.matches(regex);
if (result) {
System.out.println("Chuỗi đầu vào chứa nguyên âm");
} else {
System.out.println("Chuỗi đầu vào không chứa nguyên âm");
}
}
}
Kết quả
Nhập chuỗi đầu vào: hello how are you welcome Chuỗi đầu vào không chứa nguyên âm
Lưu ý: Ví dụ 2 sử dụng matches() yêu cầu toàn bộ chuỗi khớp với regex (chỉ chứa nguyên âm), nên kết quả false. Cần dùng find() hoặc regex ".*[aeiouAEIOU].*" để kiểm tra sự tồn tại.