Regex cho hạng gà – Basic 1

Mở đầu

Trong bài này chúng ta đi tìm hiểu các tạo ra định nghĩa 1 đoạn regex, bắt đầu từ các điều cơ bản nhé.

Nguyên tắc chung

  • So sánh lần lượt các kí tự liền nhau từ trái sang phải.
    Ví dụ: DEPTRAI tức là tìm kiếm các cụm từ có chữ "D", ngay sau đó là chữ E, tiếp sau đó là chữ P và lần lượt tới hết.

  • Nếu thỏa mãn cả cụm DEPTRAI liền nhau thì được coi là khớp.

Anchors (điểm neo)

  • Đầu dòng: ^
    Ví dụ có đoạn text:

    Anh Nguyễn Văn A"

    ^Anh sẽ khớp với chữ "Anh" trong câu trên.

  • Cuối dòng: $
    Ví dụ có đoạn text:

    Anh Nguyễn Văn A"

    Mặc dù có 2 chữ A nhưng với A$ sẽ khớp với chữ "A" ở cuối câu.

Quantifiers (số lượng)

  • 0 hoặc nhiều kí tự đứng trước: *
    DEPTRAIX* tức là theo sau từ DEPTRAI là 0 hoặc nhiều kí tự X.

    • Sẽ khớp với:

      DEPTRAI
      DEPTRAIX
      DEPTRAIXX

  • 1 hoặc nhiều kí tự đứng trước: +
    DEPTRAIX+ tức là theo sau từ DEPTRAI là 1 hoặc nhiều kí tự X.

    • Sẽ khớp với:

      DEPTRAIX
      DEPTRAIXX

    • Không khớp với:

      DEPTRAI

  • 0 hoặc 1 kí tự đứng trước: ?
    DEPTRAIX+ tức là theo sau từ DEPTRAI là 0 hoặc 1 kí tự X.

    • Sẽ khớp với:

      DEPTRAI
      DEPTRAIX

    • Không khớp với:

      DEPTRAIXX

    (Thật ra là chỉ khớp với "DEPTRAIX" trong đoạn "DEPTRAIXX")

  • Rank (có từ mấy kí tự tới mấy kí tự): {}
    DEPTRAIX{0,1} tức là theo sau từ DEPTRAI là từ 0 tới 1 kí tự X.

    • Sẽ khớp với:

      DEPTRAI
      DEPTRAIX

    • Không khớp với:

      DEPTRAIXX

    (Thật ra là khớp với "DEPTRAIX" trong đoạn "DEPTRAIXX")

    Chú ý: {} luôn lấy tham lam (greedy) - lấy nhiều nhất có thể.
    Trong trường hợp này (DEPTRAIXX) có 2 option phù hợp (DEPTRAI và DEPTRAIX) nhưng vì {} là tham lam nên nó lấy cái nhiều hơn (DEPTRAIX).
    Khá là khoai sắn nhưng hợp lý phải không nào.

Group (Nhóm): ()

Nhóm 1 loạt các kí tự vào thành 1 nhóm để xử lý giống như 1 kí tự
(DEPTRAI)+ tức là nhóm cụm từ "DEPTRAI" thành 1 nhóm và tìm kiếm 1 hoặc nhiều cụm từ "DEPTRAI" liên tiếp.

  • Sẽ khớp với:

    DEPTRAI
    DEPTRAIDEPTRAI

  • Không khớp với:

    DEPTRAIX

    (Thật ra là khớp với "DEPTRAI" trong đoạn "DEPTRAIX")

OR operator (Toán tử OR): | hoặc []

  • kí hiệu |
    (a|b) tức là tìm kiếm các kí tự là a hoặc b
    sẽ khớp với chữ a hoặc b trong cụm "abcde"

  • kí hiệu [] [ab]` - giống `(a|b): tức là tìm kiếm các kí tự là a hoặc b
    sẽ khớp với chữ a hoặc b trong cụm "abcde"

Tạm thế này đã, kẻo tẩu hỏa nhập ma.

Leave a Reply

Your email address will not be published. Required fields are marked *