Khái niệm
Trừ một phạm vi khỏi phạm vi khác. Kết hợp negation ^ và intersection &&.
Cú pháp: [range1&&[^range2]]
Ví dụ: [a-l&&[^e-h]]
Chữ cái a-l trừ e-h → a,b,c,d,i,j,k,l
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExample1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Nhập văn bản: ");
String input = sc.nextLine();
String regex = "[a-l&&[^e-h]]";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
int count = 0;
while (matcher.find()) {
count++;
System.out.print(matcher.group() + " ");
}
System.out.println("\nSố ký tự khớp: " + count);
}
}
Kết quả
Nhập văn bản: abcdefghijklmnopq
a b c d i j k l
Số ký tự khớp: 8
Các ví dụ khác
| Regex | Kết quả |
|---|---|
[a-z&&[^aeiou]] | Phụ âm (chữ thường trừ nguyên âm) |
[0-9&&[^5]] | Chữ số trừ 5 |
[\p{Alpha}&&[^A-Z]] | Chữ thường (chữ cái trừ chữ hoa) |