Bạn đã bao giờ thử tìm một mẫu lặp lại trong một đoạn văn bản chưa? Bạn có thể đã sử dụng một cái gì đó giống như chức năng tìm kiếm trong trình duyệt hoặc trình xử lý văn bản của bạn, nhưng khi bạn cần tìm một cái gì đó phức tạp hơn, nó có thể giống như tìm một cây kim trong haystack ngôn ngữ.

May mắn thay, có một cách để chọn ra các mẫu chính xác trong văn bản ngay bên dưới ký tự. Nó được gọi là biểu thức chính quy, và nó cho phép bạn trở thành một bậc thầy tìm kiếm thông qua văn bản.

Nếu bạn đã chú ý đến tất cả các tiện ích Linux, bạn có thể nhận thấy rằng chúng thường xuyên sử dụng một cái gì đó gọi là biểu thức thông thường. Mặc dù Unix và Linux làm cho chúng nổi tiếng, nhưng các biểu thức chính quy có sẵn trong nhiều gói khác nhau, bao gồm cả Microsoft Word.

Các biểu thức chính quy được sử dụng đáng chú ý nhất trong một số chương trình Linux đáng chú ý, bao gồm grep (viết tắt của Global Regular Expression Print), Awk và Sed.

Tốt hơn là nên suy nghĩ về các biểu thức chính quy như một ngôn ngữ nhỏ, những điều cơ bản trong đó có thể được mô tả trong một không gian nhỏ.

Bạn có thể tìm kiếm bằng cách sử dụng các công cụ như Grep hoặc Ack từ đầu vào chuẩn hoặc tệp văn bản.

Ví dụ, nếu bạn đang cố tìm thuật ngữ “Firefox” ở đầu ra từ lệnh ps, đây là cách bạn sẽ làm điều đó:

 ps | grep firefox 

Và đây là cách bạn tìm từ “maketecheasier” trong một tập tin.

 grep maketecheasier somefile 

MetaCharacters

Trong các biểu thức chính quy, bạn cũng có thể tìm kiếm các phần của chuỗi. Cách bạn làm điều này là với hai nhân vật. Chúng được gọi là metacharacters. Chúng tương tự như các đối sánh ký tự đại diện mà bạn có thể đã sử dụng trong trình bao.

  • “.” Là viết tắt của một ký tự đơn. Mẫu “ct” khớp với cả chữ “mèo”, “cắt” và “cũi”.
  • Metacharacter “*” có nghĩa là tìm ký tự trước đó 0 hoặc nhiều lần. Mẫu "l. * X" sẽ tìm thấy "linux", cũng như bất kỳ từ nào khác đã xảy ra để phù hợp với cùng một mẫu.

Lý do bạn không thể sử dụng một cái gì đó như "l*x" như bạn sẽ trong vỏ là bởi vì phù hợp với 0 hoặc nhiều ký tự có nghĩa là nó sẽ tìm dòng mà không có một "l" theo sau bởi bất kỳ nhân vật khác. Nói cách khác, bất kỳ dòng nào cố gắng để được kết hợp, đó là hoàn toàn vô dụng.

Tìm các mẫu ở đầu hoặc cuối

Bạn cũng có thể tìm các mẫu bắt đầu từ đầu hoặc cuối dòng.

  • Ký tự "^" khớp lúc đầu
  • Chữ “$” xuất hiện ở cuối.

Ví dụ: "sier$" khớp với "Make Tech Easier" và "^Make" sẽ khớp với "Make."

Tìm kết quả phù hợp trong phạm vi

Bạn cũng có thể nhận được vào các ký tự phức tạp hơn. Mọi thứ bạn đưa vào dấu ngoặc vuông sẽ được đối sánh dưới dạng một phạm vi. Ví dụ: “ [az] ” khớp với tất cả các chữ thường. “ [a-zA-Z] ” khớp với tất cả các chữ cái. “ [a-zA-Z0-9] ” khớp với các ký tự chữ và số. Bên trong dấu ngoặc, ký tự “^” phủ nhận mọi thứ. “ [^a-zA-Z] ” khớp với bất kỳ thứ gì không phải là chữ cái.

Bạn cũng có thể tìm các ranh giới từ bằng các ký tự “ \< ” và “ \> ”. Mẫu “ \ ” khớp với “Linux”, rõ ràng.

Bạn có thể so khớp một số thứ cụ thể với dấu ngoặc nhọn. " {3} " khớp với một cái gì đó ba lần và " {3, 5} " phù hợp với một cái gì đó giữa 3 và 5 lần.

Với những khối xây dựng đơn giản này, bạn có thể kết hợp một số nội dung khá phức tạp. Có nhiều thứ hơn với các biểu thức chính quy hơn là có thể được giải thích trong một bài viết ngắn. Nếu bạn muốn xử lý toàn bộ cuốn sách của chủ đề, bạn chắc chắn nên kiểm tra bởi Jeffrey EF Friedl.

Tiết lộ: Bài viết này chứa một liên kết liên kết. Mặc dù chúng tôi chỉ viết về các sản phẩm mà chúng tôi cho là xứng đáng trên trang web này, Make Tech Easier có thể kiếm được một khoản hoa hồng nhỏ nếu bạn nhấp qua và mua sản phẩm được đề cập.

Tín dụng hình ảnh: xkcd