Regex là gì tiết lộ sxxexx regex là gì

Related Articles

Regex là gì? Bạn đã biết tới sự lợi hại của Regex hay chưa? Bài học này Lập Trình Không Khó sẽ giúp bạn hiểu regex (biểu thức chính quy) là gì và cách để tinh thông regex nhé.

Regex là gì?

Regex (TA: Regular Expression) trong tiếng Việt được gọi là Biểu thức chính quy. Regex là các các kí tự được kết hợp với nhau theo quy tắc để tạo nên một trình tự giúp chúng ta tìm kiếm và thay thế văn bản một cách thông minh, nhanh chóng, đơn giản và thuận tiện. Regex có thể dùng được trong hầu hết các ngôn ngữ lập trình bậc cao như Java, C#, Python, JS, PHP,… Hiểu và sử dụng được regex, cuộc đời bạn sẽ nở hoa ????

regex java là gìregex c# là gìpython regex là gìỨng dụng của Regex trong tìm kiếm và thay thế sửa chữa văn bản – Demo trên Sublime Text 3 ( Click vào mới thấy, ảnh gif đó )

Hãy quan sát ảnh trên, bạn sẽ thấy được sự thần kỳ của regex trong việc tìm kiếm và thay thế văn bản. Nếu bạn chỉ sử dụng tìm kiếm và thay thế giống trong Word, bạn sẽ chẳng bao giờ làm được điều đó.

Sau khi tinh thông regex, việc ứng dụng nó vào trong quy trình tìm kiếm và thay thế sửa chữa của bạn sẽ đơn thuần và thuận tiện hơn rất nhiều .

Hãy thử tưởng tượng với bài toán lấy tổng thể SĐT người mua trong một file văn bản 20MB xem. Bạn sẽ sử dụng cách nào để lấy được đống sđt trong đó :

Dùng regex với chưa đến 10 dòng code, file nhỏ mở text editer là xong chứ méo cần code. Dùng một đống for, if else để sàng lọc lên tới 100 dòng .

Nếu bạn thích dùng cách 1 thì đọc tiếp bài viết này nha, hihi

Cú pháp của biểu thức chính quy

So khớp cơ bản

Chuỗi

Giải nghĩa

.

Khớp với bất kỳ ký tự nào

d

Khớp với số bất kỳ từ 0 – 9

D

Phủ định của d

w

Khớp với các chữ cái tiếng anh, chữ số và dấu _

W

Phủ định của w



Khớp với dấu cách(SPACE trên bàn phím)



Khớp với dấu tab



Khớp với new line(xuống hàng)

s

Khớp với dấu trắng bất kỳ(dấu cách, ,)

S

Phủ định của s

Kết hợp các chuỗi so khớp

Bạn hoàn toàn có thể tích hợp những chuỗi so khớp lại với nhau bằng cách đưa chúng vào trong cặp ngoặc vuông. Ví dụ :

-> Khớp những ký tự hoặc là a, hoặc là b, hoặc là c -> a-f là toàn bộ những ký tự từ a đến f trong bảng vần âm tiếng anh đó, A-Z tương tự như là từ A hoa đến Z hoa. Vậy là regex này khớp với mọi ký tự trong bảng vần âm tiếng anh bất kể hoa thường. -> Khớp với ký tự số hoặc dấu ,

Bạn hoàn toàn có thể loại trừ những giá trị không mong ước bằng cách như sau :

-> Khớp với mọi ký tự trừ những ký tự trong bảng vần âm tiếng anh. -> Khớp với mọi ký tự trừ những nguyên âm trong tiếng anh .

Các ký tự ranh giới

Ký tự

Giải nghĩa



Xác định ranh giới của từ, xem demo

B

Phủ định của, xem demo

^

Xác định vị trí bắt đầu của dòng, demo

$

Xác định vị trí kết thúc của dòng, demo

Sử dụng hoặc trong regex

Đôi khi bạn muốn so khớp hoặc giá trị này, hoặc giá trị kia. Chẳng hạn số điện thoại thông minh ở Nước Ta hoàn toàn có thể mở màn là 0, hoặc 84 hoặc + 84 thì ta phải làm thế nào ?

Khi đó ta dùng: (0|84|+84) -> Lưu ý dấu + là ký tự định lượng nên phải có dấu đằng trước, đọc tiếp đi rồi sẽ biết định lượng là cái gì ha. -> Xem demo ở đây

Chú ý: Nên dùng (?:0|84|+84) thay cho regex trên, trong trường hợp bạn không muốn sử dụng lại cụm giá trị đầu số này để thay thế. -> tối ưu tốc độ xử lý.

Các ký tự định lượng

Loại định lượng

Giải nghĩa

Demo

X*

So khớp lặp lại regex X 0 hoặc vô số lần

Demo link

X+

So khớp lặp lại regex X 1 hoặc vô số lần

Demo link

X?

So khớp lặp lại regex X 0 hoặc 1 lần

Demo link

X{m}

So khớp lặp lại regex X chính xác m lần

Demo link

X{m,}

So khớp lặp lại regex X m hoặc nhiều hơn m lần

Demo link

X{m,n}

So khớp lặp lại regex X với số lần từ m tới n (bao gồm cả m và n)

Demo link

Và một số ít ví dụ sau đây :

ab + sẽ khớp những chuỗi ab, abb, abbb … ( ab ) + sẽ khớp những chuỗi ab, abab, ababab …

Mặc định giá trị định lượng * và + sẽ tham lam tới mức tối đa, nhưng ta hoàn toàn có thể ngăn nó ăn tham bằng định lượng ? :

Tham lam: ^.*b sẽ khớp aacbaabde (phần khớp là phần gạch chân đó). Nó sẽ khớp cho tới ký tự b cuối cùng của chuỗi luôn.Lười nhác: .*?b sẽ chỉ khớp aacbaabde (gặp ký tự b đầu tiên là nó dừng lại).

Các ký tự đặc biệt của regex

Giống như ngôn từ lập trình có những từ khóa mà bạn không được phép khai báo trùng. Thì regex cũng vậy, nó có những ký tự đặc biệt quan trọng đang nắm giữ những vai trò quan trọng. Bạn muốn dùng nó thì phải báo cho nó biết :

Cụ thể, những ký tự { } ( ) ^ USD. | * + ? và dấu – ở trong cặp ngoặc vuông là những ký tự đặc biệt quan trọng. Nếu bạn muốn dùng nó để so khớp thì cần thêm dấu vào đằng trước :

Ví dụ :. sẽ khớp với dấu chấm (. ) và sẽ khớp với ký tự .

Trên đây là những kỹ năng và kiến thức cơ bản, nói cơ bản thôi chứ nhớ nhiêu đó là đủ sài rồi đấy. Nếu bạn muốn học nhiều hơn nữa, thực hành thực tế nhiều hơn nữa thì đọc tiếp bài viết nhé ? ? ? ?

Học regular expression ở đâu?

Tui, Lập Trình Không Khó có một series hướng dẫn học regex cơ bản trên Youtube đó. Bạn nào mới học thì hoàn toàn có thể xem qua series này nhé .

Còn ông nào giỏi tiếng anh, hoặc muốn tranh thủ học tiếng Anh luôn thì tuyệt với quá. Để tui search giúp ông mấy cái tutorial nhé .

Regex tutorial # 1

Regex tutorial # 2

Regex tutorial # 3

Qua đây, mình hy vọng bài viết này giúp những bạn hiểu được regex là gì ? những khái niệm, cách dùng regex cơ bản qua những ví dụ cũng như con đường để chinh phục regex nhé. Học xong thì nhớ mang đi khoe bè bạn “ mày biết regex là gì không ”, vào đây ( website này nè, ra mắt hộ tui nhé ) mà học ? ? ? ?

Một số regex được sử dụng phổ biến

Dưới đây là list những regex được sử dụng phổ cập. Đôi khi, có những những phức tạp nhưng phổ cập thì ta nên dùng những regex đã được hội đồng mạng kiểm chứng có phải tốt không nào. Dưới đây tôi xin liệt kê ra những regex phổ cập, mỗi regex trên một dòng nhé .

Lưu ý: Cái bắt đầu ^ và $ bạn có thể thêm, bỏ nếu cần nhé.

So khớp email

^ ( + ) ( ( { 1,3 }. { 1,3 }. { 1,3 }. ) | ( ( +. ) + ) ) ( { 2,4 } | { 1,3 } ) ( > ? ) USD ^ w + * w + ( ( – w + ) | ( w * ) ). { 2,3 } USD

So khớp URL

^ ( ( https ? | ftp | file ) : / / ) ? ( + ). ( { 2,6 } ) (. -> * ) * / ? USD ( ( mailto : | ( news | ( ht | f ) tp ( s ? ) ) : / / ) { 1 } S + ) ( http | ftp | https ) : / / + (. + ) + ( ? ^ = % và / ~ + # > ) ? ^ ( http | https | ftp ) : / / +. { 2,3 } ( : * ) ? / ? ( ) * USD

So khớp SĐT ở VN

+?(0|84)d{9}

So khớp số nguyên

d +

So khớp mã HTML

So khớp tên riêng

Một số liên kết hữu ích

Test regex trực tuyến : https://regex101.com/Regex cheetsheet : http://web.mit.edu/hackl/www/lab/turkshop/slides/regex-cheatsheet.pdfThư viện regex : http://regexlib.com/

Ồ, regex là gì ? Hóa ra nó đơn thuần vậy hả ? Biết vậy mình học sớm cho nó nhàn đời. Đây từng là tâm lý của mình và tới giờ nó vẫn đúng. Regex nó khủng lắm những bạn ạ, mình vẫn đang từng ngày học nó đây : https://stackoverflow.com/questions/59188591/

More on this topic

Comments

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Advertismentspot_img

Popular stories