Bắt đầu ngayBắt đầu miễn phí

Dấu hỏi và hai ý nghĩa của nó

Toán tử or rất hữu ích khi bạn biết chính xác các lựa chọn hợp lệ và chắc chắn rằng có ít nhất một lựa chọn xuất hiện. Nhưng nếu bạn muốn khớp một mẫu mà trong đó một phần lúc có lúc không thì sao? Đây là lúc dấu hỏi ? xuất hiện:

? có thể biến ký tự hoặc nhóm đứng trước thành tùy chọn. Nhờ đó, biểu thức chính quy vẫn khớp ngay cả khi một phần nào đó của mẫu bị thiếu. Nhưng lưu ý, nếu nó đứng sau một bộ nhân như * hoặc +, dấu hỏi có thể có thêm một tác dụng thứ hai:

? cũng có thể biến bộ nhân đứng trước thành "lười" (lazy) thay vì "tham lam" (greedy). Điều này có nghĩa là thay vì tìm số ký tự tối đa, ? sẽ khiến biểu thức chính quy tìm số khớp tối thiểu.

Bài tập này là một phần của khóa học

Regular Expressions nâng cao trong R

Xem khóa học

Hướng dẫn bài tập

  • Khớp cả số ít "Screen" và số nhiều "Screens" bằng cách cho "s" cuối cùng là tùy chọn.
  • Khớp một lượng ký tự bất kỳ ngẫu nhiên trước dấu phẩy bằng cách dùng .*.
  • Khớp cùng mẫu đó nhưng thêm dấu hỏi ? sau dấu sao — bạn có nhận ra sự khác biệt không?

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

# Match both Screen and Screens by making the last "s" optional
str_match(lines, pattern = "Screens___")

# Match a random amount of arbitrary characters, followed by a comma
str_match(lines, pattern = "___,")

# Match the same pattern followed by a comma, but the "lazy" way
str_match(lines, pattern = "___,")
Chỉnh sửa và Chạy Mã