Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Metacharacter \Q trong Java Regular Expression


Chức năng

\Q...\E escape tất cả metacharacter bên trong. Các ký tự đặc biệt mất tác dụng, được xem như literal.

Ví dụ 1: Không dùng \Q\E

String regex = "[aeiou]";
// Khớp bất kỳ nguyên âm nào
Input: "sample" -> Match occurred

Ví dụ 2: Có \Q\E

String regex = "\\Q[aeiou]\\E";
// Khớp chuỗi literal "[aeiou]"
Input: "sample" -> Match not occurred
Input: "The letters [aeiou] are vowels" -> Match occurred

Code đầy đủ

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class SampleProgram {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Nhập chuỗi: ");
        String input = sc.nextLine();
        String regex = "\\Q[aeiou]\\E";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);
        if (matcher.find()) {
            System.out.println("Match occurred");
        } else {
            System.out.println("Match not occurred");
        }
    }
}

Ứng dụng

  • Tìm kiếm chuỗi chứa ký tự đặc biệt regex: \Q.*+?^${}()|[]\\\E
  • Build regex động từ input user an toàn: Pattern.quote(input) (tự động thêm \Q\E)

Pattern.quote()

String userInput = "[test]";
String safeRegex = Pattern.quote(userInput); // trả về "\Q[test]\E"
Pattern p = Pattern.compile(safeRegex);