Regex là gì? Bạn đã biết tới sự lợi hại của Regex hay chưa? Bài học này Lập Trình Không Khó sẽ giúp bạn hiểu regex (biểu thức chính quy) là gì và cách để tinh thông regex nha.
Bạn đang xem: Regex là gì
Regex là gì?
Regex (TA: Regular Expression) trong tiếng Việt được gọi là Biểu thức chính quy. Regex là các các kí tự được kết hợp với nhau theo quy tắc để tạo nên một trình tự giúp chúng ta tìm kiếm và thay thế văn bản một cách thông minh, nhanh chóng, đơn giản và tiện. Regex khả năng dùng được trong hầu hết các ngôn ngữ lập trình bậc cao như Java, C#, Python, JS, PHP,… Hiểu và dùng được regex, cuộc đời bạn sẽ nở hoa ????
Ứng dụng của Regex trong tìm kiếm và thay thế văn bản – Demo trên Sublime Text 3 (Click vào mới thấy, ảnh gif đó)
Hãy quan sát ảnh trên, bạn sẽ thấy được sự thần kỳ của regex trong việc tìm kiếm và thay thế văn bản. Nếu bạn chỉ dùng tìm kiếm và thay thế giống trong Word, bạn sẽ chẳng bao giờ làm được điều đó.
Sau khi tinh thông regex, việc ứng dụng nó vào trong quy trình tìm kiếm và thay thế của bạn sẽ đơn giản và đơn giản hơn rất nhiều.
Hãy thử hình dung với bài toán lấy tất cả SĐT khách hàng trong một file văn bản 20MB xem. Bạn sẽ dùng cách nào để lấy được đống sđt trong đó:
Dùng regex với chưa đến 10 dòng code, file nhỏ mở text editer là xong chứ méo cần code.Dùng một đống for, if else để sàng lọc lên tới 100 dòng.
Nếu bạn thích dùng cách 1 thì đọc tiếp bài viết này nha, hihi
Cú pháp của biểu thức chính quy
So khớp cơ bản
Chuỗi | Giải nghĩa |
. | Khớp với bất kỳ ký tự nào |
d | Khớp với số bất kỳ từ 0 – 9 |
D | Phủ định của d |
w | Khớp với các chữ cái tiếng anh, chữ số và dấu _ |
W | Phủ định của w |
Khớp với dấu cách(SPACE trên bàn phím) | |
Khớp với dấu tab | |
Khớp với new line(xuống hàng) | |
s | Khớp với dấu trắng bất kỳ(dấu cách, , ) |
S | Phủ định của s |
Kết hợp các chuỗi so khớp
Bạn khả năng kết hợp các chuỗi so khớp lại với nhau bằng cách đưa chúng vào trong cặp ngoặc vuông. Ví dụ:
Bạn khả năng loại trừ các tổng giá trị không mong muốn bằng cách như sau:
<^a-z> -> Khớp với mọi ký tự trừ các ký tự trong bảng chữ cái tiếng anh.<^ueoai> -> Khớp với mọi ký tự trừ các nguyên âm trong tiếng anh.
Các ký tự ranh giới
Ký tự | Giải nghĩa |
Xác định ranh giới của từ, xem demo | |
B | Phủ định của , xem demo |
^ | Xác định vị trí bắt đầu của dòng, demo |
$ | Xác định vị trí kết thúc của dòng, demo |
dùng hoặc trong regex
Đôi khi bạn muốn so khớp hoặc tổng giá trị này, hoặc tổng giá trị kia. Chẳng hạn số điện thoại ở Việt Nam khả năng bắt đầu là 0, hoặc 84 hoặc +84 thì ta phải làm sao?
Khi đó ta dùng: (0|84|+84) -> Lưu ý dấu + là ký tự định lượng nên phải có dấu đằng trước, đọc tiếp đi rồi sẽ biết định lượng là cái gì ha. -> Xem demo ở đây
Chú ý: Nên dùng (?:0|84|+84) thay cho regex trên, trong trường hợp bạn không muốn dùng lại cụm tổng giá trị đầu số này để thay thế. -> tối ưu tốc độ xử lý.
Các ký tự định lượng
Loại định lượng | Giải nghĩa | Demo |
X* | So khớp lặp lại regex X 0 hoặc vô số lần | Demo link |
X+ | So khớp lặp lại regex X 1 hoặc vô số lần | Demo link |
X? | So khớp lặp lại regex X 0 hoặc 1 lần | Demo link |
Xm | So khớp lặp lại regex X chính xác m lần | Demo link |
Xm, | So khớp lặp lại regex X m hoặc nhiều hơn m lần | Demo link |
Xm,n | So khớp lặp lại regex X với số lần từ m tới n (bao gồm cả m và n) | Demo link |
Và một vài ví dụ sau đây:
ab+ sẽ khớp các chuỗi ab, abb, abbb…(ab)+ sẽ khớp các chuỗi ab, abab, ababab…
Mặc định tổng giá trị định lượng * và + sẽ tham lam tới mức tối đa, nhưng ta khả năng ngăn nó ăn tham bằng định lượng ?:
Tham lam: ^.*b sẽ khớp aacbaabde (phần khớp là phần gạch chân đó). Nó sẽ khớp cho tới ký tự b cuối cùng của chuỗi luôn.Lười nhác: .*?b sẽ chỉ khớp aacbaabde (gặp ký tự b đầu tiên là nó dừng lại).
Xem thêm: Kho Bạc Nhà Nước Tiếng Anh Là Gì, Kho Bạc Nhà Nước Việt Nam
Các ký tự đặc biệt của regex
Giống như ngôn ngữ lập trình có các từ khóa mà bạn không được phép khai báo trùng. Thì regex cũng vậy, nó có các ký tự đặc biệt đang nắm giữ các vai trò quan trọng. Bạn muốn dùng nó thì phải báo cho nó biết:
chi tiết, các ký tự <>()^$.|*+? và dấu – ở trong cặp ngoặc vuông là các ký tự đặc biệt. Nếu bạn muốn dùng nó để so khớp thì cần thêm dấu vào đằng trước:
Ví dụ: . sẽ khớp với dấu chấm (.) và sẽ khớp với ký tự .
Trên đây là các kiến thức cơ bản, nói cơ bản thôi chứ nhớ nhiêu đó là đủ sài rồi đấy. Nếu bạn muốn học nhiều hơn nữa, thực hành nhiều hơn nữa thì đọc tiếp bài viết nha ????
Học regular expression ở đâu?
Tui, Lập Trình Không Khó có một series hướng dẫn học regex cơ bản trên Youtube đó. Bạn nào mới học thì khả năng xem qua series này nha.
Còn ông nào giỏi tiếng anh, hoặc muốn tranh thủ học tiếng Anh luôn thì tuyệt với quá. Để tui search giúp ông mấy cái tutorial nha.
Regex tutorial #1
Regex tutorial #2
Regex tutorial #3
Qua đây, mình hi vọng bài viết này giúp các bạn hiểu được regex là gì? các khái niệm, cách dùng regex cơ bản qua các ví dụ cũng như con đường để chinh phục regex nha. Học xong thì nhớ mang đi khoe bạn bè “mày biết regex là gì không”, vào đây (website này nè, giới thiệu hộ tui nha) mà học ????
một vài regex được dùng thường nhật
Dưới đây là danh sách các regex được dùng thường nhật. Đôi khi, có những các phức tạp nhưng thường nhật thì ta nên dùng các regex đã được cộng đồng mạng kiểm chứng có phải tốt không nào. Dưới đây tôi xin liệt kê ra các regex thường nhật, mỗi regex trên một dòng nha.
Lưu ý: Cái bắt đầu ^ và $ bạn khả năng thêm, bỏ nếu cần nha.
So khớp email
^(
((<<0-9>1,3.<0-9>1,3.<0-9>1,3.)|((
w+((-w+)|(w*)).
So khớp URL
^((https?|ftp|file)://)?(
Xem thêm: Tài Chính Ngân Hàng Là Gì, Ngành Tài Chính
So khớp SĐT ở VN
+?(0|84)d9
So khớp số nguyên
d+
So khớp mã HTML
So khớp tên riêng
một vài kết nối hữu ích
Test regex online: https://regex101.com/Regex cheetsheet: http://web.mit.edu/hackl/www/lab/turkshop/slides/regex-cheatsheet.pdfThư viện regex: http://regexlib.com/
Ồ, regex là gì? Hóa ra nó đơn giản vậy hả? Biết vậy mình học sớm cho nó nhàn đời. Đây từng là suy nghĩ của mình và tới giờ nó vẫn đúng. Regex nó khủng lắm các bạn ạ, mình vẫn đang từng ngày học nó đây: https://stackoverflow.com/questions/59188591/
Chuyên mục: Hỏi Đáp
?,’>,
,>
Các câu hỏi về Regex là gì – WEB GIẢI ĐÁP
Nếu có bắt kỳ câu hỏi thắc mắt nào vê Regex là gì – WEB GIẢI ĐÁP hãy cho chúng mình biết nha, mõi thắt mắt hay góp ý của các bạn sẽ giúp mình nâng cao hơn hơn trong các bài sau nha <3Bài viết Regex là gì - WEB GIẢI ĐÁP ! được mình và team xem xét cũng như tổng hợp từ nhiều nguồn. Nếu thấy bài viết Regex là gì - WEB GIẢI ĐÁP Cực hay ! Hay thì hãy ủng hộ team Like hoặc share. Nếu thấy bài viết Regex là gì - WEB GIẢI ĐÁP rât hay ! chưa hay, hoặc cần bổ sung. Bạn góp ý giúp mình nha!!
Các Hình Ảnh Về Regex là gì – WEB GIẢI ĐÁP
Các từ khóa tìm kiếm cho bài viết #Regex #là #gì #WEB #GIẢI #ĐÁP
Tham khảo thêm dữ liệu, ở WikiPedia
Bạn nên tra cứu thêm nội dung chi tiết về Regex là gì – WEB GIẢI ĐÁP từ trang Wikipedia tiếng Việt.◄source: https://so1vn.vn/
Xem thêm các bài viết về Hỏi đáp ở : https://so1vn.vn/hoi-dap/
Trả lời