Thứ Ba, 23 tháng 4, 2019

Biểu thức chính quy

Biểu thức chính quy








Sửa đổi lần cuối: Thứ bảy ngày 26 tháng 1 10:09:07 2019

Mục lục

Biểu thức chính quy và Kết hợp mẫu mở rộng

Bruce Barnett

Lưu ý rằng điều này đã được viết vào năm 1991, trước Linux. Vào những năm 1980, người ta thường có các bộ tính năng biểu thức chính quy khác nhau với các tính năng khác nhau. ed (1) khác với sed (1) khác với vi (1), v.v ... Lưu ý rằng Sun đã đi qua mọi tiện ích và buộc mỗi người sử dụng một trong hai thư viện biểu thức chính quy riêng biệt - thông thường hoặc mở rộng. Tôi đã viết hướng dẫn này cho người dùng Sun và một số lệnh được thảo luận hiện đã lỗi thời. Trên Linux và các hệ thống UNIX khác, bạn có thể thấy rằng một số tính năng này không được triển khai. Số dặm của bạn có thể thay đổi.
Bản quyền © 1991 Bruce Barnett & General Electric Company
Bản quyền © 2001, 2008, 2013 Bruce Barnett Bảo lưu mọi quyền
Phiên bản gốc được viết vào năm 1994 và được xuất bản trên tờ Sun Observer

Biểu thức chính quy là gì?

Biểu thức chính quy là một tập hợp các ký tự chỉ định một mẫu. Thuật ngữ "thường xuyên" không liên quan gì đến chế độ ăn giàu chất xơ. Nó xuất phát từ một thuật ngữ được sử dụng để mô tả ngữ pháp và ngôn ngữ chính thức.
Biểu thức thông thường được sử dụng khi bạn muốn tìm kiếm chỉ định các dòng văn bản có chứa một mẫu cụ thể. Hầu hết các tiện ích UNIX hoạt động trên các tệp ASCII tại một thời điểm. Biểu thức chính quy tìm kiếm các mẫu trên một dòng và không tìm các mẫu bắt đầu trên một dòng và kết thúc trên một dòng khác.
Thật đơn giản để tìm kiếm một từ hoặc chuỗi ký tự cụ thể. Hầu như mọi biên tập viên trên mọi hệ thống máy tính đều có thể làm điều này. Biểu thức thông thường là mạnh mẽ và linh hoạt hơn. Bạn có thể tìm kiếm các từ có kích thước nhất định. Bạn có thể tìm kiếm một từ có bốn nguyên âm trở lên kết thúc bằng "s". Số, ký tự dấu chấm câu, bạn đặt tên cho nó, một biểu thức thông thường có thể tìm thấy nó. Điều gì xảy ra một khi chương trình bạn đang sử dụng tìm thấy nó là một vấn đề khác. Một số chỉ tìm kiếm các mẫu. Những người khác in ra dòng chứa mẫu. Người chỉnh sửa có thể thay thế chuỗi bằng một mẫu mới. Tất cả phụ thuộc vào tiện ích.
Các biểu thức thông thường gây nhầm lẫn cho mọi người vì chúng trông rất giống các tệp khớp với mẫu mà shell sử dụng. Họ thậm chí hành động theo cùng một cách - gần như. Các lậu vuông là tương tự, và dấu hoa thị hoạt động tương tự, nhưng không giống với dấu hoa thị trong một biểu thức thông thường. Cụ thể, shell Bourne, shell C, find và cpio sử dụng các mẫu khớp tên tệp và không phải là biểu thức chính quy.
Hãy nhớ rằng các ký tự meta shell được mở rộng trước khi shell chuyển các đối số cho chương trình. Để ngăn chặn sự mở rộng này, các ký tự đặc biệt trong biểu thức chính quy phải được trích dẫn khi được chuyển dưới dạng tùy chọn từ trình bao. Bạn đã biết làm thế nào để làm điều này bởi vì tôi đã đề cập đến chủ đề này trong hướng dẫn tháng trước.

Cấu trúc của một biểu thức chính quy

Có ba phần quan trọng đối với một biểu thức chính quy. Các neo được sử dụng để xác định vị trí của mẫu liên quan đến một dòng văn bản. Bộ ký tự khớp với một hoặc nhiều ký tự ở một vị trí. Công cụ sửa đổi xác định số lần bộ ký tự trước được lặp lại. Một ví dụ đơn giản thể hiện cả ba phần là biểu thức chính quy "^ # *". Mũi tên lên là một mỏ neo chỉ ra điểm bắt đầu của dòng. Ký tự "#" là một bộ ký tự đơn giản khớp với ký tự đơn "#". Dấu hoa thị là một sửa đổi. Trong một biểu thức chính quy, nó xác định rằng bộ ký tự trước đó có thể xuất hiện bất kỳ số lần nào, kể cả số không. Đây là một biểu thức chính quy vô dụng, như bạn sẽ thấy ngay.
Ngoài ra còn có hai loại biểu thức chính quy: biểu thức chính quy "Cơ bản" và biểu thức chính quy "mở rộng". Một vài tiện ích như awk và egrep sử dụng biểu thức mở rộng. Hầu hết sử dụng biểu thức chính quy "thông thường". Từ giờ trở đi, nếu tôi nói về một "biểu thức chính quy", thì nó mô tả một tính năng trong cả hai loại.
Dưới đây là bảng các lệnh Solaris (khoảng năm 1991) cho phép bạn chỉ định các biểu thức chính quy:
Tiện íchLoại biểu thức chính quy
viCăn bản
quyến rũCăn bản
grepCăn bản
csplitCăn bản
dbxCăn bản
dbxtoolCăn bản
hơnCăn bản
edCăn bản
exprCăn bản
lexCăn bản
pgCăn bản
nlCăn bản
người thứ baCăn bản
ôiMở rộng
chim ưngMở rộng
egrepMở rộng
EMACSBiểu thức thường xuyên EMACS
PERLBiểu thức thường xuyên PERL

Các ký tự neo: ^ và $

Hầu hết các cơ sở văn bản UNIX được định hướng dòng. Tìm kiếm các mẫu trải dài trên một số dòng là không dễ thực hiện. Bạn thấy, kết thúc của ký tự dòng không được bao gồm trong khối văn bản được tìm kiếm. Nó là một dải phân cách. Biểu thức chính quy kiểm tra văn bản giữa các dấu phân cách. Nếu bạn muốn tìm kiếm một mẫu ở đầu này hay đầu kia, bạn sử dụng các neoKý tự "^" là neo bắt đầu và ký tự "$" là neo cuối. Biểu thức chính quy "^ A" sẽ khớp với tất cả các dòng bắt đầu bằng chữ A. Biểu thức "A $" sẽ khớp với tất cả các dòng kết thúc bằng chữ A. Nếu các ký tự neo không được sử dụng ở cuối mẫu thích hợp, sau đó họ không còn đóng vai trò là mỏ neo. Đó là, "^" chỉ là một mỏ neo nếu nó là ký tự đầu tiên trong biểu thức chính quy. "$" Chỉ là một mỏ neo nếu nó là ký tự cuối cùng. Biểu thức "$ 1" không có neo. Không phải là "1 ^". Nếu bạn cần khớp "^" ở đầu dòng hoặc "$" ở cuối dòng, bạn phải thoát các ký tự đặc biệt bằng dấu gạch chéo ngược. Đây là một bản tóm tắt:
MẫuKết quả phù hợp
^ A"A" ở đầu một dòng
Một đô la"A" ở cuối dòng
Một ^"A ^" bất cứ nơi nào trên một dòng
$ A"$ A" bất cứ nơi nào trên một dòng
^^"^" ở đầu một dòng
$$"$" ở cuối dòng
Việc sử dụng "^" và "$" làm chỉ số bắt đầu hoặc kết thúc một dòng là một quy ước sử dụng các tiện ích khác. Trình soạn thảo vi sử dụng hai ký tự này làm các lệnh để đi đến đầu hoặc cuối của một dòng. Shell C sử dụng "! ^" Để chỉ định đối số đầu tiên của dòng trước đó và "! $" Là đối số cuối cùng trên dòng trước đó.
Đó là một trong những lựa chọn mà các tiện ích khác đi cùng để duy trì tính nhất quán. Chẳng hạn, "$" có thể chỉ đến dòng cuối cùng của tệp khi sử dụng ed và sed . Cat -e đánh dấu kết thúc của dòng bằng "$". Bạn có thể thấy nó trong các chương trình khác là tốt.

Kết hợp một nhân vật với một bộ ký tự

Bộ ký tự đơn giản nhất là một ký tự. Biểu thức chính quy "the" chứa ba bộ ký tự: "t," "h" và "e". Nó sẽ khớp bất kỳ dòng nào với chuỗi "the" bên trong nó. Điều này cũng sẽ phù hợp với từ "khác". Để ngăn chặn điều này, hãy đặt khoảng trắng trước và sau mẫu: "the". Bạn có thể kết hợp chuỗi với một neo. Mẫu "^ From:" sẽ khớp với các dòng của thư xác định người gửi. Sử dụng mẫu này với grep để in mọi địa chỉ trong hộp thư đến của bạn:
grep '^ Từ:' / usr / spool / mail / $ USER
Một số nhân vật có một ý nghĩa đặc biệt trong các biểu thức thông thường. Nếu bạn muốn tìm kiếm một nhân vật như vậy, hãy thoát khỏi nó bằng dấu gạch chéo ngược.

Phù hợp với bất kỳ nhân vật với.

Nhân vật "." là một trong những siêu nhân vật đặc biệt Chính nó sẽ phù hợp với bất kỳ nhân vật nào, ngoại trừ nhân vật cuối dòng. Mẫu sẽ khớp với một dòng với một ký tự là
^. $

Chỉ định Phạm vi Nhân vật bằng [...]

Nếu bạn muốn khớp các ký tự cụ thể, bạn có thể sử dụng dấu ngoặc vuông để xác định các ký tự chính xác mà bạn đang tìm kiếm. Mẫu sẽ khớp với bất kỳ dòng văn bản nào chứa chính xác một số là
^ [0123456789] $
Đây là dài dòng. Bạn có thể sử dụng dấu gạch nối giữa hai ký tự để chỉ định một phạm vi:
^ [0-9] $
Bạn có thể xen kẽ các ký tự rõ ràng với phạm vi ký tự. Mẫu này sẽ khớp với một ký tự duy nhất là một chữ cái, số hoặc dấu gạch dưới:
[A-Za-z0-9_]
Bộ ký tự có thể được kết hợp bằng cách đặt chúng cạnh nhau. Nếu bạn muốn tìm kiếm một từ
  1. Bắt đầu bằng chữ in hoa "T".
  2. Là từ đầu tiên trên một dòng
  3. Bức thư thứ hai là một chữ cái viết thường
  4. Chính xác là ba chữ cái và
  5. Chữ thứ ba là một nguyên âm
biểu thức chính quy sẽ là "^ T [az] [aeiou]".

Ngoại lệ trong một bộ ký tự

Bạn có thể dễ dàng tìm kiếm tất cả các ký tự ngoại trừ các ký tự trong ngoặc vuông bằng cách đặt "^" làm ký tự đầu tiên sau "[". Để khớp tất cả các ký tự ngoại trừ nguyên âm, hãy sử dụng "[^ aeiou]".
Giống như các mỏ neo ở những nơi không thể được coi là mỏ neo, các ký tự "]" và "-" không có ý nghĩa đặc biệt nếu chúng trực tiếp theo "[". Dưới đây là một số ví dụ:
Biểu hiện thông thườngKết quả phù hợp
[]Các nhân vật "[]"
[0]Ký tự "0"
[0-9]Bất kỳ số nào
[^ 0-9]Bất kỳ ký tự nào ngoài một số
[-0-9]Bất kỳ số hoặc một "-"
[0-9-]Bất kỳ số hoặc một "-"
[^ -0-9]Bất kỳ ký tự nào ngoại trừ một số hoặc dấu "-"
[] 0-9]Bất kỳ số hoặc một "]"
[0-9]]Bất kỳ số nào theo sau là "]"
[0-9-z]Bất kỳ số nào,
hoặc bất kỳ ký tự nào giữa "9" và "z".
[0-9 \ -a \]]Bất kỳ số nào, hoặc
"-", "a" hoặc "]"

Lặp lại bộ ký tự với *

Phần thứ ba của biểu thức chính quy là phần bổ nghĩa. Nó được sử dụng để xác định số lần bạn mong đợi để xem bộ ký tự trước đó. Ký tự đặc biệt "*" khớp với 0 hoặc nhiều bản sao. Nghĩa là, biểu thức chính quy "0 *" khớp với 0 hoặc nhiều số 0 , trong khi biểu thức "[0-9] *" khớp với số 0 hoặc nhiều số.
Điều này giải thích tại sao mẫu "^ # *" ​​là vô dụng, vì nó khớp với bất kỳ số "#" nào ở đầu dòng, bao gồm số không . Do đó, điều này sẽ khớp với mọi dòng, bởi vì mọi dòng bắt đầu bằng 0 hoặc nhiều hơn "# 's".
Thoạt nhìn, có vẻ như bắt đầu đếm từ 0 là ngu ngốc. Không phải vậy. Tìm kiếm một số lượng nhân vật chưa biết là rất quan trọng. Giả sử bạn muốn tìm một số ở đầu một dòng và có thể có hoặc không có khoảng trắng trước số đó. Chỉ cần sử dụng "^ *" để khớp 0 hoặc nhiều khoảng trắng ở đầu dòng. Nếu bạn cần khớp một hoặc nhiều, chỉ cần lặp lại bộ ký tự. Nghĩa là, "[0-9] *" khớp với 0 hoặc nhiều số và "[0-9] [0-9] *" khớp với một hoặc nhiều số.

Khớp một số bộ cụ thể với \ {và \}

Bạn có thể tiếp tục kỹ thuật trên nếu bạn muốn chỉ định số lượng bộ ký tự tối thiểu. Bạn không thể chỉ định số lượng bộ tối đa bằng công cụ sửa đổi "*". Có một mẫu đặc biệt bạn có thể sử dụng để chỉ định số lần lặp tối thiểu và tối đa. Điều này được thực hiện bằng cách đặt hai số đó vào giữa "\ {" và "\}". Các dấu gạch chéo ngược xứng đáng được thảo luận đặc biệt. Thông thường một dấu gạch chéo ngược tắt ý nghĩa đặc biệt cho một nhân vật. Một khoảng thời gian được khớp bởi "\." và dấu hoa thị được khớp bởi "\ *".
Nếu dấu gạch chéo ngược được đặt trước "<," ">," "{," "}," "(," ")," hoặc trước một chữ số, dấu gạch chéo ngược sẽ có nghĩa đặc biệt. Điều này đã được thực hiện bởi vì các hàm đặc biệt này đã được thêm vào cuối đời trong các biểu thức chính quy. Thay đổi nghĩa của "{" sẽ phá vỡ các biểu thức cũ. Đây là một tội ác khủng khiếp bị trừng phạt bởi một năm lao động khổ sai viết các chương trình COBOL. Thay vào đó, thêm một dấu gạch chéo thêm chức năng mà không phá vỡ các chương trình cũ. Thay vì phàn nàn về sự không đối xứng, hãy xem nó như một sự tiến hóa.
Đã thuyết phục bạn rằng "\ {" không phải là một âm mưu làm bạn bối rối, một ví dụ là theo thứ tự. Biểu thức chính quy để khớp với 4, 5, 6, 7 hoặc 8 chữ in thường là
[az] \ {4,8 \}
Bất kỳ số nào trong khoảng từ 0 đến 255 có thể được sử dụng. Số thứ hai có thể được bỏ qua, loại bỏ giới hạn trên. Nếu dấu phẩy và số thứ hai bị bỏ qua, mẫu phải được nhân đôi số lần chính xác được chỉ định bởi số thứ nhất.
Bạn phải nhớ rằng các công cụ sửa đổi như "*" và "\ {1,5 \}" chỉ đóng vai trò là công cụ sửa đổi nếu chúng tuân theo một bộ ký tự. Nếu chúng ở đầu một mẫu, chúng sẽ không phải là một sửa đổi. Dưới đây là danh sách các ví dụ và các trường hợp ngoại lệ:
Biểu hiện thông thườngKết quả phù hợp
_
*Bất kỳ dòng nào có dấu hoa thị
\ *Bất kỳ dòng nào có dấu hoa thị
\Bất kỳ dòng nào có dấu gạch chéo ngược
^ *Bất kỳ dòng nào bắt đầu bằng dấu hoa thị
^ A *Bất kỳ dòng nào
^ A \ *Bất kỳ dòng nào bắt đầu bằng "A *"
^ Aa *Bất kỳ dòng nào nếu nó bắt đầu bằng một "A"
^ Aa * BBất kỳ dòng nào có một hoặc nhiều "A" được theo sau bởi "B"
^ A \ {4,8 \} BBất kỳ dòng nào bắt đầu bằng 4, 5, 6, 7 hoặc 8 "A"
theo sau là "B"
^ A \ {4, \} BBất kỳ dòng nào bắt đầu bằng 4 chữ "A" trở lên
theo sau là "B"
^ A \ {4 \} BBất kỳ dòng nào bắt đầu bằng "AAAAB"
\ {4,8 \}Bất kỳ dòng nào có "{4,8}"
Một {4,8}Bất kỳ dòng nào có "A {4,8}"

Kết hợp các từ với \ <và \>

Tìm kiếm một từ không đơn giản như lúc đầu xuất hiện. Chuỗi "the" sẽ khớp với từ "khác". Bạn có thể đặt khoảng trắng trước và sau các chữ cái và sử dụng biểu thức chính quy này: "the". Tuy nhiên, điều này không khớp với các từ ở đầu hoặc cuối dòng. Và nó không khớp với trường hợp có dấu chấm câu sau từ đó.
Có một giải pháp dễ dàng. Các ký tự "\ <" và "\>" tương tự như các neo "^" và "$", vì chúng không chiếm vị trí của một ký tự. Họ "neo" biểu thức giữa để chỉ khớp nếu nó nằm trên một ranh giới từ. Mẫu để tìm kiếm từ "the" sẽ là "\ <[tT] he \>". Ký tự trước "t" phải là ký tự dòng mới hoặc bất cứ thứ gì ngoại trừ một chữ cái, số hoặc gạch dưới. Ký tự sau "e" cũng phải là một ký tự không phải là số, chữ cái hoặc dấu gạch dưới hoặc nó có thể là kết thúc của ký tự dòng.

Backreferences - Ghi nhớ các mẫu với \ (, \) và \ 1

Một mô hình khác đòi hỏi một cơ chế đặc biệt là tìm kiếm các từ lặp đi lặp lại. Biểu thức "[az] [az]" sẽ khớp với bất kỳ hai chữ cái viết thường. Nếu bạn muốn tìm kiếm các dòng có hai chữ cái giống nhau liền kề, mẫu trên sẽ không có ích. Bạn cần một cách để nhớ những gì bạn tìm thấy, và xem nếu cùng một mô hình xảy ra một lần nữa. Bạn có thể đánh dấu một phần của mẫu bằng cách sử dụng "\ (" và "\)". Bạn có thể nhớ lại mẫu đã nhớ với "\" theo sau là một chữ số. Do đó, để tìm kiếm hai chữ cái giống nhau, hãy sử dụng "\ ([az] \) \ 1". Bạn có thể có 9 mẫu nhớ khác nhau. Mỗi lần xuất hiện của "\ (" bắt đầu một mẫu mới. Biểu thức chính quy phù hợp với bảng chữ cái 5 chữ cái, (ví dụ: "radar"), sẽ là
\ ([az] \) \ ([az] \) [az] \ 2 \ 1

Vấn đề tiềm ẩn

Điều đó hoàn thành một cuộc thảo luận về biểu thức chính quy cơ bản. Trước khi tôi thảo luận về các phần mở rộng mà biểu thức mở rộng cung cấp, tôi muốn đề cập đến hai lĩnh vực có vấn đề tiềm ẩn.
Các ký tự "\ <" và "\>" đã được giới thiệu trong trình chỉnh sửa vi . Các chương trình khác không có khả năng này vào thời điểm đó. Ngoài ra , công cụ sửa đổi "\ { min , max \}" là các tiện ích mới và trước đó không có khả năng này. Điều này gây khó khăn cho người dùng mới làm quen với các biểu thức thông thường, vì dường như mỗi tiện ích có một quy ước khác nhau. Sun đã trang bị thêm thư viện biểu thức chính quy mới nhất cho tất cả các chương trình của họ, vì vậy tất cả chúng đều có cùng khả năng. Nếu bạn cố gắng sử dụng các tính năng mới hơn này trên các máy của nhà cung cấp khác, bạn có thể thấy chúng không hoạt động theo cùng một cách.
Điểm nhầm lẫn tiềm năng khác là phạm vi của mô hình khớp. Biểu thức chính quy phù hợp với mẫu dài nhất có thể. Đó là, biểu thức chính quy
A. * B
phù hợp với "AAB" cũng như "AAAABBBBABCCCCBBBAAAB". Điều này không gây ra nhiều vấn đề khi sử dụng grep , bởi vì việc giám sát trong biểu thức chính quy sẽ chỉ khớp với nhiều dòng hơn mong muốn. Nếu bạn sử dụng sed và các mẫu của bạn sẽ được mang đi, bạn có thể sẽ xóa nhiều hơn bạn muốn.

Biểu thức chính quy mở rộng

Hai chương trình sử dụng biểu thức chính quy mở rộng: egrep và awk . Với các tiện ích mở rộng này, các ký tự đặc biệt đi trước dấu gạch chéo ngược không còn có ý nghĩa đặc biệt: "\ {", "\}", "\ <", "\>", "\ (", "\)" cũng như "\ chữ số ". Có một lý do rất tốt cho việc này, mà tôi sẽ trì hoãn giải thích để xây dựng sự hồi hộp.
Nhân vật "?" khớp với 0 hoặc 1 phiên bản của bộ ký tự trước đó và ký tự "+" khớp với một hoặc nhiều bản sao của bộ ký tự. Bạn không thể sử dụng \ {và \} trong các biểu thức chính quy mở rộng, nhưng nếu có thể, bạn có thể xem xét "?" giống như "\ {0,1 \}" và "+" giống với "\ {1, \}".
Đến bây giờ, bạn đang tự hỏi tại sao các biểu thức chính quy mở rộng thậm chí còn đáng sử dụng. Ngoại trừ hai chữ viết tắt, không có ưu điểm, và rất nhiều nhược điểm. Do đó, các ví dụ sẽ hữu ích.
Ba ký tự quan trọng trong các biểu thức chính quy mở rộng là "(", "|" và ")". Cùng nhau, họ cho phép bạn kết hợp một sự lựa chọn của các mẫu. Ví dụ: bạn có thể egrep để in tất cả các dòng From: và Tiêu đề: từ thư đến của bạn:
egrep '^ (Từ | Chủ đề):' / usr / spool / mail / $ USER
Tất cả các dòng bắt đầu bằng "Từ:" hoặc "Chủ đề:" sẽ được in. Không có cách nào dễ dàng để làm điều này với các biểu thức thông thường cơ bản. Bạn có thể thử "^ [FS] [ru] [ob] [mj] e * c * t *:" và hy vọng bạn không có bất kỳ dòng nào bắt đầu bằng "Sromeet:". Biểu thức mở rộng không có ký tự "\ <" và "\>". Bạn có thể bù bằng cách sử dụng cơ chế xen kẽ. Kết hợp từ "the" ở đầu, giữa, cuối câu hoặc cuối dòng có thể được thực hiện với biểu thức chính quy mở rộng:
(^ |) các ([^ az] | $)
Có hai lựa chọn trước từ, khoảng trắng hoặc bắt đầu của một dòng. Sau từ này, phải có một cái gì đó bên cạnh một chữ cái viết thường hoặc nếu không thì cuối dòng. Một phần thưởng bổ sung với các biểu thức chính quy mở rộng là khả năng sử dụng "*," "+," và "?" công cụ sửa đổi sau khi nhóm "(...)". Sau đây sẽ phù hợp với "một vấn đề đơn giản", "một vấn đề dễ dàng", cũng như "một vấn đề".
dữ liệu egrep "a [n]? (đơn giản | dễ dàng)?"
Tôi hứa sẽ giải thích lý do tại sao các ký tự dấu gạch chéo ngược không hoạt động trong các biểu thức chính quy mở rộng. Chà, có lẽ "\ {... \}" và "\ <... \>" có thể được thêm vào các biểu thức mở rộng. Đây là những bổ sung mới nhất cho gia đình biểu hiện thường xuyên. Chúng có thể được thêm vào, nhưng điều này có thể khiến mọi người nhầm lẫn nếu những ký tự đó được thêm vào và "\ (... \)" thì không. Và không có cách nào để thêm chức năng đó vào các biểu thức mở rộng mà không thay đổi cách sử dụng hiện tại. Bạn có thấy tại sao không? Nó khá đơn giản. Nếu "(" có ý nghĩa đặc biệt, thì "\ (" phải là ký tự bình thường. Điều này trái ngược với các biểu thức chính quy cơ bản, trong đó "(" là bình thường và "\ (" là đặc biệt. Cách sử dụng dấu ngoặc đơn là không thể, và bất kỳ thay đổi nào cũng có thể phá vỡ các chương trình cũ.
Nếu biểu thức mở rộng được sử dụng "(.. | ...)" làm ký tự thông thường và "\ (... \ | ... \)" để chỉ định các mẫu thay thế, thì có thể có một bộ biểu thức chính quy có đầy đủ chức năng. Đây chính xác là những gì GNU emacs làm.
Phần còn lại của điều này là ghi chú ngẫu nhiên.
Biểu hiện thông thườngLớp họcKiểuÝ nghĩa
_
.tất cả cácBộ ký tựMột ký tự đơn (trừ dòng mới)
^tất cả cácMỏ neoBắt đầu của dòng
$tất cả cácMỏ neoKết thúc dòng
[...]tất cả cácBộ ký tựPhạm vi của các nhân vật
*tất cả cácbổ nghĩakhông hoặc nhiều bản sao
\ <Căn bảnMỏ neoBắt đầu từ
\>Căn bảnMỏ neoHết từ
\ (.. \)Căn bảnPhản ứng ngượcNhớ mẫu
\ 1 .. \ 9Căn bảnTài liệu tham khảoNhớ lại mẫu
_ +Mở rộngbổ nghĩaMột hoặc nhiều bản sao
?Mở rộngbổ nghĩaKhông hoặc một bản sao
\ {M, N \}Mở rộngbổ nghĩaM đến N Bản sao
(... | ...)Mở rộngMỏ neoHiển thị sự thay đổi
_
\ (... \ | ... \)EMACSMỏ neoHiển thị sự thay đổi
\ wEMACSBộ ký tựNối một chữ cái trong một từ
\EMACSBộ ký tựĐối diện với \ w

Bộ ký tự POSIX


POSIX đã thêm các cách mới hơn và di động hơn để tìm kiếm các bộ ký tự. Thay vì sử dụng [a-zA-Z], bạn có thể thay thế 'a-zA-Z' bằng [: alpha:] hoặc để hoàn thiện hơn. thay thế [a-zA-Z] bằng [[: alpha:]]. Ưu điểm là điều này sẽ phù hợp với bộ ký tự quốc tế. Bạn có thể trộn kiểu cũ và kiểu POSIX mới, chẳng hạn như 
grep '[1-9 [: alpha:]]' 
Đây là danh sách điền
Nhóm nhân vậtÝ nghĩa
[: alnum:]Chữ và số
[: cntrl:]Nhân vật điều khiển
[:thấp hơn:]Chữ thường
[:không gian:]Khoảng trắng
[: alpha:]Bảng chữ cái
[: chữ số:]Chữ số
[:in:]Nhân vật có thể in
[:phía trên:]Chữ hoa
[:chỗ trống:]khoảng trắng, tab, v.v.
[: đồ thị:]Ký tự có thể in và nhìn thấy
[: dấu câu:]Chấm câu
[: xdigit:]Chữ số mở rộng
Lưu ý rằng một số người sử dụng [[: alpha:]] làm ký hiệu, nhưng '[...]' bên ngoài chỉ định một bộ ký tự.

Phần mở rộng Perl

Biểu hiện thông thường
Lớp họcKiểuÝ nghĩa
\ tBộ ký tựchuyển hướng
\ nBộ ký tựdòng mới
\ rBộ ký tựtrở về
\ fBộ ký tựhình thức
\ aBộ ký tựbáo thức
\ eBộ ký tựbỏ trốn
\ 033Bộ ký tựbát phân
\ x1BBộ ký tựlục giác
\ c [Bộ ký tựđiều khiển
\ lBộ ký tựchữ thường
bạnBộ ký tựchữ hoa
\ LBộ ký tựchữ thường
\Bộ ký tựchữ hoa
\ EBộ ký tựkết thúc
\ QBộ ký tựTrích dẫn
\ wBộ ký tựNối một ký tự "từ"
\Bộ ký tựKhớp một ký tự không từ
\SBộ ký tựKhớp một ký tự khoảng trắng
\SBộ ký tựKhớp một ký tự không phải khoảng trắng
\ dBộ ký tựKhớp một ký tự chữ số
\ DBộ ký tựKhớp một ký tự không có chữ số
\ bMỏ neoNối một ranh giới từ
\ BMỏ neoKhớp với một không (ranh giới từ)
\ AMỏ neoChỉ khớp ở đầu chuỗi
\ ZMỏ neoChỉ khớp với EOS hoặc trước dòng mới
\ zMỏ neoChỉ khớp ở cuối chuỗi
\ GMỏ neoChỉ khớp khi m // g trước đó rời đi
Ví dụ về PERL Biểu thức chính quy mở rộng, nhiều dòng

m {\ (
      (# Nhóm bắt đầu
       [^ ()] + # bất cứ thứ gì trừ '(' hoặc ')'
      | # hoặc là
        \ ([^ ()] * \)
      ) + # nhóm cuối
   \)
} x

Quét dữ liệu web


http://webdata-scraping.com/web-scraping-application-custom-scraper-development-project-demo/

Công cụ quét Web tùy chỉnh

Công cụ quét Web tùy chỉnh
http://webdata-scraping.com/web-scraping-application-custom-scraper-development-project-demo/

Ứng dụng cào web - Bản demo dự án phát triển cạp tùy chỉnh


Chúng tôi cung cấp dịch vụ quét web khác nhau như phát triển Ứng dụng nạo Web dựa trên yêu cầu tùy chỉnh, Chúng tôi cũng thực hiện quét web và cung cấp cho bạn dữ liệu nạo cuối cùng, Chúng tôi có thể quét sản phẩm từ trang web của nhà cung cấp của bạn hoặc eBay và sản phẩm amazon để quyết định giá cạnh tranh cho sản phẩm của bạn, chúng tôi thực hiện quét email để quảng bá chiến dịch của bạn và nhiều công việc cạo dữ liệu khác Có rất nhiều phần mềm quét web trên thị trường nhưng một số thời điểm phát triển tùy chỉnh cạp có nhiều lợi thế.
Dưới đây là một số dự án cạo gần đây mà chúng tôi đã làm cho khách hàng của chúng tôi từ các quốc gia khác nhau như Anh, Pháp, Mỹ, Đức, Canada, Úc và Ấn Độ. Bạn có thể gửi các nhu cầu nạo của bạn cho chúng tôi và chúng tôi sẽ liên hệ lại với bạn với cùng dữ liệu và nhiều đề xuất khác để hoàn thành công việc của bạn. Liên hệ với chúng tôi  để có được mẫu miễn phí và báo giá.

Nội thất sẵn có trong kho ứng dụng từ trang web của nhà cung cấp và xuất nó ra excel

Đây là một Công cụ quét Web tùy chỉnh để loại bỏ cổ phiếu đồ nội thất từ ​​trang web của nhà cung cấp được phát triển cho khách hàng ở Vương quốc Anh và nó loại bỏ Tên sản phẩm và tình trạng sẵn có trong kho .
ứng dụng cạo

Ứng dụng cào doanh thu Fiverr để cào tất cả doanh thu và xuất nó ra excel

Đây là ứng dụng cào được phát triển cho người dùng fiverr.com. Người dùng có thể đăng nhập vào fiverr từ cạp và sau đó có thể thu hoạch tất cả các giao dịch và sau đó xuất nó sang excel.
cạo dữ liệu fiverr

Nếu bạn cần ứng dụng cạo riêng của mình được xây dựng mà bạn có thể sử dụng thường xuyên để tự động hóa công việc thủ công của bạn thì hãy liên hệ với tôi.