Computer >> Máy Tính >  >> Hệ thống >> Linux

Hướng dẫn cho người mới bắt đầu về biểu thức chính quy

Hướng dẫn cho người mới bắt đầu về biểu thức chính quy

Bạn đã bao giờ cố gắng 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ì đó 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 mình, 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ư mò kim đáy bể.

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 (RegEx) và nó cho phép bạn trở thành bậc thầy về tìm kiếm thông qua văn bản.

Tôi có thể sử dụng RegEx ở đâu?

Mặc dù Unix và Linux đã làm cho chúng trở nên phổ biến, nhưng biểu thức chính quy có sẵn trong nhiều gói khác nhau, bao gồm cả Microsoft Word.

Hướng dẫn cho người mới bắt đầu về biểu thức chính quy

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 , AwkSed .

Ví dụ:bạn có thể muốn kiểm tra các thiết bị USB trên PC của mình. Sử dụng lspci , bạn sẽ thấy danh sách tất cả các thiết bị và bạn sẽ phải tự mình tìm các mục nhập USB. Thay vào đó, bạn có thể sử dụng phần sau để chỉ hiển thị các thiết bị USB:

lspci | grep "USB"

Đây là ví dụ đơn giản nhất về RegEx đang hoạt động. Đây là cách phổ biến nhất để sử dụng biểu thức chính quy trong terminal nhưng không phải là cách duy nhất. Ngày nay, bạn có thể tìm thấy sự hỗ trợ của RegEx trong nhiều loại phần mềm khác nhau, từ trình soạn thảo văn bản đến trình quản lý tệp.

Tìm mẫu

Có thể bạn đã sử dụng * , hoạt động như một ký tự đại diện khi chọn tệp hoặc thư mục trong thiết bị đầu cuối. Ví dụ:để liệt kê tất cả các tệp JPG trong một thư mục, bạn có thể sử dụng:

ls *.jpg

RegEx tương đương với ở trên sẽ là:

ls | grep -E "\.jpg"
Hướng dẫn cho người mới bắt đầu về biểu thức chính quy

Để tìm kiếm cả tệp jpg và png, hãy sử dụng:

ls | grep -E "(\.jpg|\.png)"

Dải

Nếu bạn muốn tìm kiếm một phạm vi ký tự cụ thể thay vì một mẫu, bạn có thể làm điều đó bằng cách xác định nó trong dấu ngoặc. Ví dụ:nếu bạn sử dụng [a-z] như mẫu của bạn, điều này sẽ khớp với bất kỳ chuỗi nào bao gồm bất kỳ chữ cái viết thường nào của bảng chữ cái.

Như bạn có thể đoán, [A-Z] sẽ chỉ chọn các chữ cái viết hoa. Để chọn bất kỳ dải chữ cái nào, ở cả chữ hoa và chữ thường, biểu thức sẽ thay đổi thành [a-zA-Z] .

Để xác định một số trường hợp cụ thể của mẫu của bạn, bạn có thể nêu nó trong dấu ngoặc nhọn. {5} sẽ trả về năm lần xuất hiện của mẫu của bạn. Bạn cũng có thể sử dụng các dải số, vì vậy {5,10} sẽ giới thiệu cho bạn từ năm đến mười trường hợp.

MetaCharacters

Trong 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ó hai ký tự được gọi là siêu ký tự. 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 shell.

Dấu chấm chính là dấu chấm đơn giản, viết tắt của bất kỳ ký tự đơn nào khác. Nếu bạn đã sử dụng mẫu c.ll , nó sẽ khớp với “cell” nhưng cũng khớp với “cull” và “call.”

Bằng cách nhập dấu hoa thị sau dấu chấm, bạn có thể sử dụng dấu hoa thị để khớp với vô số ký tự. Ví dụ:.*board sẽ phù hợp cho cả “bàn phím” và “ván trượt”. ngay cả khi “key” và “skate” có số lượng chữ cái khác nhau.

Thoát

Bạn có thể nhận thấy rằng trong ví dụ của chúng tôi, khi chúng tôi chọn các loại tệp hình ảnh khác nhau, chúng tôi đã sử dụng dấu gạch chéo ngược trước dấu chấm (“\ .jpg”). Đó là cách bạn thoát các ký tự đặc biệt trong RegEx.

Nếu chúng tôi không sử dụng chúng, mẫu của chúng tôi sẽ không chỉ khớp với các phần mở rộng của tệp, các chuỗi như “.jpg” và “.png” mà còn khớp với “ajpg” và “opng”. Hãy nhớ rằng, . là một ký tự đại diện khớp với bất kỳ ký tự nào.

Neo và ranh giới

Neo và ranh giới cho phép bạn xác định chính xác hơn những gì bạn đang tìm kiếm.

Để chỉ tìm từ riêng lẻ “máy tính”, không có ký tự nào khác được đính kèm trước hoặc sau, bạn nên xác định mẫu là \<computer\> .

Bạn cũng có thể tìm kiếm cụ thể các mẫu xuất hiện ở đầu hoặc cuối dòng. Điều này đạt được với ^$ các ký tự tương ứng.

Vì vậy, nếu bạn chỉ muốn tìm các mục nhập có từ “máy tính” xuất hiện ở đầu dòng, mẫu của bạn sẽ giống như ^computer . Ngược lại, khi nó ở cuối dòng, mẫu sẽ thay đổi thành computer$ .

Đó là những quy tắc đơn giản của RegEx, bạn cũng có thể kết hợp để tìm ra chính xác các mẫu mà bạn đang tìm kiếm. Bạn có thể tìm kiếm các phạm vi ký tự ở đầu dòng hoặc các từ xen kẽ ở cuối, ngày cụ thể hoặc phạm vi năm, bằng cách sử dụng một chuỗi văn bản.

Đừng quên kiểm tra bảng gian lận Biểu thức chính quy của chúng tôi để nắm vững các biểu thức chính quy.