avatar of 发明者量化-小小梦 发明者量化-小小梦
tập trung vào tin nhắn riêng tư
4
tập trung vào
1271
Người theo dõi

Học biểu thức chính quy một cách có hệ thống (I): Những điều cơ bản

Được tạo ra trong: 2017-03-29 10:52:47, cập nhật trên: 2020-11-18 12:39:53
comments   2
hits   3011

Học biểu thức chính quy một cách có hệ thống (I): Những điều cơ bản

Biểu thức chính xác là gì? Biểu thức chính xác là một chuỗi các ký tự cụ thể được định nghĩa trước, và các kết hợp của các ký tự cụ thể này, tạo thành một chuỗi chuỗi các quy tắc đệm, được sử dụng để thể hiện một logic lọc đối với chuỗi.

  • Thông qua biểu thức chính xác, chúng ta có thể đạt được các mục đích sau:
  给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);
  可以通过正则表达式,从字符串中获取我们想要的特定部分。

Để giúp mọi người học dễ dàng hơn, chúng tôi khuyên bạn nên sử dụng Regextor, một phần mềm xác minh biểu thức chính xác, bạn có thể xem bài viết của tôi, trong đó cũng có rất nhiều phần mềm tốt cho Mac.

Học biểu thức chính quy một cách có hệ thống (I): Những điều cơ bản

Sau đây là những quy tắc của biểu thức chính xác:

  • #### Khớp với các ký tự văn bản thông thường

Biểu thức chính thức có thể chỉ chứa văn bản thông thường, đại diện cho một sự phù hợp chính xác với văn bản này. Ví dụ:

Biểu thức chính thức:song Bài viết này được đăng trên trang web của Xiao Songge. Kết quả so sánh:songge,xiaoSongge Biểu thức chính thức được hiển thị ở dạng chữ viết lớn và chữ viết nhỏ theo mặc định, vì vậy song sẽ không phù hợp với “Song”. Tuy nhiên, hầu hết các triển khai biểu thức chính thức đều cung cấp một tùy chọn cho biết không phân biệt chữ viết lớn và chữ viết nhỏ.

  

  

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

. được sử dụng để kết hợp với một ký tự tùy ý, ví dụ:

Biểu thức chính thức: c.t Lời bài hát: Cat Cet Caat Dog Kết quả so sánh:cat cet caaat dog Phân tích: c.t sẽ phù hợp với một chuỗi bắt đầu bằng “c”, kết thúc bằng “t” và giữa là các ký tự tùy ý.

Tương tự, nhiều liên tiếp. có thể được kết hợp với nhiều ký tự tùy ý liên tiếp:

Biểu thức chính thức: c..t Cat cet caat dog Kết quả so sánh: cat cetcaat dog

  

  

  • #### Khớp với ký tự đặc biệt

. trong biểu thức chính thức có ý nghĩa đặc biệt, là một ký tự đặc biệt. .\ cũng là một ký tự đặc biệt, có thể hoạt động như một phiên dịch cho các ký tự đặc biệt..Chữ “ . ” có nghĩa là chữ “ . ” thật sự.

Biểu thức chính thức: c.t Cat c.t dog Kết quả so sánh: catc.t dog Lưu ý: Vì \ cũng là một ký tự đặc biệt, nên bạn cần sử dụng hai dòng ngược để có thể kết hợp với một ký tự \ thật.\:

Biểu thức chính thức: c\t Chờ kết hợp văn bản: cat c\t dog Kết quả so sánh: catc\t dog

  

  

  • #### Sử dụng tập hợp ký tự

Nhưng nếu tôi muốn kết hợp một số ký tự cụ thể thì sao?[Và [đặc tính đầu].

Biểu thức chính thức: c[ab]t Cat cbt cet Kết quả so sánh:cat cbt cet Phân tích:[ab] sẽ phù hợp với “a” hoặc “b”[ab]t sẽ phù hợp với “cat” và “cbt” mà không phù hợp với “cet”

  

  

  • #### Sử dụng khoảng cách nhóm ký tự

Trong ví dụ trên, nếu tôi muốn kết hợp cet,[Có thêm một chữ nữa không? Vậy nếu tôi muốn so sánh với bất kỳ chữ cái nhỏ nào, tôi có thể viết hàng chục chữ nữa không?[a-z]:

Biểu thức chính thức: c[a-z]t Cat cbt czt c2t Kết quả so sánh:cat cbt czt c2t Phân tích:[a-z]t là bất kỳ ký tự nào trong các chữ cái “a” - “z” bắt đầu bằng “c” và kết thúc bằng “t”.

Các đoạn tương tự có thể được đọc ở đây:

[0-9] và[0123456789] có chức năng tương tự. [A-F] phù hợp với chữ A đến F bằng chữ cái lớn. [A-Z] phù hợp với tất cả các ký tự chữ cái từ A đến Z. [a-z] phù hợp với tất cả các ký tự từ a đến z. [A-z] phù hợp với tất cả các ký tự từ ASCII A đến ASCII z, không chỉ phù hợp với tất cả các ký tự mà còn phù hợp với các ký tự trong bảng ASCII từ A đến z, chẳng hạn như[Và ^ vv) [A-Za-z0-9] Đúng với tất cả các chữ cái và chữ số nhỏ.

  

  

  • #### Khớp với không phải bộ ký tự

Bộ ký tự thường được sử dụng để chỉ định một nhóm các ký tự cần được kết hợp. Nhưng đôi khi, bạn muốn loại trừ một nhóm các ký tự mà bạn không muốn kết hợp. Điều này có thể được thực hiện bằng cách phủ nhận bộ ký tự. Ví dụ:

Biểu thức chính thức: c[^a-z]t Cat cbt czt c2t cAt Kết quả so sánh: cat cbt cztc2t cAt Phân tích: Điều này hoàn toàn trái ngược với ví dụ trước đây.[a-z] phù hợp với tất cả các chữ cái chữ cái, trong khi [^a-z] Khớp với tất cả các ký tự không phải là chữ cái nhỏ.

Lưu ý, ký tự ^ là loại bỏ tất cả các ký tự trong tập ký tự.

  

  

  • #### Chữ nguyên tố

Các ký tự số có ý nghĩa đặc biệt trong các biểu thức chính quy, chúng ta đã nói về một số ký tự số, ví dụ như.[Các ký tự này không thể trực tiếp thể hiện ý nghĩa của chúng, ví dụ, không thể trực tiếp sử dụng[Để phù hợp”.[“Sử dụng. để phù hợp”.

Tất cả các ký tự siêu có thể được chuyển đổi trước với một đường cong ngược, và khi chuyển đổi, ký tự sẽ phù hợp với chính nó chứ không phải là ý nghĩa đặc biệt của nó. Ví dụ:[Đúng.[ “:

Biểu thức chính thức: a[b Đang chờ kết hợp: a[b ab a[[b Kết quả so sánh:a[b ab a[[b Lưu ý: \ được sử dụng để chuyển nghĩa ký tự đầu chữ cái, điều này cũng có nghĩa là \ cũng là một ký tự đầu chữ cái. Vì vậy, nếu cần phải phù hợp với “\” thực sự, có thể sử dụng\:

Biểu thức chính thức: a\b Đang chờ kết hợp: a\b a\b a[[b Kết quả so sánh: a\b a\b a[[b

  

  

  • #### Chữ trống

Đôi khi bạn có thể cần phải so sánh các ký tự trống không thể in được trong văn bản. Ví dụ, bạn muốn tìm tất cả các ký tự Tab, hoặc tất cả các ký tự thay đổi dòng. Bạn có thể sử dụng các ký tự siêu đặc biệt trong bảng sau:

Học biểu thức chính quy một cách có hệ thống (I): Những điều cơ bản

Ví dụ: \r\n sẽ phù hợp với một bộ chuyển đổi quay trở lại, thể hiện một chuyển đổi tệp trong Windows. Trong các hệ thống Linux và Unix, chỉ cần sử dụng \n.

  

  

  • #### Khớp với một loại ký tự cụ thể

Có một số ký tự siêu đặc biệt có thể được sử dụng để phù hợp với các tập hợp ký tự thông thường. Các ký tự siêu này được gọi là lớp ký tự phù hợp. Bạn sẽ thấy chúng rất thuận tiện khi sử dụng.

Khớp số hoặc không số Tôi đã nói ở trên.[0-9] có thể kết hợp tất cả các số. Nếu không muốn kết hợp bất kỳ số nào, bạn có thể sử dụng[^0-9]。 Bảng dưới đây liệt kê các ký tự số và phi số:

Học biểu thức chính quy một cách có hệ thống (I): Những điều cơ bản

Biểu thức chính thức: c\dt Chờ kết hợp văn bản: cat c2t czt c9t Kết quả so sánh: catc2t czt c9t

Biểu thức chính thức: c\Dt Chờ kết hợp văn bản: cat c2t czt c9t Kết quả so sánh:cat c2t czt c9t Khớp các ký tự chữ cái và không chữ cái Một ký tự phụ khác thường được sử dụng là \w và \W:

Học biểu thức chính quy một cách có hệ thống (I): Những điều cơ bản

Biểu thức chính thức: c\wt Chờ kết hợp văn bản: cat c2t czt c-t c\t Kết quả so sánh:cat c2t c-t c\t

Biểu thức chính thức: c\Wt Đợi kết hợp văn bản: cat c2t c-t c\t Kết quả so sánh: cat c2tc-t c\t Khớp với trống và không trống Và cuối cùng, bạn sẽ thấy một lớp tương ứng trống:

Học biểu thức chính quy một cách có hệ thống (I): Những điều cơ bản

Biểu thức chính thức: c\st Đợi kết hợp văn bản: cat c t c2t c\t Kết quả so sánh: catc t c2t c\t

Biểu thức chính thức: c\St Đợi kết hợp văn bản: cat c t c2t c\t Kết quả so sánh:cat c t c2t c\t

  

  

  • Khớp với một hoặc nhiều ký tự

    • ký tự đầu biểu thị một hoặc nhiều ký tự. Ví dụ, a sẽ phù hợp với “a”, trong khi a + sẽ phù hợp với một hoặc nhiều “a”.

Biểu thức chính thức: cat Bài viết tương ứng: ct cat caat caaat Kết quả so sánh:cat caat caaat

Biểu thức chính thức: ca + t Bài viết tương ứng: ct cat caat caaat Kết quả so sánh:cat caat caaat Khi sử dụng + trên bộ ký tự, cần đặt ký hiệu + bên ngoài bộ:

Biểu thức chính thức: c[0-9]+t Đang chờ kết hợp văn bản: ct c0t cat c123t Kết quả so sánh:c0t cat c123t Phân tích:[0-9] + t là một chuỗi bắt đầu bằng “c”, kết thúc bằng “t” và có một hoặc nhiều số ở giữa.

Tất nhiên.[0-9+] cũng là một biểu thức chính xác hợp pháp, nhưng nó biểu thị một tập hợp ký tự bao gồm các ký hiệu “ 0 ” - “ 9 ” và “ + ” .

Thông thường, các ký tự số như . và + được sử dụng như là một nghĩa nghĩa khi sử dụng tập hợp ký tự, do đó không cần phải chuyển đổi.[0-9+] và[0-9+Chức năng của nó cũng giống như vậy.

Lưu ý: + là một ký tự đơn vị, cần sử dụng chuyển nghĩa để phù hợp với “+”+。

  

  

  • #### Khớp với 0 hoặc nhiều ký tự

Bạn có thể sử dụng nó nếu bạn muốn kết hợp 0 hoặc nhiều hơn.*Các ký tự chính.

Biểu thức chính thức: ca*t Đang chờ kết hợp văn bản: ct cat caat cbt Kết quả so sánh:ct cat caat cbt Để ý:Biểu tượng là ký tự chữ cái. Để có thể phù hợp với “”, cần phải chuyển nghĩa*。

  

  

  • #### Khớp với 0 hoặc 1 ký tự

? Đáp ứng với 0 hoặc 1 ký tự. Vì vậy, ? rất thích hợp để phù hợp với một ký tự có thể chọn trong văn bản.

Biểu thức chính thức: ca?t Đang chờ kết hợp văn bản: ct cat caat cbt Kết quả so sánh:ct cat caat cbt Lưu ý: ký hiệu ? là ký tự chữ cái. Để có thể phù hợp với “ ? “, cần phải chuyển nghĩa?。

  

  

  • #### Sử dụng số lần kết hợp

Biểu thức chính thức cho phép chỉ định số lần phù hợp. Số lần có thể được chỉ định giữa { và } . Lưu ý: { và } cũng là ký tự đầu, cần dịch khi sử dụng nghĩa đen.

Khớp số chính xác Để chỉ định số lần so sánh, bạn có thể nhập số giữa { và }. Ví dụ, {3} sẽ so sánh với 3 ký tự hoặc tập hợp trước đó:

Biểu thức chính thức: ca{3}t Đang chờ kết hợp văn bản: ct cat caaat cbt Kết quả so sánh:caaat cbt Ít nhất số lần phù hợp Chúng ta cũng có thể chỉ định các giá trị tối thiểu cho các trận đấu. Ví dụ, {2,} có nghĩa là trận đấu 2 lần hoặc nhiều lần hơn:

Biểu thức chính thức: ca{1,}t Đang chờ kết hợp văn bản: ct cat caaat cbt Kết quả so sánh:cat caaat cbt Khớp giữa các chiều Chúng ta cũng có thể sử dụng các giá trị tối thiểu và tối đa để xác định số lần phù hợp. Ví dụ, {2,3} có nghĩa là ít nhất 2 lần và tối đa 3 lần.

Biểu thức chính thức: ca{2,3}t Đang chờ kết hợp văn bản: ct cat caaat cbt Kết quả so sánh:caaat cbt Vậy là? và {0,1} có cùng chức năng với + và {1,} cũng có cùng chức năng với

  

  

  • #### Không tham lam phù hợp

Hãy xem ví dụ sau:

Biểu thức chính thức: s.*g Lời bài hát: xiao song Kết quả so sánh: xiao song xiao song Phân tích: s.*g không phải là song song mà là tất cả các văn bản giữa s đầu và g cuối.

Đó là vì*+ và + đều là một sự phù hợp thèm ăn. nghĩa là, biểu thức chính thức luôn tìm kiếm một sự phù hợp lớn nhất, chứ không phải là một sự phù hợp nhỏ nhất, nó được thiết kế một cách có chủ ý.

Nhưng nếu bạn không muốn tham lam, bạn nên sử dụng các từ số không tham lam của các từ số này (khớp càng ít ký tự càng tốt). Không tham lam được thêm vào sau từ số:

Học biểu thức chính quy một cách có hệ thống (I): Những điều cơ bản

*Đúng không?Một phiên bản không tham lam, vì vậy bạn có thể sử dụng? để sửa đổi ví dụ trên:

Biểu thức chính thức: s.?g Lời bài hát: xiao song Kết quả so sánh:song xiao song Phân tích: Có thể thấy s.?g đã kết hợp được 2 bài hát.

  

  

  • #### Xác định ranh giới chuỗi

Các ký tự phụ phù hợp với ranh giới của chuỗi là ^ và $, được sử dụng cho đầu và cuối chuỗi.

^ Sử dụng:

Biểu thức chính thức: ^xiao

Bài viết này được đăng trên blog của Xiao Song. Kết quả so sánh:xiaosong

Bài viết này được đăng tải trên trang web của AXIAOSONG. Kết quả so sánh: Phân tích: ^xiao phù hợp với chuỗi bắt đầu bằng “xiao”.

$ được sử dụng như sau:

Biểu hiện chính thức: song$

Bài viết này được đăng trên blog của Xiao Song. Kết quả so sánh:song

Bài viết này được viết bởi Xiaosonga. Kết quả so sánh:xiaosonga Phân tích: song$ tương ứng với chuỗi kết thúc bằng “song”.

Tương tác:

Biểu thức chính thức: ^[0-9a-zA-Z]{4,}$

Đang chờ kết hợp: a1b234ABC Kết quả so sánh:a1b234ABC

  • a1b23 = 4ABC Kết quả sau khi so sánh: + a1b23 = 4ABC Phân tích: ^[0-9a-zA-Z]{4,}$ là một chuỗi gồm các số hoặc ký tự và có số lượng lớn hơn hoặc bằng bốn chữ số.

Lưu ý: ^ nếu nằm ở đầu của tập hợp, nó sẽ là âm; nếu nằm bên ngoài tập hợp, nó sẽ phù hợp với vị trí bắt đầu của chuỗi.[^0-9] và ^[Sự khác biệt của 0-9]

  

  

  • #### Sử dụng chế độ đa dòng

Tuy nhiên, có thể bật chế độ đa dòng. Trong chế độ đa dòng, các công cụ biểu hiện chính quy sẽ sử dụng dấu thay đổi dòng làm dấu phân chia của chuỗi, ^ sẽ phù hợp với đầu văn bản hoặc đầu dòng, trong khi $ có thể phù hợp với kết thúc văn bản hoặc cuối dòng.

Thay đổi ví dụ trên:

Biểu thức chính xác là:[0-9a-zA-Z]{4,}$

Đang chờ kết hợp: a1b234ABC +a1b23=4ABC ABC123456

Kết quả so sánh:a1b234ABC +a1b23=4ABC ABC123456 Phân tích: ((?m) ^[0-9a-zA-Z]{4,}$ sẽ so sánh mỗi dòng với một chuỗi gồm các chữ số hoặc chữ cái, và các số lượng lớn hơn bằng bốn chữ số.

Lưu ý: Nếu sử dụng mô hình đa dòng, thì dấu () phải được đặt ở đầu biểu thức chính quy. (?m) không được hỗ trợ trong hầu hết các triển khai biểu thức chính quy. Một số triển khai biểu thức chính quy cũng hỗ trợ sử dụng \A bắt đầu của chuỗi khớp, \Z kết thúc của chuỗi khớp. Nếu được hỗ trợ, thì chức năng của các ký tự số này giống như ^, $. Tuy nhiên, các ký tự số này không thể sử dụng sửa đổi ((?m) và do đó không thể được sử dụng cho mô hình đa dòng.

Bài này nói về cơ sở, sau đó bạn có thể xem bài tiếp theo để học các biểu thức chính xác một cách có hệ thống ((ii): bài tiến bộ 。

Bài viết được đăng trên trang web của iOS_小松哥