Negative Và Positive Lookahead trong Regular Expression
Nếu Lookbehind dùng để kiểm tra điều kiện ở phía trước chuỗi thì Lookahead ngược lại, nó sẽ kiểm tra điều kiện ở phía sau. Cũng tương tự như lookbehind sẽ có 2 dạng, đó là Positive và Negative.
Không có gì bằng thấy tận mắt, sờ tận tay đúng không nào? Nên ta sẽ bắt đầu một ví dụ nhé.
Hình như ví dụ này hơi quen quen, các bạn nhớ ra chưa nhỉ ? Nếu nhớ ra thì comment ở dưới để tôi biết với nhé :D.
Ta sẽ giải bài này thông qua Positive Lookahead Regular Expression.
Bài viết này được đăng tại [free tuts .net]
Positive Lookahead Trong Regular Expression
Cú pháp: (?=)
Ở ví dụ một ta sẽ dùng Positive Lookahead để xác định câu partern 'chuỗi nào có phần đuôi bằng @gmail.com thì sẽ chọn'. Các bạn xem code nhé.
$str = 'freetuts@gmail.com thehalfheart@facebook.com hoclaptrinh@yahoo.com freetuts.net@gmail.com'; preg_match_all('/[^\s]+(?=@gmail\.com)/', $str, $matches); echo '<pre>'; print_r($matches); echo '</pre>';
Chạy lên và kết quả là:
Array ( [0] => Array ( [0] => freetuts [1] => freetuts.net ) )
Bạn có thấy chuỗi partern mình có thêm một đoạn (?=@gmail\.com)
không, đoạn này chính là Positive Lookahead xác định chuỗi @gmail.com. Còn đoạn partern đầu tiên [^\s]+
là tìm dãy ký tự cho tới khi gặp khoảng trắng. Và kết quả đúng như mong đợi.
Negative Lookahead trong regular expression
Cú pháp: (?!)
Ở phần trên ta đã tìm được phần đầu của những email có phần đuôi là @gmail.com, bây giờ giả sử tôi muốn tìm kiếm phần đầu của những email có phần đuôi không phải là @gmail.com. Áp dụng cú pháp và tương tự như Pisitive Lookahead ta có lời giải như sau:
.. xin lỗi tutorials bị lỗi, mình sẽ cập nhật sớm
Danh sách file tải về
Tên file tải về | Pass giải nén |
---|---|
Tải bài học định dạng PDF | freetuts.net hoặc gameportable.net |