Trình tạo Regex từ mẫu

Viết regex thủ công cho một mã đơn hàng, một số hóa đơn hay một ngày tháng thì rườm rà và dễ sai. Dán một chuỗi ví dụ theo định dạng bạn muốn nhận diện: công cụ này đọc nó từ trái sang phải, biến mỗi chuỗi chữ số, chữ hoa và chữ thường thành một lớp ký tự có độ dài phù hợp, và giữ dấu câu cùng ký hiệu làm ký tự literal. Bạn nhận được một mẫu có neo làm điểm khởi đầu để tinh chỉnh thủ công.

Cách hoạt động

  1. 1

    Nhập một ví dụ

    Gõ hoặc dán một chuỗi ví dụ đại diện cho định dạng bạn muốn nhận diện, chẳng hạn `Order #12345 placed on 2026-04-16`.

  2. 2

    Tạo mẫu

    Công cụ duyệt qua ví dụ từng ký tự và thay mỗi chuỗi cùng loại ký tự bằng một lớp ký tự có độ dài của nó.

  3. 3

    Đọc phần phân tích

    Bên dưới mẫu, một danh sách thành phần giải thích từng phần, để bạn thấy phần nào nhận diện chữ số, chữ cái hay văn bản literal.

  4. 4

    Sao chép và tinh chỉnh

    Dùng mẫu làm điểm khởi đầu. Điều chỉnh thủ công các độ dài cố định hoặc các lớp để nó bao trọn phạm vi dữ liệu thực của bạn.

Cách mẫu được dựng

Công cụ đọc ví dụ từ trái sang phải. Mỗi khi gặp một chuỗi cùng loại ký tự, nó phát ra một lớp ký tự có kích thước bằng chuỗi đó:

  • một chuỗi chữ số trở thành \d{n}, trong đó n là số lượng chữ số
  • một chuỗi chữ hoa A-Z trở thành [A-Z]{n}
  • một chuỗi chữ thường a-z trở thành [a-z]{n}
  • một khoảng trắng đơn trở thành \s, và nhiều khoảng trắng trở thành \s{n}
  • mọi thứ khác (dấu câu, ký hiệu, chữ có dấu hoặc chữ không thuộc Latinh) được giữ làm ký tự literal được thoát

Mẫu hoàn chỉnh được bao trong ^$ để nhận diện toàn bộ chuỗi từ đầu đến cuối, không chỉ một đoạn.

Ví dụ

Với ví dụ Order #12345 placed on 2026-04-16, công cụ tạo ra:

/^[A-Z]{1}[a-z]{4}\s\#\d{5}\s[a-z]{6}\s[a-z]{2}\s\d{4}\-\d{2}\-\d{2}$/

Order là một chữ hoa theo sau bởi bốn chữ thường; 12345 trở thành \d{5}; và ngày 2026-04-16 trở thành \d{4}\-\d{2}\-\d{2}.

Nó làm được và không làm được gì

  • Độ dài là cố định. 12345 trở thành \d{5}, khớp đúng năm chữ số, không phải “một hoặc nhiều”. Nếu số lượng thay đổi trong dữ liệu của bạn, hãy đổi {5} thành + hoặc một khoảng như {3,8} thủ công.
  • Nó làm việc từ một ví dụ duy nhất. Nó phản chiếu cấu trúc của chuỗi duy nhất bạn cung cấp, nên không thể tự khái quát từ nhiều ví dụ. Hãy đưa cho nó chuỗi tiêu biểu nhất.
  • Chỉ A-Za-z được tính là chữ cái. Ký tự có dấu và không thuộc Latinh được giữ làm literal; hãy thay bằng một lớp như \w hoặc \p{L} nếu bạn muốn chúng khớp một tập rộng hơn.
  • Regex không thể diễn đạt mọi thứ. Những thứ như ngoặc cân bằng nằm ngoài tầm với của mọi regex, dù bạn cung cấp bao nhiêu ví dụ. Với cấu trúc lồng nhau bạn cần một trình phân tích, không phải một mẫu.

Một quy trình làm việc tốt

  1. Tạo một mẫu từ một ví dụ rõ ràng, tiêu biểu.
  2. Nới lỏng các độ dài cố định ({5} thành + hoặc {3,8}) ở nơi độ dài thay đổi.
  3. Dán mẫu vào Trình kiểm tra Regex với một tập chuỗi thực lớn hơn.
  4. Điều chỉnh cho đến khi nó khớp mọi thứ cần khớp và không khớp thứ gì không nên.

Câu hỏi thường gặp

Một. Trình tạo đọc một chuỗi ví dụ duy nhất và phản chiếu cấu trúc của nó. Hãy chọn chuỗi đại diện tốt nhất cho định dạng của bạn, rồi mở rộng mẫu thủ công cho các trường hợp khác.

Công cụ đếm chính xác số ký tự trong ví dụ của bạn, nên năm chữ số trở thành \d{5}. Nếu số lượng thay đổi trong dữ liệu thực, hãy thay {5} bằng +, * hoặc một khoảng như {3,8}.

Các neo khiến mẫu nhận diện toàn bộ chuỗi từ đầu đến cuối. Hãy bỏ chúng nếu bạn muốn tìm mẫu bên trong một đoạn văn bản dài hơn.

Nó nhận diện A-Za-z là chữ cái. Mọi ký tự khác, bao gồm chữ có dấu, Kirin hay CJK, được giữ làm literal. Hãy thay thủ công bằng một lớp như \w hoặc \p{L} nếu bạn muốn khớp nhiều hơn.

Cú pháp tiêu chuẩn (\d, [A-Z], {n}) hoạt động không đổi trong PCRE, JavaScript, Python và hầu hết các engine.

Công cụ liên quan

Công cụ này có phiên bản bằng các ngôn ngữ khác