Thủ Thuật về Hướng dẫn php regex lookahead 2022
Bạn đang tìm kiếm từ khóa Hướng dẫn php regex lookahead được Update vào lúc : 2022-09-24 18:00:27 . Với phương châm chia sẻ Bí quyết Hướng dẫn trong nội dung bài viết một cách Chi Tiết 2022. Nếu sau khi đọc Post vẫn ko hiểu thì hoàn toàn có thể lại Comment ở cuối bài để Mình lý giải và hướng dẫn lại nha.
Regular expression là một nhóm của những ký tự được sử dụng để tìm ra một pattern rõ ràng nào đó trong một hay một vài câu hay đoạn text. Bạn hoàn toàn có thể gọi chúng là biểu thức đại diện thay mặt thay mặt cũng khá được. Đứng về khía cạnh là một developer thì regular expression hoàn toàn có thể sẽ là một công cụ rất là mạnh trong việc lập trình, bạn chắc như đinh đã từng phải dùng chúng trong chương trình của bạn ví như hiệu suất cao search hay thay thể biểu thức, vân vân và mây mây… Các ứng dụng rất khác nhau và ngôn từ lập
trình sẽ có được những những implement cho biểu thức regex một cách rất khác nhau, nhưng về mặt ý tưởng, về mặt concept thì chúng giống nhau. Trong nội dung bài viết này mình sẽ dùng ngôn từ PHP để lý giải và lấy ví dụ cho những bạn hiểu thêm về Regex nhé.
Nội dung chính
- 1 Biểu thức chính quy là gì ?
- 2.Ví dụ cơ bản
- 3.1 Match với một ký tự bất kỳ
- 3.2 Character set
- 3.2.1 Negated character set
- 3.3 Repetitions
- 3.4 Braces
- 3.5 Capturing value
- 3.6 Alternation
- 3.7 Special Character
- 3.8 Anchors ^, $
- 3.8.1 Anchor ^
- 3.8.2 Anchor $
- 4. Shorthand and Character Sets
- 5. Lookaround
- 5.1
Positive Lookahead (?=) - 5.2 Negative
Lookahead (?!) - 5.3 Positive Lookbehind
- 5.4 Negative Lookbehind
- 6.1 Case intensive (i)
- 6.2 Global search (g)
- 6.3 Multiline (m)
- 7. Kết luận
- 8.
Tham khảo
Nội dung chính
- 1 Biểu thức chính quy là gì ?
- 2.Ví dụ cơ bản
- 3.Meta Characters
- 3.1 Match với một ký tự bất kỳ
- 3.2 Character set
- 3.2.1 Negated character set
- 3.3 Repetitions
- 3.4 Braces
- 3.5 Capturing value
- 3.6 Alternation
- 3.7 Special Character
- 3.8 Anchors ^, $
- 3.8.1 Anchor ^
- 3.8.2 Anchor $
- 4. Shorthand and Character Sets
- 5. Lookaround
- 5.1 Positive Lookahead (?=)
- 5.2 Negative Lookahead (?!)
- 5.3 Positive Lookbehind
- 5.4 Negative Lookbehind
- 6.1 Case intensive (i)
- 6.2 Global search (g)
- 6.3 Multiline (m)
- 7. Kết luận
- 8. Tham khảo
1 Biểu thức chính quy là gì ?
Biểu thức chính quy là một chuỗi miễu tả một bộ những chuỗi khác, theo những quy tắc cú pháp nhất định từ trái sang phải. Regular Expression là cách nói khá đầy đủ của biểu thức chính quy, nhưng bạn sẽ thấy những bài
viết khác bạn tìm kiếm được trên google viết tắt là regex hay regexp. Biểu thức chính quy được sử dụng cho việc thay thế một đoạn text trong một chuỗi dài, validate form, lấy một chuỗi nhỏ trong một chuỗi lớn dưới vào pattern mà toàn bộ chúng ta định nghĩa ra, và còn thật nhiều trường hợp khác những bạn hoàn toàn có thể sử dụng nó.
Hãy tưởng tượng rằng bạn đang viết một chương trình và bạn muốn set những rules cho iệc khi user lựa chọn username. Bạn muốn được cho phép user chứa những vần âm, những số lượng, gạc dưới
(), hay là dấu gạch ngang (-). Bạn cũng muốn số lượng giới hạn số lượng những ký tự trong username. Bạn sử dụng biểu thức chính quy dưới đây để validate theo yêu cầu vừa nêu lên nhé
^[a-z-9_-]3,15$
- ^: ký tự khởi đầu một chuỗi
- [a-z-9_-]: chỗ này thể hiện là được cho phép lấy vần âm, những số lượng, dầu gạch dưới, dấu gạch ngang.
- 3,15`: số lượng giới hạn chuỗi từ 3 đến 15 ký tự
- $: ký tự kết thúc chuỗi.
Biểu thức chính quy ở trên hoàn toàn có thể đồng ý những chuỗi sau: hoang_nm,
ho-ang_nm, và hoangnm_97. Nó không match với chuỗi Hoangnmmmmmmmmmmmmmmmmmmmmm chính bới nó đang chưa ký tự viết hoa và nó không nằm trong mức chừng từ 3 đến 15 ký tự.
2.Ví dụ cơ bản
Biểu thức chính quy là một mẫu những ký tự mà bạn hoàn toàn có thể sử dụng để thực thi tìm kiếm trong một đoạn văn bản. Ví dụ, biểu thức chính quy Nguyen tức là nó sẽ tìm trong một đoạn text khởi đầu bằng N, tiếp đến là g và tiếp đến cho tới ở đầu cuối là n
Hoang => Nguyen Minh
Hoang
Biểu thức chính quy 123 khớp với chuỗi 123. Biểu thức chính quy được so khớp với chuỗi nguồn vào bằng phương pháp so sánh từng ký tự trong biểu thức chính quy với mỗi ký tự trong chuỗi nguồn vào, lần lượt từng ký tự một. Biểu thức chính quy thường phân biệt những chữ thường, nếu như ta so khớp với chuỗi hoang trong chuỗi phía trên thì chắc như đinh nó sẽ không còn được so khớp.
Hoang => Nguyen hoang Minh Hoang
Meta Character
ở đây ý muốn nói là thay vì những bạn cố định và thắt chặt biểu thức chính quy rõ ràng như Hoang thì những bạn còn tồn tại thể lấy bao quát hơn thế nữa bằng phương pháp sử dụng khối biểu thức chính quy. Ở dưới đấy là bảng lý giải khối biểu thức chính quy
Meta charactersDescription.
Match với tất những những ký tự ngoại trừ ký tự đặc biệt quan trọng xuống dòng n
[]
Match với bất kể ký tự được chứa giữa cặp ngoặc vuông này
[^ ]
Match với bất kể ký tự nào mà không được chứa giữa cặp ngoặc vuông này
*
Đại diện cho không hoặc nhiều ký tự
+
Match 1 hoặc nhiều lần lặp lại của hình tượng đứng trước +
?
Có hay là không ký tự đứng trước nó
n,m
Độ dài chuỗi nằm trong mức chừng từ n cho đếm m
(xyz)
Match với chuỗi xyz theo thứ tự nhiều lần
|
Hoặc
Đứng trước ký tự như , [], / + * . & ^ để không biến thành nhầm lẫn giữa syntax và ký tự cần match
^
Bắt đầu của input
$
Match đến cuối của input
3.1 Match với một ký tự bất kỳ
Trong biểu thức chính quy khi toàn bộ chúng ta sử dụng ký tự . là ví dụ đơn thuần và giản dị nhất cho việc toàn bộ chúng ta so khớp với nhiều ký tự trong chuỗi input. . trong biểu thức chính quy nghĩa là match với đơn ký tự. Nó sẽ không còn so khớp với ký tự xuống dòng n. Ví dụ, bạn có biểu thức chính quy là .g tức là nó sẽ so khớp với chuỗi nguồn vào bất kể những từ nào trong chuỗi nguồn vào khởi đầu bằng bất
cứ ký tự nào nhưng tiếp theo đó phải là g.
.g => nguyên nguyền nguyến nguyển nguyện
3.2 Character set
Character sets được gọi là nhóm những ký tự. Cặp ngoặc vuông được sử dụng để chỉ ra những ký tự nào được so khớp. Thứ tự so khớp của những ký tự trong cặp dấu ngoặc vuông này những bạn không cần quan tâm. Ví dụ, ta có biếu thức chính quy như
sau
[Nn]guyen => Nguyen nguyen Minh Hoang
et[.] => Day la dau cham het.
3.2.1 Negated character set
Như ta đã biết ký tự ^ là ký tự đại diện thay mặt thay mặt cho khởi đầu một chuỗi nhưng khi sử dụng trong cặp dấu ngặc vuông, rõ ràng hơn là sau mở ngoặc vuông thì nó sẽ nghĩa là không match với những ký tự sau ^ trong cặp dấu ngoặc vuông.
[^c]oi
=> Dong doi la phai biet nguon coi cua nhau.
3.3 Repetitions
+, * hoặc ? được sử dụng để chỉ định sự xuất hiện bao nhiêu lần của một hoặc 1 nhóm pattern hoàn toàn có thể xuất hiện.
3.3.1 *
* đại diện thay mặt thay mặt cho không hoặc nhiều ký tự. Ví dụ biểu thức chính quy a* toàn bộ chúng ta hoàn toàn có thể hiểu là sau a hoàn toàn có thể không còn hoặc nhiều ký tự đứng sau nó. Nhưng nếu nó xuất hiện sau một class ký tự được đặt trong dấu ngoặc
vuông thì nó sẽ so khớp toàn bộ những trường hợp mà được set ở trong dấu ngoặc vuông đó. Ví dụ, biểu thức chính quy [a-z]* nghĩa là so khớp bất kể vần âm thường nào.
[a-z]* => Nguyen minh hoang sinh nam bao nhieu.
* hoàn toàn có thể được sử dụng với meta character, để hoàn toàn có thể so khớp bất kể chuỗi của những ký tự .*. * hoàn toàn có thể được sử dụng với whitespace
s để so khớp một chuỗi của chứa whitespace. Ví dụ, ta có biểu thức chính quy như sau s*ems* nghĩa là: không hoặc nhiều space, theo tiếp theo đó là ký tự e, tiếp theo tiếp theo đó là ký tự m, ở đầu cuối đó là không hoặc nhiều space.
s*ems* => Khi doi moi em con do mong, an kem truoc cong
3.3.2 +
+ đại diện thay mặt thay mặt cho một hoặc nhiều ký tự. Ví dụ, ta có biểu thức chính quy u.+n nghĩa là khởi đầu so khớp bắt
đầu là u tiếp đến là một ký tự bất kỳ nhưng chính bới đằng sau nó có ký tự + nên bắt buộc sau u phải có một hoặc nhiều ký tự, ở đầu cuối là n.
u.+n => Chung ta uon luon tuon cuon
3.3.3 ?
? đại diện thay mặt thay mặt cho một hoặc không còn ký tự nào. Ví dụ, biểu thức chính quy [N]?hieu nghĩa là: Có hoặc không còn ký tự N, tiếp đến là ký tự h, cứ tiếp
diễn đến ở đầu cuối là ký tự u.
[N]?hieu => Nhieu nguoi cho rang hieu nhau chua phai la du
3.4 Braces
Trong biểu thức chính quy được gọi là định lượng độ dài thường được sử dụng để chỉ rõ ra số lượng, hay số lần xuất hiện của ký tự hoặc một nhóm ký tự hoàn toàn có thể lặp lại. Ví dụ, ta có biểu thức chính quy như sau [0-9]2,3 nghĩa là: những ký tự số tối thiểu là 2 và không được nhiều hơn nữa 3, ký tự
số nằm trong từ 0 đến 9.
[0-9]2,3 => nam nay la nam 2020
Chúng ta hoàn toàn có thể lấy ra nhiều hơn nữa 3 ký tự bằng phương pháp như sau
[0-9]2, => nam nay la nam 2022
Hoặc lấy đúng 2 ký tự số
[0-9]2 => nam nay la nam 2020
3.5 Capturing value
Capturing value là một nhóm những pattern nhỏ hơn được đặt trong dấu (). Ví dụ (ng|th)uyen nghĩa là: khởi đầu bằng ng hoặc th, tiếp
sau là ký tự u, và cứ cho tới cuối là n.
(ng|th)uyen => nguyen nhan dan den thuyen bi lat la tuy nhiên to
([a-z]+)([0-9]+) => hoang0607
3.6 Alternation
Trong biểu thức chính quy, thì | được sử dụng để định nghĩa hoặc có cái này hoặc có cái kia, hoặc có cả hai. Nó in như phép or trong lập trình vậy. Ví dụ (C|c)hung|ta nghĩa là: đầu tiền
khởi đầu bằng C hoặc c, tiếp đến là hun, tiếp tiếp theo đó là g hoặc t, tiếp tiếp theo đó ở đầu cuối là a.
(C|c)hung|ta => Chung ta la mot gia dinh, bọn chung khong phai gia dinh
3.7 Special Character
Khi toàn bộ chúng ta muốn sử dụng những ký tự đặc trong đoạn regex , [], / + * . & ^ thì toàn bộ chúng ta hoàn toàn có thể kèm theo ký từ trước ký tự đặc biệt quan trọng đó khiến cho đỡ bị nhầm lẫn với syntax regex
nhé.
(g|c|m)a. => ga an ca, cho an ga, cho can ma.
3.8 Anchors ^, $
Trong lập trình toàn bộ chúng ta muốn kiểm tra xem hai biến có đúng chuẩn bằng nhau hay là không thì toàn bộ chúng ta chỉ việc so sánh ==. Còn trong biểu thức chính quy toàn bộ chúng ta sẽ sử dụng khởi đầu ^ và ký tự kết thúc $ đặt vào đầu hoặc cuối biểu thức chính quy, như vậy khi so khớp sẽ so sánh từ trên đầu đến
cuối, tức là toàn bộ chúng ta sẽ so khớp hoàn toàn.
3.8.1 Anchor ^
Mình sẽ lấy 2 ví dụ để lý giải cho bạn nhé
uyen => nguyen uyen
trong trường hợp này thì những bạn thấy đấy nó sẽ match với toàn bộ những từ có uyen không phân biệt là uyen nó nằm ở vị trí đâu. Nhưng khi bạn thêm ^uyen thì nó sẽ khác
^uyen => nguyen uyen
- Ký tự thứ 1 phải là chứ
u và khởi đầu chuỗi - Ký tự thứ hai phải là chữ y
- …
- Ký tự ở đầu cuối phải là chữ n
3.8.2 Anchor $
Mình cũng tiếp tục lấy 2 ví dụ để lý giải cho bạn
uyen. => nguyen uyen.
Nhưng khi những bạn thêm $ ở cuối regex thì nó sẽ như sau
uyen.$ => nguyen uyen uyen.
Ý là bắt buộc sau ký tự n phải là
dấu . thì mới hợp lệ
4. Shorthand and Character Sets
Biểu thức chính quy mang tới syntax ngắn mà thuận tiện hơn trong việc toàn bộ chúng ta viết những biểu thức regex.
ShorthandDescription.
Bất cứ ký tự nào ngoại trừ ký tự xuống dòng n
w
[a-zA-Z0-9_]
W
[w]
d
[0-9]
D
[^d]
s
[^s]
5. Lookaround
Lookaround được phân thành 2 loại đó là lookahead và lookbehind. Nó dùng để kiểm tra Đk ở phía trước hoặc phía sau pattern đứng trước hoặc sau nó. Lookahead được sử dụng khi toàn bộ chúng ta có Đk pattern này được đi trước pattern khác. Ví dụ, bạn muốn lấy toàn bộ những số trước đó là ký tự $
(?<=$)[0-9.]* => $1.67 $1.02
5.1
Positive Lookahead (?=)
Ví dụ bạn muốn lấy ra toàn bộ những user đứng sau là @gmail.com thì hoàn toàn có thể viết biểu thức chính quy như sau
‘/[^s]+([email protected])/’ => nguyenminhoang@gmail.com
ý ở đây sẽ là chỉ lấy những chuỗi nguồn vào nào mà có đuôi @gmail.com thôi.
5.2 Negative
Lookahead (?!)
Nó là ngược lại của ?=. Bây giờ mình thay thế ?= bằng ?! thì nó sẽ có được kết quả ngược lại. ‘/[^s]+([email protected])/’ => nguyenminhoang@framgia.com
5.3 Positive Lookbehind
Mình sẽ lấy ví dụ để bạn làm rõ hơn nhé. Bạn muốn regex những email có phần
đầu là nguyenminhhoang thì những bạn sẽ viết biểu thức chính quy như sau:
(?<=nguyenminhhoang)@[^,]+ => nguyenminhhoang**@gmail.com** nguyenminhhoang**@yahoo.com** [email protected]framgia.com
5.4 Negative Lookbehind
trái lại với Positive ở phía trên thì đó đó đó là Negative. Các
bạn muốn lấy phần đuôi của email không phải của nguyenminhhoang thì những bạn sẽ viết đoạn regex như sau:
(?<!nguyenminhhoang)@[^,]+
thì trong những chuôi thì chuỗi thỏa mãn nhu cầu là @framgia.com chính bới nó không chứa nguyenminhhoang
6. Flag
Flag cũng khá được gọi là modifier chính bới chúng modify đầu ra của biểu thức chính quy. Những flag này hoàn toàn có thể được sử dụng theo bất kể thứ tự hoặc phối hợp nào, và là một phần không thể thiếu của Regex.
6.1 Case intensive (i)
Ví dụ ta có biểu thức chính quy như sau /Nguyen/gi nghĩa là: thứ nhất sẽ khởi đầu bằng N, tiếp theo tiếp theo đó là g, tiếp theo là u, sau nữa là u, tiếp theo nữa là y cho tới n. Ở cuối của biểu thức chính quy là i flag có ý nghĩa bảo với engine để ignore trường hợp đã xác lập ở trên. Như những bạn đã thấy toàn bộ chúng ta cũng thêm g flag chính bới muốn search cho pattern này ở trong toàn bộ chuỗi đầu
vào.
Nguyen => Nguyen minh nguyen
/Nguyen/gi => Nguyen minh nguyen
Cái flag này những bạn lưu ý để dùng trong những engine trực tuyến có sẵn nhé, tùy thuộc những bạn chọn flag nào mà kết quả match regex nó sẽ rất khác nhau.
6.2 Global search (g)
g modifier được sử dụng để tìm trong những cái gì thoả mãn trong chuỗi nguồn vào. Ví dụ, biểu thức chính quy
.(a)n/g nghĩa là: bất kể ký tự nào ngoại trừ ký tự xuống dòng mới, tiếp đó theo sau là ký tự a, tiếp theo đó nữa là n. Bởi vì ở đầu cuối có g flag nên nó sẽ tìm toàn bộ những kĩ năng hoàn toàn có thể match được trong chuỗi input, không riêng gì có tìm và trả về kết quả thứ nhất
/.(a)n/ => Con ngan danh dan ta lung
/.(a)n/g => Con ngan danh dan ta lung
6.3 Multiline (m)
m modifier được sử dụng khi toàn bộ chúng ta cần match đoạn input có nhiều dòng. Như tôi đã nói ở trên là ký tự anchors (^, $) được sử dụng để check nếu pattern muốn match ở đầu hay ở cuối của chuỗi nguồn vào. Nhưng nếu toàn bộ chúng ta muốn những ký tự anchors thao tác trên một dòng tức là input nguồn vào không còn ký tự n. Nếu những bạn muốn nó match trên nhiều dòng thì những bạn chọn m flag ở cuối của engine nhé. Ví dụ, bạn có biểu thức chính quy
như sau:
/.2uyen(.)?$/ => Nguyen
minh
nguyen.
/.2uyen(.)?$/gm => Nguyen
minh
nguyen.
7. Kết luận
Vậy qua một vài những điều mình chia sẻ ở trên mong rằng một phân nào những bạn cũng hiểu hơn về biểu thức chính quy. Bài chia sẻ tiếp theo mình sẽ đi tìm hiểu một số trong những hàm dùng với biểu thức chính quy và một số trong những những ví dụ nhé. Cảm ơn những bạn đã đọc bài chia sẻ của tớ.
8.
Tham khảo
https://www.regular-expressions.info/
Tải thêm tài liệu liên quan đến nội dung bài viết Hướng dẫn php regex lookahead
programming
php
Negative lookahead regex
Lookahead trong regex
Lookahead regex
Regex tên
Mẫu regex
Ví dụ Regex
Reply
1
0
Chia sẻ
Share Link Download Hướng dẫn php regex lookahead miễn phí
Bạn vừa tìm hiểu thêm nội dung bài viết Với Một số hướng dẫn một cách rõ ràng hơn về Review Hướng dẫn php regex lookahead tiên tiến và phát triển nhất và Chia SẻLink Tải Hướng dẫn php regex lookahead Free.
Thảo Luận vướng mắc về Hướng dẫn php regex lookahead
Nếu sau khi đọc nội dung bài viết Hướng dẫn php regex lookahead vẫn chưa hiểu thì hoàn toàn có thể lại phản hồi ở cuối bài để Mình lý giải và hướng dẫn lại nha
#Hướng #dẫn #php #regex #lookahead