Biểu thức chính quy html
Biểu thức chính quy - Regular expressionBiểu thức chính quy là gì?Biểu thức chính quy là một nhóm các ký tự, ký hiệu viết ra theo quy luật tạo thành mẫu (pattern), nó được sử dụng để tìm kiếm văn bản (text). Show
Một biểu thức chính quy là một mẫu (pattern) nó tương đồng quy luật với một chuỗi từ trái qua phải. Biểu thức chính quy tên tiếng anh là Regular Expression gọi tắt là regex hoặc regexp Trong lập trình nó được dùng với các hàm xử lý chuỗi, xử lý văn bản với các tác vụ cụ thể như: tìm và thay thế chuỗi, kiểm tra tính hợp lệ của dữ liệu, trích xuất chuỗi con từ một chuỗi ... Hầu hết các ngôn ngữ lập trình đều hỗ trợ (Biểu thức chính quy trong PHP, trong Java, trong C# ...) PHP, C#, JAVA ... Thậm chí RegExp còn rất phổ biến trong các ứng dụng, công cụ khác nhau như rewrite URL mod_rewrite, tìm kiếm và thay thế trong các IDE, truy vấn lọc dữ liệu trong một số dịch vụ của Google ... Thử xem xét một ví dụ về Regex: Giả sử ứng dụng của bạn yêu cầu tên người dùng phải tuân thủ quy tắc:
Thì biểu thức chính quy biểu diễn quy tắc đó sẽ như sau: ^[a-z0-9_-]{3,15}$ ^ : Ký hiệu cho biết bắt đầu một dòng[a-z0-9_-] : Cho biết là tập tự: a-z, số từ 0 - 9,
ký tự -, ký tự _{3,15} : Chuỗi dài 3 đến 15 ký tự$ : Điểm kết thúc dòngVới mẫu như trên, chuỗi phù hợp đọc từ trái qua phải thì: bắt đầu một dòng - đến tập ký tự chỉ chứa (a-z, 0-9, -, _), chuỗi này dài 3 - 15, cuỗi cùng là kết thúc dòng. Với biểu thức chính quy trên thì các tên như Xét
trường hợp đơn giản nhất, một biểu thức Regex chỉ là một mẫu là chuỗi các ký tự dùng để tìm kiếm trong văn bản. (chuỗi, text, string). Ví thụ một biểu thức RegEx ước => Ước một điều ... mộng ước rất đơn sơ. Nụ hôn trao hạnh phút đến bất ngờ (Chạy thử vidu01) Biểu thức chính quy Regex là phân biệt chữ hoa chữ thường. Có cơ chế bật cờ thiết lập không phân biệt chữ hoa, chữ thường ở phần dưới Các ký tự biểu diễn thông tin siêu dữ liệu - MetaCác ký hiệu biểu diễn thông tin (meta character), được dùng để viết biểu thức chính quy RegEx, tóm tắt lại và giải thích chi tiết từng mục ở phần sau: Nếu có thể, sau khi đọc và hiểu các giải thích ở phần sau, hãy cố gắng nhớ bảng này, nó sẽ giúp bạn đọc hiểu và viết biểu thức chính quy được dễ dàng.
Ký hiệu chấm .Ký hiệu dấu chấm .oàn =>Sự hoàn hảo dường như không thể đạt được, nhưng nếu chúng ta theo đuổi sự hoàn hảo thì chúng ta sẽ chạm đến sự xuất sắc. (Chạy thử vidu02) Cứ có 4 ký tự liên tiếp, bắt đầu bằng ký tự nào đó, sau đó là oàn thì phù hợp với mẫu. Tập hợp ký tự []Dùng
Ví dụ biểu thức [ưƯ]ớc => Ước một điều ... mộng ước rất đơn sơ. Nụ hôn trao hạnh phút đến bất ngờ (Chạy thử vidu03) Lưu ý: Viết nh[.] => Thời gian cứ thế xoay vòng thật nhanh. Bao mùa chiếc áo phông phanh! Chạy thử vidu04 Mẫu phù hợp là 3 ký tự liên tiếp: Tập hợp ngoại trừ [^]Thông thường thì [^n]hanh => Thời gian cứ thế xoay vòng thật nhanh. Bao mùa chiếc áo phông phanh! Chạy thử vidu05 Lặp lại với ký hiệu *Ký hiệu
"\s*mình\s*" => Đừng so sánh mình với bất cứ ai trong thế giới này. Nếu bạn làm như vậy có nghĩa bạn đang sỉ nhục chính bản thân mình. Bill Gates Chạy thử vidu06 Lặp lại với ký hiệu +Ký hiệu có.+! => Đàn ông cần tiền chủ yếu chỉ để cho hai việc: có được nàng và thoát được nàng!. Chạy thử vidu07 Mẫu phía trước có hay không đều được với ?Trong biểu thức Regex thông thường [h]?ôn => Đàn bà khôn ngoan hơn đàn ông vì họ biết ít hơn, nhưng hiểu nhiều hơn. Chạy thử vidu08 Biểu diễn độ dài {}
Nếu bạn viết Nếu viết Nhóm mẫu (...)Nhóm là một mẫu (pattern) viết trong Chúng ta cũng dùng ký hiệu n(g|h) =>Nếu có một ai đó làm chậm bước chân của bạn, hãy nhẹ nhàng rẽ sang hướng khác. Chạy thử vidu09 Viết mẫu như trên còn gọi là capture group vì các ngôn ngữ lập trình triển khai RegEx sẽ nhớ thông tin mẫu con này trong thông tin kết quả trả về. Nếu chỉ cần lấy kết quả mẫu chính (không quan tâm mẫu con trả về, mặc dù phải phù hợp với mẫu con thì mẫu chính mới phù hợp) thì cho thêm ký hiệu Phân biệt capture group và non capture group thực ra cần xét trong một ngôn ngữ lập trình cụ thể, lấy ví dụ Javascript (bạn có thể chạy ngay trong trình duyệt để kiểm tra). Trong mảng kết quả trả về, có chuỗi phù hợp với mẫu lớn tìm được là Kết quả trả về tìm được Biểu diễn thay thế |Ký tự Biểu diễn ký tự đặc biệt với \Do một số ký hiệu đã được dùng đã biểu diễn Regex như :
Bắt đầu của dòng ^Sử dụng Điểm kết thúc của chuỗi $Cho biết kết thúc dòng phải thỏa mãn mẫu phía trước $ Ngược lại với Ký hiệu tắt cho tập hợp
Biểu thức ?= lookahead (?=...)Một biểu thức con viết bắt đầu bằng Ví dụ Ví dụ, lấy ra từ (T|t)he => The fat cat sat on the mat. Chạy thử vidu10 Lấy ra từ (T|t)he(?=\sfat) => The fat cat sat on the mat. Chạy thử vidu11 Biểu thức ?! phủ định lookahead (?!...)Biểu thức Ví dụ lấy ra từ (T|t)he(?!\sfat) => The fat cat sat on the mat. Chạy thử vidu12 Biểu thức (?<=...) LookbehindCũng
là loại non-capture, sử dụng đề lọc kết quả phía sau nó. Kết quả trả về trong chuỗi gốc, phía trước nó phải thỏa mãn lookbehind. Lấy ra các từ (?<=(T|t)he\s)(fat|mat) => The fat cat sat on the mat. Chạy thử vidu13 Biểu thức (?Sử dụng để lấy các phù hợp mà đi trước không có một mẫu lookbehind chỉ ra. (? => The cat sat on cat.
Chạy thử vidu14
Các cờ
Các cờ này được đưa vào mẫu theo dạng
Trong PHP các hàm sử dụng RegExp thường các biểu thức này nằm trong cặp Tóm tắt
Luyện tập phân tích với một số biểu thức chính quy thông dụngMột số mẫu để kiểm tra dữ liệu, tìm kiếm, trích xuất ... Địa chỉ email
Đia chỉ IP4
(Đang cập nhật) Tác giả: https://twitter.com/ziishaned |