Một biểu thức chính xác là gì? Một biểu thức chính xác là một số ký tự cụ thể được xác định trước, và sự kết hợp của các ký tự cụ thể đó tạo thành một chuỗi chuỗi các quy tắc, được sử dụng để biểu diễn một loại logic lọc cho các chuỗi.
Các mục đích sau đây có thể đạt được bằng cách sử dụng biểu thức chính thức:
给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);
可以通过正则表达式,从字符串中获取我们想要的特定部分。
Để giúp mọi người dễ dàng học hơn, trước tiên tôi đề nghị một phần mềm xác minh biểu thức chính xác Regextor, cụ thể là bạn có thể xem bài viết của tôi, trong đó tôi đề nghị nhiều phần mềm tốt cho Mac.
Một biểu thức chính thức chỉ có thể chứa văn bản thông thường, đại diện cho việc khớp chính xác với văn bản này; ví dụ:
Các biểu thức chính thức:song
Đang chờ kết hợp: xiaoosongge, xiao songge
Kết quả so sánh: xiaosong
Ge, xiao Songge
Theo mặc định, biểu thức chính thức được viết bằng chữ viết nhỏ, vì vậy song sẽ không khớp với
. được sử dụng để khớp với bất kỳ ký tự nào, ví dụ:
biểu thức chính thức: c.t
Bài viết: Cat cet caaat dog
Kết quả so sánh:cat
cet
Caat Dog
Phân tích: c.t sẽ khớp với một chuỗi bắt đầu bằng "c" và kết thúc bằng "t", giữa là một ký tự tùy chọn.
同理,多个连续的.可以匹配多个连续的任意字符:
Các biểu thức chính thức: c...t
Đang chờ kết hợp: cat cet caat dog
Kết quả so sánh: cat cetcaat
chó
. chứa một ý nghĩa đặc biệt trong biểu thức chính thức, là một ký tự đặc biệt.. cũng là một ký tự đặc biệt, có thể đóng vai trò chuyển nghĩa đối với ký tự đặc biệt.. nếu bạn muốn phù hợp là một ký tự thực sự..
biểu thức chính thức: c.t
Đợi kết hợp văn bản: cat c.t dog
Kết quả so sánh: catc.t
chó
Lưu ý: vì \ cũng là một ký tự đặc biệt, bạn cần phải sử dụng hai đường ngược \ để khớp với một ký tự \ thực sự:
biểu thức chính thức: c\t
Đợi kết hợp văn bản: cat c\t dog
Kết quả so sánh: catc\t
chó
Như đã đề cập ở trên. Có thể khớp với bất kỳ ký tự nào, nhưng nếu tôi muốn khớp với một vài ký tự cụ thể thì sao? Khớp với một tập hợp các ký tự cụ thể có thể sử dụng [và] ký tự siêu nhỏ.
biểu thức chính thức: c[ab]t
Đang chờ kết hợp văn bản: cat cbt cet
Kết quả so sánh:cat
cbt
cet
Phân tích: [ab] sẽ khớp "a
Trong ví dụ trên, nếu tôi muốn khớp với cet, tôi sẽ thêm một trong [? Nếu tôi muốn khớp với bất kỳ chữ cái chữ viết nhỏ nào, tôi sẽ viết hàng chục trong đó? Có thể, nhưng quá dài.
biểu thức chính thức: c[a-z]t
Đang chờ kết hợp: cat cbt czt c2t
Kết quả so sánh:cat
cbt
czt
c2t
Phân tích: c[a-z]t biểu thị "c bắt đầu bằng c, kết thúc bằng t", giữa là chữ cái "a" - bất kỳ chữ cái nào của chữ cái "z".
Các trang web khác cũng có:
[0-9] cũng giống như [0123456789]. Khớp tất cả các số. [A-F] Khớp các ký tự chữ cái từ A đến F. [A-Z] Khớp với tất cả các ký tự từ A đến Z. [a-z] Khớp với tất cả các ký tự chữ viết nhỏ từ a đến z. [A-z] Khớp tất cả các ký tự trong ASCII từ A đến ASCII z ((không chỉ khớp tất cả các ký tự mà còn khớp các ký tự trong bảng ASCII từ A đến z, chẳng hạn như [ và ^, v.v.)). [A-Za-z0-9] Khớp với tất cả các chữ cái và số viết bằng chữ viết nhỏ.
Các tập hợp ký tự thường được sử dụng để chỉ định một tập hợp các ký tự cần khớp. Tuy nhiên, đôi khi bạn muốn loại trừ một tập hợp các ký tự mà bạn không muốn khớp. Điều này có thể được thực hiện bằng cách từ chối tập hợp các ký tự. Ví dụ:
biểu thức chính thức: c[^a-z]t
Đang chờ kết hợp: cat cbt czt c2t cAt
Kết quả so sánh: cat cbt cztc2t
cAt
Phân tích: Đây là một ví dụ hoàn toàn ngược lại với ví dụ trước đây..[a-z] phù hợp với tất cả các ký tự viết nhỏ, trong khi [^a-z] phù hợp với tất cả các ký tự không viết nhỏ..
Lưu ý, ký tự ^ là loại bỏ tất cả các ký tự trong tập các ký tự.
Chữ nguyên tử có ý nghĩa đặc biệt trong biểu thức chính thức, trên đó chúng tôi đã nói một vài ký tự nguyên tử, ví dụ như.....................................
Tất cả các siêu ký tự đều có thể được chuyển đổi ngược đường cong trước, và khi chuyển đổi, ký tự sẽ phù hợp với chính nó chứ không phải ý nghĩa đặc biệt của nó. Ví dụ, [ sẽ phù hợp với " [ ":
biểu thức chính thức: a[b]
Đợi kết hợp văn bản: a[b ab a[[b
Kết quả so sánh:a[b
ab a[[b
Lưu ý: \ được sử dụng để chuyển đổi các ký tự, điều này cũng có nghĩa là \ cũng là một ký tự. Vì vậy, nếu bạn cần phải phù hợp với " \ " thực sự, bạn có thể sử dụng \:
biểu thức chính thức: a\b
Đợi kết hợp văn bản: a\b a\b a[[b
Kết quả sau khi khớp: a\ba\b
a[[b
Đôi khi bạn có thể cần phải phù hợp với các ký tự trống không thể in trong văn bản. Ví dụ, bạn muốn có thể tìm tất cả các ký tự Tab, hoặc tất cả các ký tự thay thế. Bạn có thể sử dụng các ký tự đặc biệt trong bảng dưới đây:
Ví dụ, \r\n sẽ khớp với một sự kết hợp chuyển dòng quay trở lại, trong Windows biểu thị một thay dòng tập tin. Trong Linux và các hệ thống Unix, chỉ cần sử dụng \n.
Có một số siêu ký tự đặc biệt có thể được sử dụng để khớp với các tập hợp ký tự phổ biến. Những siêu ký tự này được gọi là lớp ký tự khớp. Bạn sẽ thấy chúng rất tiện dụng.
Khớp số hoặc không số Như đã đề cập ở trên,[0-9] có thể khớp với tất cả các số. Nếu bạn không muốn khớp bất kỳ số nào, bạn có thể sử dụng [^0-9]. Dưới đây là danh sách các ký tự lớp con số và phi số:
biểu thức chính thức: c\dt
Đang chờ kết hợp: cat c2t czt c9t
Kết quả so sánh: catc2t
cztc9t
biểu thức chính thức: c\Dt
Đang chờ kết hợp: cat c2t czt c9t
Kết quả so sánh:cat
c2tczt
c9t
Khớp các ký tự chữ cái và phi chữ cái
Một ký tự khác thường được sử dụng là \w và \W:
biểu thức chính thức: c\wt
Đang 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
Đang chờ kết hợp văn bản: cat c2t c-t c\t
Kết quả kết hợp: cat c2tc-t
c\t
Khớp giữa không trống và không trống
Các lớp tương ứng cuối cùng sẽ gặp phải là các lớp trống:
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
Đang chờ kết hợp văn bản: cat c t c2t c \ t
Kết quả so sánh:cat
c tc2t
c\t
+ ký tự cho thấy kết hợp một hoặc nhiều ký tự. Ví dụ, a sẽ kết hợp "a" và a + sẽ kết hợp một hoặc nhiều "a".
Phương thức chính thức:cat
Đang chờ kết hợp văn bản:ct cat caat caaat
Kết quả so sánh:ctcat
caat caat
Các biểu thức chính thức: ca + t
Đang chờ kết hợp văn bản:ct cat caat caaat
Kết quả so sánh:ctcat
caat
caaat
Khi sử dụng + trên một tập chữ, bạn cần đặt ký hiệu + bên ngoài tập chữ:
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:ctc0t
mèoc123t
Phân tích: c[0-9]+t biểu thị một chuỗi bắt đầu bằng "c và kết thúc bằng t", giữa là một hoặc nhiều số.
Tất nhiên, [0-9+] cũng là một biểu thức chính thức hợp pháp, nhưng nó biểu thị một tập hợp các ký tự có ký hiệu "0" - "9" và "+".
Nói chung, các ký tự meta như. và + được sử dụng như một nghĩa đen khi sử dụng các tập hợp ký tự, do đó không cần phải chuyển đổi. Nhưng việc chuyển đổi cho chúng cũng ổn, vì vậy, chức năng của [0-9+] và [0-9+] là như nhau.
Lưu ý: + là một siêu ký tự, để khớp "+" cần sử dụng chuyển nghĩa +。
Nếu bạn muốn kết hợp 0 hoặc nhiều ký tự hơn, bạn có thể sử dụng ký tự *.
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 ý:* Biểu tượng là các ký tự. Để có thể khớp với "*", cần chuyển nghĩa *.
? phù hợp với 0 hoặc một ký tự. Vì vậy,? rất phù hợp để phù hợp với một ký tự tùy 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à các ký tự.
Các biểu thức chính thức cho phép chỉ định số lần khớp. Số lần có thể được chỉ định giữa các hàm {
Số lần khớp chính xác Để xác định số lần khớp, bạn có thể nhập số giữa { và }. Ví dụ, {3} sẽ khớp với các ký tự hoặc tập hợp xuất hiện 3 lần 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: ct catcaaat
cbt
Ít nhất là số lần khớp
Chúng ta cũng có thể chỉ định giá trị tối thiểu của sự khớp. Ví dụ, {2,} có nghĩa là khớp 2 lần hoặc nhiều hơn:
Các biểu thức chính thức: ca{1,} t
Đợi kết hợp văn bản: ct cat caaat cbt
Kết quả so sánh:ctcat
caaat
cbt
Khớp số số
Chúng ta cũng có thể sử dụng giá trị tối thiểu và tối đa để xác định số lần khớp. Ví dụ, {2,3} có nghĩa là khớp ít nhất 2 lần và nhiều nhất 3 lần.
Các 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: ct catcaaat
cbt
Vì vậy? và {0,1} là cùng một chức năng + và {1,} là cùng một chức năng.
Trước tiên, hãy xem ví dụ dưới đây:
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ù hợp với hai "song" như dự đoán, mà phù hợp với tất cả các văn bản giữa "s" đầu tiên và "g" cuối cùng.
Điều này là bởi vì * và + đều là sự khớp tham. Đó là, biểu thức chính thức luôn tìm kiếm sự khớp lớn nhất, chứ không phải nhỏ nhất, điều này được thiết kế một cách có chủ ý.
Nhưng nếu bạn không muốn khớp tham thì hãy sử dụng các từ số này để khớp không tham (khớp càng ít ký tự càng tốt); từ số không tham được thêm sau từ số:
Ừ.Có thể sử dụng *? để thay đổi ví dụ trên:
正则表达式:s.G?
Lời bài hát: Xiao Song
Kết quả so sánh: xiaosong
xiaosong
分析:可以看到s.? g kết hợp hai "song".
Các ký tự meta phù hợp với ranh giới của chuỗi là ^ và $, được sử dụng để bắt đầu và kết thúc chuỗi.
^ Sử dụng như sau:
Hình thức chính thức: ^ xiao
Đang chờ kết hợp:xiaosong
Kết quả so sánh:xiao
bài hát
Đang chờ kết hợp: axiaosong Kết quả so sánh: axiaosong Phân tích: ^ xiao khớp với các chuỗi bắt đầu bằng "xiao".
$ được sử dụng như sau:
Ngôn ngữ chính thức: song$
Đang chờ kết hợp:xiaosong
Kết quả so sánh: xiaosong
Đang chờ kết hợp:xiaosonga Kết quả so sánh: Xiaosonga Phân tích: song$ khớp với chuỗi kết thúc bằng "song".
Sử dụng chung:
Cá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ả kết hợp: + a1b23 = 4ABC Phân tích: ^ [0-9a-zA-Z] {4,} $ kết hợp các con số hoặc chữ cái, và số lượng chữ số lớn hơn so với chuỗi bốn chữ số.
Lưu ý: ^ là âm nếu ở đầu tập hợp; nếu ở ngoài tập hợp, nó sẽ khớp với vị trí bắt đầu của chuỗi. Mọi người có thể thử sự khác biệt giữa [^0-9] và ^[0-9].
Tuy nhiên, có thể bật chế độ nhiều dòng. Trong chế độ nhiều dòng, công cụ biểu thức thường sẽ thay đổi ký tự thay thế như dấu phân ly của chuỗi, ^ sẽ phù hợp với đầu văn bản hoặc đầu một dòng, và $ có thể phù hợp với cuối văn bản hoặc cuối một dòng.
Hãy thay đổi ví dụ trước đây:
Các biểu thức chính thức: ((?m) ^ [0-9a-zA-Z] {4,} $
Đang chờ kết hợp văn bản: a1b234ABC +a1b23 = 4ABC ABC123456
Kết quả so sánh:a1b234ABC
+a1b23=4ABCABC123456
Phân tích: ((?m) ^ [0-9a-zA-Z]{4,} $ sẽ khớp với mỗi dòng sử dụng số hoặc chữ cái, và số lượng chữ số lớn hơn so với chuỗi bốn chữ số.
Lưu ý: Nếu sử dụng mô hình nhiều dòng, ((?m) phải được đặt ở đầu biểu thức chính thức. (?m) không được hỗ trợ trong hầu hết các thực hiện biểu thức chính thức. Một số thực hiện biểu thức chính thức cũng hỗ trợ sử dụng \A để bắt đầu chuỗi và \Z để kết thúc chuỗi. Nếu được hỗ trợ, các ký tự này có chức năng giống như ^, $.
Được chuyển từ cuốn sách ngắn iOS_Chosunoko