Lark hỗ trợ cú pháp RE2, và biểu thức chính quy mặc định phân biệt chữ hoa chữ thường.
Ví dụ về Regex
Các ví dụ sau đây minh họa cách sử dụng và xây dựng biểu thức chính quy đơn giản. Mỗi ví dụ bao gồm loại văn bản cần khớp, biểu thức chính quy được sử dụng để khớp văn bản đó, và các bình luận giải thích cách sử dụng các ký tự đặc biệt và định dạng.
- Chỉ khớp cụm từ chính xác
- Khớp các từ hoặc cụm từ trong danh sách
- Khớp các từ với các cách đánh vần khác nhau hoặc ký tự đặc biệt
- Khớp tất cả các địa chỉ email cho một miền cụ thể
- Khớp với tất cả các địa chỉ IP trong một phạm vi
- Khớp với các định dạng chữ và số
Phụ lục biểu thức
các loại biểu thức ký tự đơn | ví dụ |
bất kỳ ký tự nào, có thể bao gồm dòng mới (s=true) | . |
lớp ký tự | [xyz] |
lớp ký tự phủ định | [^xyz] |
lớp ký tự Perl | \d |
lớp ký tự Perl phủ định | \D |
lớp ký tự ASCII | [[:alpha:]] |
lớp ký tự ASCII phủ định | [[:^alpha:]] |
lớp ký tự Unicode (tên một chữ) | \pN |
lớp ký tự Unicode | \p{Greek} |
lớp ký tự Unicode phủ định (tên một chữ) | \PN |
lớp ký tự Unicode phủ định | \P{Greek} |
| Phức hợp |
xy | x theo sau bởi y |
x|y | x hoặc y (ưu tiên x) |
| Lặp lại |
x* | không hoặc nhiều hơn x, ưu tiên nhiều |
x+ | một hoặc nhiều hơn x, ưu tiên nhiều |
x? | không hoặc một x, ưu tiên một |
x{n,m} | n hoặc n+1 hoặc ... hoặc m x, ưu tiên nhiều |
x{n,} | n hoặc nhiều hơn x, ưu tiên nhiều |
x{n} | chính xác n x |
x*? | không hoặc nhiều hơn x, ưu tiên ít |
x+? | một hoặc nhiều hơn x, ưu tiên ít |
x?? | không hoặc một x, ưu tiên không |
x{n,m}? | n hoặc n+1 hoặc ... hoặc m x, ưu tiên ít |
x{n,}? | n hoặc nhiều hơn x, ưu tiên ít |
x{n}? | chính xác n x |
x{} | (≡ x*) (KHÔNG HỖ TRỢ) VIM |
x{-} | (≡ x*?) (KHÔNG HỖ TRỢ) VIM |
x{-n} | (≡ x{n}?) (KHÔNG HỖ TRỢ) VIM |
x= | (≡ x?) (KHÔNG HỖ TRỢ) VIM |
Giới hạn triển khai: Các hình thức đếm x{n,m}, x{n,}, và x{n} từ chối các hình thức tạo ra số lần lặp lại tối thiểu hoặc tối đa trên 1000. Số lần lặp lại không giới hạn không áp dụng cho giới hạn này.
| Lặp lại sở hữu |
x*+ | không hoặc nhiều hơn x, sở hữu (KHÔNG ĐƯỢC HỖ TRỢ) |
x++ | một hoặc nhiều hơn x, sở hữu (KHÔNG ĐƯỢC HỖ TRỢ) |
x?+ | không hoặc một x, sở hữu (KHÔNG ĐƯỢC HỖ TRỢ) |
x{n,m}+ | n hoặc ... hoặc m x, sở hữu (KHÔNG ĐƯỢC HỖ TRỢ) |
x{n,}+ | n hoặc Thêm x, sở hữu (KHÔNG ĐƯỢC HỖ TRỢ) |
x{n}+ | chính xác n x, sở hữu (KHÔNG ĐƯỢC HỖ TRỢ) |
| Cờ |
i | không phân biệt chữ hoa chữ thường (mặc định là sai) |
m | chế độ nhiều dòng: ^ và $ khớp với bắt đầu/kết thúc dòng cũng như bắt đầu/kết thúc văn bản (mặc định là sai) |
s | cho phép . khớp với \n (mặc định là sai) |
U | không tham lam: đổi ý nghĩa của x* và x*?, x+ và x+?, v.v. (mặc định là sai) |
Cú pháp cờ là xyz (đặt) hoặc -xyz (xóa) hoặc xy-z (đặt xy, xóa z).
| Nhóm |
(re) | nhóm bắt (phụ trợ) |
(?P<name>re) | nhóm bắt được đặt tên & số (phụ trợ) |
(?<name>re) | nhóm bắt được đặt tên & số (phụ trợ) (KHÔNG ĐƯỢC HỖ TRỢ) |
(?'name're) | nhóm bắt được đặt tên & số (phụ trợ) (KHÔNG ĐƯỢC HỖ TRỢ) |
(?:re) | nhóm không bắt |
(?flags) | đặt cờ trong nhóm hiện tại; không bắt |
(?flags:re) | đặt cờ trong re; không bắt |
(?#text) | bình luận (KHÔNG ĐƯỢC HỖ TRỢ) |
(?|x|y|z) | đặt lại số nhánh (KHÔNG ĐƯỢC HỖ TRỢ) |
(?>re) | khớp sở hữu của re (KHÔNG ĐƯỢC HỖ TRỢ) |
re@> | khớp sở hữu của re (KHÔNG ĐƯỢC HỖ TRỢ) VIM |
%(re) | nhóm không bắt (KHÔNG ĐƯỢC HỖ TRỢ) VIM |
| Chuỗi rỗng |
^ | ở đầu văn bản hoặc dòng (m=true) |
$ | ở cuối văn bản (giống \z không phải \Z) hoặc dòng (m=true) |
\A | ở đầu văn bản |
\b | tại ranh giới từ ASCII (\w ở một bên và \W, \A, hoặc \z ở bên kia) |
\B | không tại ranh giới từ ASCII |
\g | ở đầu văn bản con đang được tìm kiếm (KHÔNG HỖ TRỢ) PCRE |
\G | ở cuối lần khớp cuối cùng (KHÔNG HỖ TRỢ) PERL |
\Z | ở cuối văn bản, hoặc trước dòng mới ở cuối văn bản (KHÔNG HỖ TRỢ) |
\z | ở cuối văn bản |
(?=re) | trước văn bản khớp với re (KHÔNG HỖ TRỢ) |
(?!re) | trước văn bản không khớp với re (KHÔNG HỖ TRỢ) |
(?<=re) | sau văn bản khớp với re (KHÔNG HỖ TRỢ) |
(?<!re) | sau văn bản không khớp với re (KHÔNG HỖ TRỢ) |
re& | trước văn bản khớp với re (KHÔNG HỖ TRỢ) VIM |
re@= | trước văn bản khớp với re (KHÔNG HỖ TRỢ) VIM |
re@! | trước văn bản không khớp với re (KHÔNG HỖ TRỢ) VIM |
re@<= | sau văn bản khớp với re (KHÔNG HỖ TRỢ) VIM |
re@<! | sau văn bản không khớp với re (KHÔNG HỖ TRỢ) VIM |
\zs | đặt bắt đầu của khớp (= \K) (KHÔNG HỖ TRỢ) VIM |
\ze | đặt kết thúc của khớp (KHÔNG HỖ TRỢ) VIM |
\%^ | bắt đầu của tập tin (KHÔNG HỖ TRỢ) VIM |
\%$ | kết thúc của tập tin (KHÔNG HỖ TRỢ) VIM |
\%V | trên màn hình (KHÔNG HỖ TRỢ) VIM |
\%# | vị trí con trỏ (KHÔNG HỖ TRỢ) VIM |
\%'m | vị trí đánh dấu m (KHÔNG HỖ TRỢ) VIM |
\%23l | trong dòng 23 (KHÔNG HỖ TRỢ) VIM |
\%23c | trong cột 23 (KHÔNG HỖ TRỢ) VIM |
\%23v | trong cột ảo 23 (KHÔNG HỖ TRỢ) VIM |
| Chuỗi thoát |
\a | chuông (≡ \007) |
\f | ngắt trang (≡ \014) |
\t | tab ngang (≡ \011) |
\n | dòng mới (≡ \012) |
\r | trở về đầu dòng (≡ \015) |
\v | ký tự tab dọc (≡ \013) |
\* | ký tự *, cho bất kỳ ký tự dấu câu * |
\123 | mã ký tự bát phân (lên đến ba chữ số) |
\x7F | mã ký tự hex (đúng hai chữ số) |
\x{10FFFF} | mã ký tự hex |
\C | khớp một byte duy nhất ngay cả trong chế độ UTF-8 |
\Q...\E | văn bản nguyên bản ... ngay cả khi ... có dấu câu |
\1 | tham chiếu ngược (KHÔNG HỖ TRỢ) |
\b | phím backspace (KHÔNG HỖ TRỢ) (sử dụng \010) |
\cK | ký tự điều khiển ^K (KHÔNG HỖ TRỢ) (sử dụng \001 etc) |
\e | thoát (KHÔNG HỖ TRỢ) (sử dụng \033) |
\g1 | tham chiếu ngược (KHÔNG HỖ TRỢ) |
\g{1} | tham chiếu ngược (KHÔNG HỖ TRỢ) |
\g{+1} | tham chiếu ngược (KHÔNG HỖ TRỢ) |
\g{-1} | tham chiếu ngược (KHÔNG HỖ TRỢ) |
\g{name} | tham chiếu ngược có tên (KHÔNG HỖ TRỢ) |
\g<name> | lời gọi hàm con (KHÔNG HỖ TRỢ) |
\g'name' | lời gọi hàm con (KHÔNG HỖ TRỢ) |
\k<name> | tham chiếu ngược có tên (KHÔNG HỖ TRỢ) |
\k'name' | tham chiếu ngược có tên (KHÔNG HỖ TRỢ) |
\lX | X viết thường (KHÔNG HỖ TRỢ) |
\ux | x viết hoa (KHÔNG HỖ TRỢ) |
\L...\E | văn bản viết thường ... (KHÔNG HỖ TRỢ) |
\K | đặt lại bắt đầu của $0 (KHÔNG HỖ TRỢ) |
\N{name} | ký tự Unicode có tên (KHÔNG HỖ TRỢ) |
\R | ngắt dòng (KHÔNG HỖ TRỢ) |
\U...\E | văn bản viết hoa ... (KHÔNG HỖ TRỢ) |
\X | chuỗi Unicode mở rộng (KHÔNG HỖ TRỢ) |
\%d123 | ký tự thập phân 123 (KHÔNG HỖ TRỢ) VIM |
\%xFF | ký tự hex FF (KHÔNG HỖ TRỢ) VIM |
\%o123 | ký tự bát phân 123 (KHÔNG HỖ TRỢ) VIM |
\%u1234 | ký tự Unicode 0x1234 (KHÔNG HỖ TRỢ) VIM |
\%U12345678 | ký tự Unicode 0x12345678 (KHÔNG HỖ TRỢ) VIM |
| Yếu tố lớp ký tự |
x | ký tự đơn |
A-Z | Phạm vi ký tự (bao gồm) |
\d | Lớp ký tự Perl |
[:foo:] | Lớp ký tự ASCII foo |
\p{Foo} | Lớp ký tự Unicode Foo |
\pF | Lớp ký tự Unicode F (tên một chữ) |
| Lớp ký tự có tên như yếu tố lớp ký tự |
[\d] | số (≡ \d) |
[^\d] | không phải số (≡ \D) |
[\D] | không phải số (≡ \D) |
[^\D] | không phải không phải số (≡ \d) |
[[:name:]] | lớp ASCII có tên bên trong lớp ký tự (≡ [:name:]) |
[^[:name:]] | lớp ASCII có tên bên trong lớp ký tự phủ định (≡ [:^name:]) |
[\p{Name}] | tính chất Unicode có tên bên trong lớp ký tự (≡ \p{Name}) |
[^\p{Name}] | tính chất Unicode có tên bên trong lớp ký tự phủ định (≡ \P{Name}) |