Biểu thức chính quy không gì khác hơn là một chuỗi hoặc mẫu của chính các ký tự. Họ cung cấp nền tảng cho chức năng phù hợp với mẫu.
Sử dụng biểu thức chính quy Bạn có thể tìm kiếm một chuỗi cụ thể bên trong một chuỗi khác, bạn có thể thay thế một chuỗi bằng một chuỗi khác và bạn có thể chia một chuỗi thành nhiều khối.
PHP cung cấp các chức năng cụ thể cho hai bộ hàm biểu thức chính quy, mỗi hàm tương ứng với một loại biểu thức chính quy nhất định. Bạn có thể sử dụng bất kỳ trong số họ dựa trên sự thoải mái của bạn.
- Biểu thức thường xuyên POSIX
- Phong cách perl biểu thức chính quy
Biểu thức thường xuyên POSIX
Phong cách perl biểu thức chính quy
Cấu trúc của một biểu thức chính quy POSIX không giống với biểu thức số học điển hình: các yếu tố khác nhau [toán tử] được kết hợp để tạo thành các biểu thức phức tạp hơn.
Biểu thức chính quy đơn giản nhất là một biểu thức phù hợp với một ký tự duy nhất, chẳng hạn như G, các chuỗi bên trong như G, Haggle hoặc Túi.
Hãy đưa ra lời giải thích cho một vài khái niệm đang được sử dụng trong biểu thức chính quy POSIX. Sau đó, chúng tôi sẽ giới thiệu cho bạn các chức năng liên quan đến biểu thức thông thường.
Dấu ngoặc
1 | [0-9] Biểu thức & mô tả |
2 | [a-z] Nó phù hợp với bất kỳ chữ số thập phân nào từ 0 đến 9. |
3 | [A-Z] Nó phù hợp với bất kỳ ký tự nào từ trường hợp thấp hơn A đến thường Z. |
4 | [a-Z] Nó phù hợp với bất kỳ ký tự nào từ chữ hoa A đến qua chữ hoa Z. |
Nó phù hợp với bất kỳ ký tự nào từ chữ thường A đến chữ hoa Z.
Các phạm vi hiển thị ở trên là chung; Bạn cũng có thể sử dụng phạm vi [0-3] để phù hợp với bất kỳ chữ số thập phân nào từ 0 đến 3 hoặc phạm vi [B-V] để phù hợp với bất kỳ ký tự chữ thường nào từ B đến V.
Định lượng
1 | p+ Biểu thức & mô tả |
2 | p* Nó phù hợp với bất kỳ chữ số thập phân nào từ 0 đến 9. |
3 | p? Nó phù hợp với bất kỳ ký tự nào từ trường hợp thấp hơn A đến thường Z. |
4 | p{N}N} Nó phù hợp với bất kỳ ký tự nào từ chữ hoa A đến qua chữ hoa Z.N p's |
5 | p{2,3} Nó phù hợp với bất kỳ ký tự nào từ chữ thường A đến chữ hoa Z. |
6 | Các phạm vi hiển thị ở trên là chung; Bạn cũng có thể sử dụng phạm vi [0-3] để phù hợp với bất kỳ chữ số thập phân nào từ 0 đến 3 hoặc phạm vi [B-V] để phù hợp với bất kỳ ký tự chữ thường nào từ B đến V. Định lượng |
7 | p$ Tần số hoặc vị trí của các chuỗi ký tự được đặt dấu ngoặc và các ký tự đơn có thể được ký hiệu bằng một ký tự đặc biệt. Mỗi nhân vật đặc biệt có một ý nghĩa cụ thể. +, *,?, {Int. Phạm vi} và $ cờ đều tuân theo một chuỗi ký tự. |
8 | ^pp Nó phù hợp với bất kỳ chuỗi chứa ít nhất một p. |
Nó phù hợp với bất kỳ chuỗi nào chứa 0 hoặc nhiều P.
Nó phù hợp với bất kỳ chuỗi nào chứa 0 hoặc một p.
1 | [^a-zA-Z] Biểu thức & mô tả |
2 | p.p Nó phù hợp với bất kỳ chữ số thập phân nào từ 0 đến 9. |
3 | ^.{2}$ Nó phù hợp với bất kỳ ký tự nào từ trường hợp thấp hơn A đến thường Z. |
4 | Nó phù hợp với bất kỳ ký tự nào từ chữ hoa A đến qua chữ hoa Z. Nó phù hợp với bất kỳ ký tự nào từ chữ thường A đến chữ hoa Z. |
5 | p[hp]* Các phạm vi hiển thị ở trên là chung; Bạn cũng có thể sử dụng phạm vi [0-3] để phù hợp với bất kỳ chữ số thập phân nào từ 0 đến 3 hoặc phạm vi [B-V] để phù hợp với bất kỳ ký tự chữ thường nào từ B đến V. |
Định lượng
Tần số hoặc vị trí của các chuỗi ký tự được đặt dấu ngoặc và các ký tự đơn có thể được ký hiệu bằng một ký tự đặc biệt. Mỗi nhân vật đặc biệt có một ý nghĩa cụ thể. +, *,?, {Int. Phạm vi} và $ cờ đều tuân theo một chuỗi ký tự.
1 | [[:alpha:]] Biểu thức & mô tả |
2 | [[:digit:]] Nó phù hợp với bất kỳ chữ số thập phân nào từ 0 đến 9. |
3 | [[:alnum:]] Nó phù hợp với bất kỳ ký tự nào từ trường hợp thấp hơn A đến thường Z. |
4 | [[:space:]] Nó phù hợp với bất kỳ ký tự nào từ chữ hoa A đến qua chữ hoa Z. |
Nó phù hợp với bất kỳ ký tự nào từ chữ thường A đến chữ hoa Z.
Các phạm vi hiển thị ở trên là chung; Bạn cũng có thể sử dụng phạm vi [0-3] để phù hợp với bất kỳ chữ số thập phân nào từ 0 đến 3 hoặc phạm vi [B-V] để phù hợp với bất kỳ ký tự chữ thường nào từ B đến V.
1 | ereg[] Tần số hoặc vị trí của các chuỗi ký tự được đặt dấu ngoặc và các ký tự đơn có thể được ký hiệu bằng một ký tự đặc biệt. Mỗi nhân vật đặc biệt có một ý nghĩa cụ thể. +, *,?, {Int. Phạm vi} và $ cờ đều tuân theo một chuỗi ký tự. |
2 | ereg_replace[] Nó phù hợp với bất kỳ chuỗi chứa ít nhất một p. |
3 | eregi[] Nó phù hợp với bất kỳ chuỗi nào chứa 0 hoặc nhiều P. |
4 | eregi_replace[] Nó phù hợp với bất kỳ chuỗi nào chứa 0 hoặc một p. |
5 | split[] Nó phù hợp với bất kỳ chuỗi nào chứa chuỗi của n p's |
6 | spliti[] Nó phù hợp với bất kỳ chuỗi nào chứa chuỗi hai hoặc ba p. |
7 | sql_regcase[] Hàm sql_regcase [] có thể được coi là hàm tiện ích, chuyển đổi từng ký tự trong chuỗi tham số đầu vào thành một biểu thức được đặt ở hai ký tự. |
Phong cách perl biểu thức chính quy
Các biểu thức chính quy kiểu Perl tương tự như các đối tác POSIX của họ. Cú pháp POSIX có thể được sử dụng gần như có thể thay thế cho nhau với các hàm biểu thức chính quy kiểu Perl. Trên thực tế, bạn có thể sử dụng bất kỳ bộ định lượng nào được giới thiệu trong phần POSIX trước đó.
Hãy đưa ra lời giải thích cho một vài khái niệm đang được sử dụng trong các biểu thức thường xuyên của Perl. Sau đó, chúng tôi sẽ giới thiệu cho bạn các chức năng liên quan đến biểu thức thông thường.
Ký tự meta
Một nhân vật meta chỉ đơn giản là một ký tự bảng chữ cái đi trước bởi một dấu gạch chéo ngược có tác dụng mang lại cho sự kết hợp một ý nghĩa đặc biệt.
Chẳng hạn, bạn có thể tìm kiếm số tiền lớn bằng cách sử dụng ký tự meta '\ d': /[[\ d]+] 000 /, ở đây \ D sẽ tìm kiếm bất kỳ chuỗi ký tự số nào./[[\d]+]000/, Here \d will search for any string of numerical character.
Sau đây là danh sách các ký tự meta có thể được sử dụng trong các biểu thức chính quy kiểu Perl.
Character Description . a single character \s a whitespace character [space, tab, newline] \S non-whitespace character \d a digit [0-9] \D a non-digit \w a word character [a-z, A-Z, 0-9, _] \W a non-word character [aeiou] matches a single character in the given set [^aeiou] matches a single character outside the given set [foo|bar|baz] matches any of the alternatives specified
Sửa đổi
Một số sửa đổi có sẵn có thể giúp công việc của bạn với RegEXP dễ dàng hơn nhiều, như độ nhạy của trường hợp, tìm kiếm trong nhiều dòng, v.v.
Modifier Description i Makes the match case insensitive m Specifies that if the string has newline or carriage return characters, the ^ and $ operators will now match against a newline boundary, instead of a string boundary o Evaluates the expression only once s Allows use of . to match a newline character x Allows you to use white space in the expression for clarity g Globally finds all matches cg Allows a search to continue even after a global match fails
Các chức năng tương thích regexp perl của PHP
PHP cung cấp các chức năng sau để tìm kiếm các chuỗi bằng cách sử dụng các biểu thức thông thường tương thích Perl-
1 | preg_match[] Chức năng preg_match [] tìm kiếm chuỗi cho mẫu, trả về đúng nếu mẫu tồn tại và sai. |
2 | preg_match_all[] Hàm preg_match_all [] phù hợp với tất cả các lần xuất hiện của mẫu trong chuỗi. |
3 | preg_replace[] Hàm preg_replace [] hoạt động giống như ereg_replace [], ngoại trừ các biểu thức thông thường có thể được sử dụng trong các tham số đầu vào mẫu và thay thế. |
4 | preg_split[] Hàm preg_split [] hoạt động chính xác như split [], ngoại trừ các biểu thức chính quy được chấp nhận làm tham số đầu vào cho mẫu. |
5 | preg_grep[] Hàm preg_grep [] tìm kiếm tất cả các yếu tố của input_array, trả về tất cả các phần tử phù hợp với mẫu regexp. |
6 | preg_ quote [] Trích dẫn các ký tự biểu thức chính quy |