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

Nhìn lại trong thực tế

Chúng ta hãy kết hợp tất cả bốn hình thức quan sát trong các tình huống thực tế. Quan điểm tỏa sáng khi bạn cần:

  1. Trích xuất một giá trị không có ngữ cảnh xác định giá trị đó.
  2. Xác thực một chuỗi theo nhiều điều kiện độc lập.
  3. Bộ lọc phù hợp đáp ứng một số điều kiện nhưng không đáp ứng các điều kiện khác.

Xác thực mật khẩu

Code
Pattern: ^(?=.*[A-Z])(?=.*\d)(?=.*[^a-zA-Z\d]).{8,}$
Checks:
  - at least one uppercase     (?=.*[A-Z])
  - at least one digit         (?=.*\d)
  - at least one symbol        (?=.*[^a-zA-Z\d])
  - minimum length 8           .{8,}

Mỗi lần xem trước sẽ kiểm tra một điều kiện, bắt đầu từ đầu (^). Họ là tất cả có chiều rộng bằng 0: động cơ giữ nguyên ở vị trí 0 và sau đó tiêu thụ với .{8,}$.

Trích xuất giữa các dấu phân cách

Code
Pattern: (?<=\().+?(?=\))
Sample:  Funzione foo(bar) e baz(qux, qix)
Match: "bar", "quux, qix" (without parentheses)

Nhìn phía sau + nhìn về phía trước + định lượng lười biếng: trích xuất nội dung ** bên trong dấu ngoặc đơn** mà không bao gồm chúng.

Kết hợp nhìn trước và nhìn sau

Việc sử dụng nhìn trước và nhìn sau cùng nhau cho phép tách các chuỗi nằm trong các thẻ hoặc định dạng cụ thể (ví dụ: trích xuất văn bản giữa hai thẻ mà không đưa các thẻ vào kết quả khớp cuối cùng). Điều này tránh các hoạt động dọn dẹp chuỗi tiếp theo.

Hãy thử nó

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

Trích xuất giá trị của mọi phép gán `key=value` từ nhật ký: CHỈ các giá trị (không có khóa, không có `=`). Giá trị có thể chứa chữ cái và chữ số.

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

Di chuyển `=` bên trong một cái nhìn phía sau (?<==): theo cách này, kết quả khớp chỉ chứa giá trị.

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.m6.l4.e2
Nỗ lực: 0Đang tải…

Tìm những từ có ít nhất MỘT chữ in hoa VÀ ít nhất MỘT chữ số (theo bất kỳ thứ tự nào), định vị chúng trong văn bản.

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

Nhìn về phía trước hai lần khi bắt đầu: (?=\\w*[A-Z])(?=\\w*\\d). Sau đó sử dụng từ đó với \\w+.

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

Thử thách bổ sung

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

Extract only numerical digits that are enclosed exactly between parentheses, e.g. extract `102` from `(102)` without capturing the parentheses.

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

Combine a positive lookbehind (?<=\( ) for the open parenthesis and a positive lookahead (?=\) ) for the closed one.

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