Như chúng ta đã biết Regex hay Regular Expression? là cách để diễn tả một đoạn mẫu phức tạp dùng để tìm kiếm (search pattern) bằng một chuỗi. Ví dụ như bạn có thể check chuỗi bao gồm chữ hoặc số, hay bạn có thể đi sâu hơn là kiểm tra số lượng kí tự, vị trí của kí tự, chữ hoa, chữ thường, và nhiều hơn nữa. Vậy tại sao coder cần biết về Regex?
Regex là một trong những công cụ mạnh mẽ nhất và được áp dụng rộng rãi nhất trong việc lập trình.
Mọi chuyện từ đơn giản tới phức tạp đều có thể giải quyết bởi Regex, có thể kể tới như là kiểm tra xem email có hợp lệ hay không, hay khó hơn như refactor một block code phức tạp, tìm kiếm và thay thế một số pattern cụ thể nào đó, etc.
Chỉ chừng đó thôi chúng ta có thể đủ thấy rằng Regex là một công cụ cực kì mạnh mẽ, có thể dùng trong code, có thể dùng chung với editor, và nếu bạn là một coder thực thụ thì nó là thứ không thể thiếu trong hành trang của bạn.
Regex có thể được sử dụng trong hầu hết tất cả các ngôn ngữ. Học Regex cơ bản thì khá đơn giản, các bạn chỉ cần học những expressions cơ bản rồi kết hợp chúng lại là được. Chi tiết thì chắc tôi sẽ không giải thích từng expression ở bài viết này. Các bạn có thể vào https://regexr.com/, để tìm hiểu và thử ngay tại chỗ. Tôi nghĩ chỉ cần khoảng 30 phút thôi là các bạn đã có thể tự viết cho mình một đoạn Regex đơn giản rồi.
Ví dụ:
^[0-9]+$
Giải thích
Sử dụng thực tế như thế nào?
Vi dụ thực tế có một file data dạng như sau.
Max, Dog
Lucy, Dog
Charlie, Horse
Molly, Cat
Buddy, Cat
Daisy, Fish
Bây giờ chúng ta muốn insert đống data này vào một bảng trong database tên Pet với hai trường dữ liệu là name và kind dạng như sau.
INSERT INTO Pet (name, kind) VALUE ('Max', 'Dog');
Cách thông thường sẽ là ngồi gõ dòng code insert rồi copy cho những dòng còn lại, giả sử file có 10000 dòng chắc copy tới tết luôn.
Nếu dùng Regex
Search: ^(.*), (.*)\n
Replace: INSERT INTO Pet (name, kind) VALUE ('$1', '$2');\n
EZ quá phải ko nào
Tổng kết
Đa di năng nên ko khó hiểu tại sao coder hay developer cần biết Regex phải không nào.
Mục đích của việc sử dụng Regex là giúp các bạn tiết kiệm thời gian và công sức. Nếu các bạn mất nhiều thời gian để debug một cái Regex hơn là sử dụng cách thông thường thì các bạn nên dừng lại, dùng cách thông thường sẽ tốt hơn.
Unpublished comment
Viết câu trả lời