Đặc điểm của lượng từ

  • Tham lam (greedy): quantifier cố gắng so khớp với toàn bộ chuỗi (hay nhiều nhất có thể).
  • Lười biếng (lazy): so khớp một kí tự một lần bắt đầu từ kí tự đầu tiên của chuỗi.
  • Sở hữu (possessive): lượng từ lấy toàn bộ mẫu đề tiến hành so khớp và chỉ một lần, không quay lui (backtracking).

So khớp với các lượng từ *, +, và ?

  • +: so khớp với một hay nhiều kí tự
  • *: so khớp với không hay nhiều kí tự
  • ?: so khớp với không hay một kí tự

Trong RegExr (regexr.com) tắt global (g) trong flags. Tại ô Text gõ văn bản mẫu

999999

Tại ô Expression gõ 9*, kết quả:

9+:

9?:

99?

So khớp với số lần xác định

Cú pháp so khớp với số lần xác định:

  • {n}: so khớp chính xác n lần
  • {n,}: so khớp n lần hay hơn
  • {m,n}: so khớp từ m đến n lần
  • {0,1}: tương đương ?
  • {1,}: tương đương +
  • {0,}: tương đương *

Trong ô Expression của RegExr9{3} để so khớp 3 số 9, kết quả:

9{0,1} sẽ cho kết quả giống 9?

9{2,4}

Lượng từ lười biếng (lazy quantifier)

Nói là lượng từ lười biếng vì nó sẽ so khớp ít lần nhất có thể. Ví dụ nếu chúng ta gõ 9{2,4} thì bình thường là sẽ so khớp 4 số 9, nhưng nếu gõ 9{2,4}? thì chỉ so khớp 2 số 9 (ít nhất có thể):

Nếu gõ 9*? Sẽ không có số 9 nào được so khớp vì lượng từ * cho phép so khớp không kí tự nào:

9+?, kết quả:

Cú pháp lượng từ lười biếng:

  • ?? : lười biếng 0 hay 1 lần
  • +? : lười biếng 1 hay nhiều lần
  • *? : lười biếng 0 hay 1 lần
  • {n}? : lười biếng n lần
  • {n,}? : lười biếng n lần hay hơn
  • {m,n}? : lười biếng m lần thay vì n lần

Lượng từ sở hữu (possessive quantifier)

Giống như đặc điểm tham lam (greedy), lượng từ sở hữu so khớp nhiều lần nhất có thể nhưng, khác với tham lam, nó không từ bỏ (tức không quay lui) bất cứ thứ gì nó tìm thấy.

Ví dụ gõ 9.*+ thì sẽ so khớp tất cả số 9, nhưng nếu .*+9 thì sẽ không so khớp nào được tìm thấy bởi vì lượng từ sở hữu sẽ không quay lui trở lại để so khớp khi gặp số 9 cuối cùng.

Các lượng từ sở hữu:

  • ?+ : sở hữu 0 hay 1 lần
  • ++ : sở hữu 1 hay nhiều lần
  • *+ : sở hữu 0 hay 1 lần
  • {n}+ : sở hữu n lần
  • {n,}+ : sở hữu n lần hay hơn
  • {m,n}+ : sở hữu m đến n lần