Chuyển đến nội dung chính
Mô-đun 1 · Bài học 3 trong tổng số 43/32 trong khóa học~8 min
Bài học theo mô-đun (3/4)

Ký tự đại diện: dấu chấm `.`

dấu chấm . trong biểu thức chính quy là ký tự đại diện: nó khớp với bất kỳ ký tự đơn nào ký tự\u2026 với một ngoại lệ quan trọng: nó KHÔNG khớp với dòng mới (\n).

Code
Pattern: c.t
Sample:  cat cot cut c@t c\nt
         ^^^ ^^^ ^^^ ^^^

Ba chữ cái: a c, ký tự bất kỳ, a t. Không có dòng mới ở giữa, vì vậy c\nt không khớp (theo mặc định).

Dấu chấm cực kỳ hữu ích nhưng cũng nguy hiểm: sử dụng mà không có kỷ luật thu được nhiều hơn bạn dự định. Kết hợp với các bộ định lượng ở học phần 2 (.*, .+?) đó là nguồn gốc của 90% mẫu "không hoạt động theo cách tôi dự kiến".

Cờ s: "dotAll"

Với cờ s (còn được gọi là dotAll hoặc single-line), dấu chấm khớp với mọi ký tự, bao gồm cả dòng mới. Hữu ích để trích xuất các khối trải dài nhiều dòng.

Code
Pattern: <p>.*</p>
Flag:    gs
Sample:  <p>prima\nseconda</p>
         ^^^^^^^^^^^^^^^^^^^^^

Giới hạn và hành vi của ký tự đại diện dấu chấm

Dấu chấm . là ký tự đại diện mạnh nhưng theo mặc định dấu chấm này không khớp với các ký tự dòng mới (\\n). Nếu bạn muốn dấu chấm hoàn toàn khớp với mọi thứ, kể cả dòng mới, bạn phải bật cờ s (dotAll). Hãy cẩn thận khi kết hợp dấu chấm với số lượng hóa (.*), vì nó có xu hướng tiêu thụ quá nhiều văn bản (hành vi tham lam).

Hãy thử nó

tập thể dục#regex.m1.l3.e1
Nỗ lực: 0Đang tải…

Tìm mọi bộ ba ký tự được phân cách bằng dấu ngoặc đơn, ví dụ: `(abc)`, `(xyz)`. Sử dụng ký tự đại diện cho 3 ký tự bên trong.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

Ba dấu chấm cho ba ký tự tùy ý. Dấu ngoặc đơn là các ký tự meta: chúng phải được thoát bằng \\.

Giải pháp khả dụng sau 3 lần thử

Xem lại bài tập

tập thể dục#regex.m1.l3.e2
Nỗ lực: 0Đang tải…

Trích xuất khối giữa `[INIZIO]` và `[FINE]`, khối này có thể trải dài trên nhiều dòng. Bạn sẽ cần cờ `s` để dấu chấm cũng khớp với dòng mới và phiên bản 'lười biếng' của bộ định lượng (`.*?`, mô-đun 2).

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

Không có cờ s, dấu chấm dừng ở cuối dòng: thêm nó vào. Biểu mẫu .*? (lười biếng) dừng trận đấu ở [FINE] đầu tiên.

Giải pháp khả dụng sau 3 lần thử

Thử thách bổ sung

tập thể dục#regex.m1.l3.e3
Nỗ lực: 0Đang tải…

Find all 3-character sequences starting with `c` and ending with `t` (e.g. `cat`, `cot`, `c-t`).

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

Mẫu sử dụng dấu chấm '.' để đại diện cho ký tự đại diện ở giữa.

Giải pháp khả dụng sau 3 lần thử