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?

Vì sao Coder cần biết Regular Expression?

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.

Sử dụng ở đa ngôn ngữ

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

  • ^: Đây là expression thể hiện việc bắt đầu một dòng
  • [0-9]: Đây là expression thể hiện việc kí tự tồn tại trong khoảng 0 đến 9
  • +: Đây là expression thể hiện việc tồn tại 1 hay nhiều kí tự phù hợp với expression trước đó
  • $: Đây là expression thể hiện việc kết thúc một dòng
  • Tóm lại đoạn Regex trên dùng để tìm kiếm dòng chỉ có tồn tại kí tự số.

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.

  • Tuy nhiên chúng ta cần phải nhớ Regex là một công cụ hữu dụng, nhưng không có nghĩa là lúc nào chúng ta cũng sử dụng nó.

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.

  • Nếu có tồn tại một cách đơn giản hơn hay không cần tới Regex thì đừng cố gắng sử dụng Regex để tỏ ra thông minh hơn. Bởi vì Regex là thứ khó đọc, khó debug, cũng như có thể tồn tại một số edge cases mà nếu các bạn không hiểu rõ Regex các bạn có thể gặp phải.

Viết câu trả lời

Drop Images

0 Bình luận