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:
- Trích xuất một giá trị không có ngữ cảnh xác định giá trị đó.
- Xác thực một chuỗi theo nhiều điều kiện độc lập.
- 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
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
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ó
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ố.
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ì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.
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
Extract only numerical digits that are enclosed exactly between parentheses, e.g. extract `102` from `(102)` without capturing the parentheses.
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ử