Hướng dẫn how to use re ignorecase in python - cách sử dụng lại bỏ qua trong python
Cải thiện bài viết Show
Lưu bài viết Cải thiện bài viết Lưu bài viết Đọc Bàn luận This flag allows for case-insensitive matching of the Regular Expression with the given string i.e. expressions like def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)4 will match lowercase letters, too. Generally, It’s passed as an optional argument to def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)5. Trong bài viết này, chúng tôi sẽ tìm hiểu về cách sử dụng Python Regex để xác nhận tên bằng cách sử dụng ignorecase.
Examples: Input : Mr. Albus Severus Potter Output : Valid Input : Lily and Mr. Harry Potter Output : Invalid Tên đệm (tùy chọn), theo sau là một không gian duy nhất Since, we are using IGNORECASE flag, the first character of First, Second, and Last name may or may not be capital. Họ (tùy chọn) Lưu ý: Vì, chúng tôi đang sử dụng cờ ignorecase, ký tự đầu tiên của tên thứ nhất, thứ hai và tên cuối cùng có thể hoặc không thể là vốn. Dưới đây là mã Python - def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)6 def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)7 a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")8 a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")9 def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)8 def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)9 a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")0 a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")1 a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")2 a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")3 a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")4 a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")5 a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")6. a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")0 result = re.match(pattern, string)2 result = re.match(pattern, string)3 prog = re.compile(pattern) result = prog.match(string)7 prog = re.compile(pattern) result = prog.match(string)8 result = re.match(pattern, string)6 result = re.match(pattern, string)0 result = re.match(pattern, string)8 result = re.match(pattern, string)9 result = re.match(pattern, string)0 result = re.match(pattern, string)8 >>> re.split(r'\W+', 'Words, words, words.') ['Words', 'words', 'words', ''] >>> re.split(r'(\W+)', 'Words, words, words.') ['Words', ', ', 'words', ', ', 'words', '.', ''] >>> re.split(r'\W+', 'Words, words, words.', 1) ['Words', 'words, words.'] >>> re.split('[a-f]+', '0a3B9', flags=re.IGNORECASE) ['0', '3', '9']2 result = re.match(pattern, string)0 result = re.match(pattern, string)8 >>> re.split(r'\W+', 'Words, words, words.') ['Words', 'words', 'words', ''] >>> re.split(r'(\W+)', 'Words, words, words.') ['Words', ', ', 'words', ', ', 'words', '.', ''] >>> re.split(r'\W+', 'Words, words, words.', 1) ['Words', 'words, words.'] >>> re.split('[a-f]+', '0a3B9', flags=re.IGNORECASE) ['0', '3', '9']5 result = re.match(pattern, string)0 result = re.match(pattern, string)8 >>> re.split(r'\W+', 'Words, words, words.') ['Words', 'words', 'words', ''] >>> re.split(r'(\W+)', 'Words, words, words.') ['Words', ', ', 'words', ', ', 'words', '.', ''] >>> re.split(r'\W+', 'Words, words, words.', 1) ['Words', 'words, words.'] >>> re.split('[a-f]+', '0a3B9', flags=re.IGNORECASE) ['0', '3', '9']8 result = re.match(pattern, string)0 Output: Valid Invalid Valid valid Mã nguồn: lib/re/ Lib/re/ Mô -đun này cung cấp các hoạt động khớp biểu thức thường xuyên tương tự như các hoạt động được tìm thấy trong Perl. Cả hai mẫu và chuỗi sẽ được tìm kiếm có thể là chuỗi Unicode ( Valid Invalid Valid valid00) cũng như các chuỗi 8 bit ( Valid Invalid Valid valid01). Tuy nhiên, các chuỗi unicode và chuỗi 8 bit không thể được trộn lẫn: nghĩa là, bạn không thể khớp với một chuỗi unicode với mẫu byte hoặc ngược lại; Tương tự, khi yêu cầu thay thế, chuỗi thay thế phải cùng loại với cả mẫu và chuỗi tìm kiếm. Biểu thức chính quy sử dụng ký tự dấu gạch chéo ngược ( Valid Invalid Valid valid02) để biểu thị các hình thức đặc biệt hoặc cho phép các ký tự đặc biệt được sử dụng mà không cần gọi ý nghĩa đặc biệt của chúng. Điều này va chạm với việc sử dụng Python sườn của cùng một nhân vật cho cùng một mục đích trong các chữ viết; Ví dụ, để phù hợp với một dấu gạch chéo ngược theo nghĩa đen, người ta có thể phải viết Valid Invalid Valid valid03 dưới dạng chuỗi mẫu, bởi vì biểu thức thông thường phải là Valid Invalid Valid valid04 và mỗi dấu gạch chéo ngược phải được biểu thị dưới dạng Valid Invalid Valid valid04 trong một chuỗi python thông thường theo nghĩa đen. Ngoài ra, xin lưu ý rằng bất kỳ trình tự thoát hiểm không hợp lệ nào trong việc sử dụng Python, của dấu gạch chéo ngược trong các chữ viết hiện tại sẽ tạo ra Valid Invalid Valid valid06 và trong tương lai, điều này sẽ trở thành Valid Invalid Valid valid07. Hành vi này sẽ xảy ra ngay cả khi đó là một chuỗi thoát hợp lệ cho một biểu thức chính quy. Giải pháp là sử dụng ký hiệu chuỗi thô Python sườn cho các mẫu biểu thức thông thường; Backslashes không được xử lý theo bất kỳ cách đặc biệt nào trong một chuỗi theo nghĩa đen được đặt trước với Valid Invalid Valid valid08. Vì vậy, Valid Invalid Valid valid09 là một chuỗi hai ký tự chứa Valid Invalid Valid valid02 và Valid Invalid Valid valid11, trong khi Valid Invalid Valid valid12 là một chuỗi một ký tự có chứa một dòng mới. Thông thường các mẫu sẽ được thể hiện trong mã Python bằng cách sử dụng ký hiệu chuỗi thô này. Điều quan trọng cần lưu ý là hầu hết các hoạt động biểu thức chính quy đều có sẵn dưới dạng các hàm và phương thức cấp độ mô-đun trên các biểu thức được biên dịch thông thường. Các chức năng là các phím tắt mà don don yêu cầu bạn biên dịch một đối tượng Regex trước, nhưng bỏ lỡ một số tham số tinh chỉnh.compiled regular expressions. The functions are shortcuts that don’t require you to compile a regex object first, but miss some fine-tuning parameters. Xem thêm Mô-đun Regex của bên thứ ba, có API tương thích với mô-đun thư viện tiêu chuẩn Valid Invalid Valid valid13, nhưng cung cấp chức năng bổ sung và hỗ trợ Unicode kỹ lưỡng hơn. Biểu thức thông thường cú phápMột biểu thức chính quy (hoặc re) chỉ định một tập hợp các chuỗi phù hợp với nó; Các hàm trong mô -đun này cho phép bạn kiểm tra xem một chuỗi cụ thể có khớp với biểu thức chính quy nhất định không (hoặc nếu một biểu thức chính quy nhất định khớp với một chuỗi cụ thể, đi xuống cùng một điều). Biểu thức thông thường có thể được nối để tạo thành các biểu thức thông thường mới; Nếu A và B đều là biểu thức chính quy, thì AB cũng là một biểu thức chính quy. Nói chung, nếu chuỗi P khớp với A và một chuỗi Q khác khớp với B, chuỗi PQ sẽ khớp với AB. Điều này giữ trừ khi A hoặc B chứa các hoạt động ưu tiên thấp; điều kiện biên giữa a và b; hoặc đã đánh số tài liệu tham khảo nhóm. Do đó, các biểu thức phức tạp có thể dễ dàng được xây dựng từ các biểu thức nguyên thủy đơn giản hơn như các biểu thức được mô tả ở đây. Để biết chi tiết về lý thuyết và thực hiện các biểu thức thường xuyên, hãy tham khảo cuốn sách Friedl [FRIE09] hoặc gần như bất kỳ cuốn sách giáo khoa nào về xây dựng trình biên dịch.[Frie09], or almost any textbook about compiler construction. Một lời giải thích ngắn gọn về định dạng của các biểu thức thường xuyên sau. Để biết thêm thông tin và một bài thuyết trình nhẹ nhàng hơn, hãy tham khảo ý kiến biểu thức thường xuyên.Regular Expression HOWTO. Biểu thức chính quy có thể chứa cả các ký tự đặc biệt và thông thường. Hầu hết các ký tự thông thường, như Valid Invalid Valid valid14, Valid Invalid Valid valid15 hoặc Valid Invalid Valid valid16, là các biểu thức chính quy đơn giản nhất; Họ chỉ đơn giản là phù hợp với chính họ. Bạn có thể kết hợp các ký tự thông thường, vì vậy Valid Invalid Valid valid17 khớp với chuỗi Valid Invalid Valid valid18. . Một số ký tự, như Valid Invalid Valid valid21 hoặc Valid Invalid Valid valid22, là đặc biệt. Các ký tự đặc biệt là đại diện cho các lớp các ký tự thông thường hoặc ảnh hưởng đến cách các biểu thức chính quy xung quanh chúng được giải thích. Các toán tử hoặc định lượng lặp lại ( Valid Invalid Valid valid23, Valid Invalid Valid valid24, Valid Invalid Valid valid25, Valid Invalid Valid valid26, v.v.) không thể được lồng trực tiếp. Điều này tránh sự mơ hồ với hậu tố biến đổi không màu xanh lá cây Valid Invalid Valid valid25 và với các công cụ sửa đổi khác trong các triển khai khác. Để áp dụng sự lặp lại thứ hai cho sự lặp lại bên trong, dấu ngoặc đơn có thể được sử dụng. Ví dụ: biểu thức Valid Invalid Valid valid28 khớp với bất kỳ bội số nào của sáu ký tự Valid Invalid Valid valid15. Các nhân vật đặc biệt là: Valid Invalid Valid valid30 (Dot.) Trong chế độ mặc định, điều này phù hợp với bất kỳ ký tự nào ngoại trừ dòng mới. Nếu cờ Valid Invalid Valid valid31 đã được chỉ định, điều này phù hợp với bất kỳ ký tự nào bao gồm cả dòng mới. Valid Invalid Valid valid32 . Valid Invalid Valid valid34 Khớp với phần cuối của chuỗi hoặc ngay trước dòng mới ở cuối chuỗi và ở chế độ Valid Invalid Valid valid33 cũng khớp với một dòng mới. Valid Invalid Valid valid36 phù hợp với cả ‘foo, và‘ foobar, trong khi biểu thức thông thường Valid Invalid Valid valid37 chỉ khớp với ‘foo. Thú vị hơn, việc tìm kiếm Valid Invalid Valid valid38 trong Valid Invalid Valid valid39 khớp với ‘FOO2, thông thường, nhưng‘ FOO1, ở chế độ Valid Invalid Valid valid33; Tìm kiếm một Valid Invalid Valid valid34 trong Valid Invalid Valid valid42 sẽ tìm thấy hai khớp (trống): một ngay trước dòng mới và một ở cuối chuỗi. Valid Invalid Valid valid23 Làm cho RE kết quả khớp với 0 hoặc nhiều sự lặp lại của RE trước đó, càng nhiều lần lặp lại càng tốt. Valid Invalid Valid valid44 sẽ phù hợp với ‘A,’ ab, hoặc ‘A, sau đó là bất kỳ số lượng‘ Biên. Valid Invalid Valid valid24 Làm cho RE kết quả phù hợp với 1 hoặc nhiều sự lặp lại của Re trước. Valid Invalid Valid valid46 sẽ phù hợp với ’A, sau đó là bất kỳ số lượng‘ Biên nào; Nó sẽ không chỉ phù hợp với ’a. Valid Invalid Valid valid25 Làm cho kết quả RE khớp với 0 hoặc 1 lần lặp lại của Re trước. Valid Invalid Valid valid48 sẽ phù hợp với ‘A, hoặc‘ AB. Valid Invalid Valid valid49, Valid Invalid Valid valid50, Valid Invalid Valid valid51 Các định lượng Valid Invalid Valid valid52, Valid Invalid Valid valid53 và Valid Invalid Valid valid54 đều tham lam; Họ phù hợp với văn bản càng nhiều càng tốt. Đôi khi hành vi này không phải là mong muốn; Nếu RE Valid Invalid Valid valid55 được khớp với Valid Invalid Valid valid56, nó sẽ khớp với toàn bộ chuỗi và không chỉ Valid Invalid Valid valid57. Thêm Valid Invalid Valid valid25 sau khi bộ định lượng làm cho nó thực hiện trận đấu theo kiểu không xanh hoặc tối thiểu; Càng ít ký tự càng tốt sẽ được khớp. Sử dụng RE Valid Invalid Valid valid59 sẽ chỉ khớp với Valid Invalid Valid valid57. Valid Invalid Valid valid61, Valid Invalid Valid valid62, Valid Invalid Valid valid63 Giống như các bộ định lượng Valid Invalid Valid valid52, Valid Invalid Valid valid53 và Valid Invalid Valid valid54, những người trong đó Valid Invalid Valid valid53 được nối cũng khớp càng nhiều lần càng tốt. Tuy nhiên, không giống như các bộ định lượng tham lam thực sự, chúng không cho phép theo dõi ngược khi biểu thức theo sau nó không khớp. Chúng được gọi là định lượng sở hữu. Ví dụ, Valid Invalid Valid valid68 sẽ khớp với Valid Invalid Valid valid69 vì Valid Invalid Valid valid70 sẽ phù hợp với tất cả 4 Valid Invalid Valid valid15s, nhưng, khi lần cuối Valid Invalid Valid valid15 cuối cùng gặp phải, biểu thức được quay lại để cuối cùng Valid Invalid Valid valid70 kết thúc. Valid Invalid Valid valid15 cuối cùng. Tuy nhiên, khi Valid Invalid Valid valid77 được sử dụng để khớp với Valid Invalid Valid valid69, Valid Invalid Valid valid79 sẽ khớp với tất cả 4 Valid Invalid Valid valid15, nhưng khi cuối cùng Valid Invalid Valid valid15 không tìm thấy bất kỳ ký tự nào để phù hợp, biểu thức không thể được quay lại và do đó sẽ không khớp được. Valid Invalid Valid valid82, Valid Invalid Valid valid83 và Valid Invalid Valid valid84 tương đương với Valid Invalid Valid valid85, Valid Invalid Valid valid86 và Valid Invalid Valid valid87 tương ứng. Valid Invalid Valid valid88 Chỉ định rằng chính xác các bản sao m của RE trước đó phải được khớp; Ít trận đấu hơn khiến toàn bộ RE không phù hợp. Ví dụ: Valid Invalid Valid valid89 sẽ khớp chính xác sáu ký tự ____115, nhưng không phải năm ký tự. Valid Invalid Valid valid26 Làm cho RE kết quả phù hợp từ M đến N lặp lại của RE trước đó, cố gắng khớp với càng nhiều lần lặp lại càng tốt. Ví dụ: Valid Invalid Valid valid92 sẽ khớp từ 3 đến 5 Valid Invalid Valid valid15 ký tự. Bỏ qua M chỉ định giới hạn dưới bằng 0 và bỏ qua N chỉ định giới hạn trên vô hạn. Ví dụ, Valid Invalid Valid valid94 sẽ khớp với Valid Invalid Valid valid95 hoặc một nghìn ký tự Valid Invalid Valid valid15 theo sau là Valid Invalid Valid valid97, nhưng không phải Valid Invalid Valid valid98. Dấu phẩy có thể không bị bỏ qua hoặc công cụ sửa đổi sẽ bị nhầm lẫn với mẫu được mô tả trước đó. Valid Invalid Valid valid99 Làm cho RE kết quả phù hợp từ M đến N lặp lại của Re trước, cố gắng khớp với càng ít sự lặp lại càng tốt. Đây là phiên bản không màu xanh của bộ định lượng trước đó. Ví dụ: trên chuỗi 6 ký tự >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'00, Valid Invalid Valid valid92 sẽ khớp với 5 ký tự Valid Invalid Valid valid15, trong khi >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'03 sẽ chỉ khớp với 3 ký tự. >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'04 Làm cho RE kết quả khớp với các lần lặp lại của M đến N của RE trước đó, cố gắng khớp càng nhiều lần lặp lại càng tốt mà không cần thiết lập bất kỳ điểm quay lại nào. Đây là phiên bản sở hữu của bộ định lượng ở trên. Ví dụ, trên chuỗi 6 ký tự >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'00, >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'06 Cố gắng khớp 5 ký tự Valid Invalid Valid valid15, sau đó, yêu cầu thêm 2 Valid Invalid Valid valid15, sẽ cần nhiều ký tự hơn có sẵn và do đó thất bại, trong khi >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'09 sẽ khớp với Valid Invalid Valid valid92 và sau đó 2 Valid Invalid Valid valid15 cuối cùng được khớp với >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'13 cuối cùng trong mẫu. >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'14 tương đương với >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'15. Mới trong phiên bản 3.11. >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'16 Hoặc thoát khỏi các ký tự đặc biệt (cho phép bạn khớp các ký tự như Valid Invalid Valid valid52, Valid Invalid Valid valid54, v.v.) hoặc báo hiệu một chuỗi đặc biệt; Trình tự đặc biệt được thảo luận dưới đây. Nếu bạn không sử dụng một chuỗi thô để diễn đạt mẫu, hãy nhớ rằng Python cũng sử dụng dấu gạch chéo ngược như một chuỗi thoát trong các chữ viết; Nếu trình tự thoát được công nhận bởi trình phân tích cú pháp Python, thì dấu gạch chéo ngược và ký tự tiếp theo được bao gồm trong chuỗi kết quả. Tuy nhiên, nếu Python sẽ nhận ra chuỗi kết quả, dấu gạch chéo ngược nên được lặp lại hai lần. Điều này rất phức tạp và khó hiểu, vì vậy, nó rất khuyến khích bạn sử dụng các chuỗi thô cho tất cả nhưng các biểu thức đơn giản nhất. >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'19 Được sử dụng để chỉ ra một tập hợp các ký tự. Trong một tập hợp:
Đã thay đổi trong phiên bản 3.7: >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'53 is raised if a character set contains constructs that will change semantically in the future. >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'60 >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'61, trong đó A và B có thể là RES tùy ý, tạo ra một biểu thức chính quy sẽ khớp với A hoặc B. Một số lượng RES tùy ý có thể được phân tách bằng Valid Invalid Valid valid21 theo cách này. Điều này có thể được sử dụng bên trong các nhóm (xem bên dưới) là tốt. Khi chuỗi đích được quét, độ phân tách được phân tách bởi Valid Invalid Valid valid21 được thử từ trái sang phải. Khi một mẫu hoàn toàn phù hợp, nhánh đó được chấp nhận. Điều này có nghĩa là một khi A khớp, B sẽ không được kiểm tra thêm, ngay cả khi nó sẽ tạo ra một trận đấu tổng thể dài hơn. Nói cách khác, toán tử Valid Invalid Valid valid21 không bao giờ tham lam. Để phù hợp với nghĩa đen Valid Invalid Valid valid21, sử dụng >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'66 hoặc đặt nó bên trong một lớp ký tự, như trong >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'67. >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'68 Khớp với bất kỳ biểu thức chính quy nào nằm trong dấu ngoặc đơn, và chỉ ra sự khởi đầu và kết thúc của một nhóm; Nội dung của một nhóm có thể được truy xuất sau khi một trận đấu được thực hiện và có thể được khớp sau trong chuỗi với chuỗi đặc biệt >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'69, được mô tả bên dưới. Để phù hợp với các chữ Valid Invalid Valid valid22 hoặc >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'39, hãy sử dụng >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'72 hoặc >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'73 hoặc gửi chúng bên trong một lớp ký tự: >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'74, >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'75. >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'76 Đây là một ký hiệu mở rộng (A Valid Invalid Valid valid54 sau Valid Invalid Valid valid22 không có ý nghĩa nếu không). Nhân vật đầu tiên sau Valid Invalid Valid valid54 xác định ý nghĩa và cú pháp tiếp theo của cấu trúc là gì. Phần mở rộng thường không tạo ra một nhóm mới; >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'80 là ngoại lệ duy nhất cho quy tắc này. Sau đây là các phần mở rộng hiện được hỗ trợ. >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'81 . Các chữ cái đặt các cờ tương ứng: >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'89 (khớp ASCII-chỉ), >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'90 (trường hợp bỏ qua), >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'91 (phụ thuộc vào ngôn ngữ), >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'92 (đa dòng), >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'93 (DOT khớp với tất cả Verbose), cho toàn bộ biểu thức chính quy. . Cờ nên được sử dụng đầu tiên trong chuỗi biểu thức.Module Contents.) This is useful if you wish to include the flags as part of the regular expression, instead of passing a flag argument to the >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'96 function. Flags should be used first in the expression string. Đã thay đổi trong phiên bản 3.11: Công trình này chỉ có thể được sử dụng khi bắt đầu biểu thức.This construction can only be used at the start of the expression. >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'97 Một phiên bản không bắt giữ của dấu ngoặc đơn thông thường. Khớp với bất kỳ biểu thức chính quy nào nằm trong dấu ngoặc đơn, nhưng phần phụ mà nhóm không thể được truy xuất sau khi thực hiện một trận đấu hoặc được tham chiếu sau trong mẫu. >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'98 (0 hoặc nhiều chữ cái từ tập Valid Invalid Valid valid15, >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'83, >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'84, >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'22, >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'86, >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'87, >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'88, tùy chọn theo sau là >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'24 Cờ: >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'89 (ASCII-MÔ TẢ), >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'90 (trường hợp bỏ qua), >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'91 (phụ thuộc vào locale), >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'92 (đa dòng), >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'93 (DOT khớp với tất cả một phần của biểu thức. (Các cờ được mô tả trong nội dung mô -đun.)Module Contents.) Các chữ cái Valid Invalid Valid valid15, >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'84 và >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'87 là loại trừ lẫn nhau khi được sử dụng làm cờ nội tuyến, vì vậy chúng có thể được kết hợp hoặc theo dõi >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'24. Thay vào đó, khi một trong số chúng xuất hiện trong một nhóm nội tuyến, nó sẽ ghi đè chế độ phù hợp trong nhóm kèm theo. Trong các mẫu Unicode >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'22 chuyển sang khớp ASCII-MONY và >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'23 chuyển sang khớp Unicode (mặc định). Trong mẫu byte >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'24 chuyển sang địa phương tùy thuộc vào khớp và >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'22 chuyển sang khớp ASCII-chỉ (mặc định). Ghi đè này chỉ có hiệu lực cho nhóm nội tuyến hẹp và chế độ khớp ban đầu được khôi phục bên ngoài nhóm. Mới trong phiên bản 3.6. Đã thay đổi trong phiên bản 3.7: Các chữ cái Valid Invalid Valid valid15, >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'84 and >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'87 also can be used in a group. >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'29 Nỗ lực phù hợp với >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'30 như thể nó là một biểu thức chính quy riêng biệt và nếu thành công, tiếp tục khớp với phần còn lại của mẫu theo nó. Nếu mẫu tiếp theo không khớp, ngăn xếp chỉ có thể không được đưa ra một điểm trước >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'29 vì một khi đã thoát ra, biểu thức, được gọi là nhóm nguyên tử, đã vứt bỏ tất cả các điểm xếp chồng trong chính nó. Do đó, >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'32 sẽ không bao giờ khớp với bất cứ điều gì bởi vì trước tiên >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'33 sẽ phù hợp với tất cả các ký tự có thể, sau đó, không còn gì để phù hợp, cuối cùng Valid Invalid Valid valid30 sẽ không phù hợp. Vì không có điểm ngăn xếp nào được lưu trong nhóm nguyên tử và không có điểm ngăn xếp nào trước đó, toàn bộ biểu thức sẽ không khớp. Mới trong phiên bản 3.11. >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'80 Tương tự như dấu ngoặc đơn thông thường, nhưng phần phụ được khớp với tên nhóm có thể truy cập thông qua tên nhóm tượng trưng. Tên nhóm phải là định danh Python hợp lệ và mỗi tên nhóm chỉ được xác định một lần trong một biểu thức chính quy. Một nhóm tượng trưng cũng là một nhóm được đánh số, giống như nhóm không được đặt tên. Các nhóm được đặt tên có thể được tham chiếu trong ba bối cảnh. Nếu mẫu là >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'36 (nghĩa là khớp một chuỗi được trích dẫn với trích dẫn đơn hoặc đôi):
Không dùng nữa kể từ phiên bản 3.11: Tên nhóm chứa các ký tự không phải ASCII trong các mẫu byte.Group names containing non-ASCII characters in bytes patterns. >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'45 Một bản sao lưu cho một nhóm được đặt tên; Nó phù hợp với bất kỳ văn bản nào phù hợp với tên nhóm trước đó được đặt tên. >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'46 Một lời bình luận; Nội dung của dấu ngoặc đơn giản là bỏ qua. >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'47 Khớp nếu >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'30 khớp với tiếp theo, nhưng không tiêu thụ bất kỳ chuỗi nào. Đây được gọi là một khẳng định lookahead. Ví dụ: >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'49 sẽ chỉ khớp với >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'50 nếu nó theo sau là >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'51. >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'52 Phù hợp nếu >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'30 không phù hợp với tiếp theo. Đây là một khẳng định cái nhìn tiêu cực. Ví dụ: >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'54 sẽ chỉ khớp với >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'50 khi nó không theo sau là >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'51. >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'57 Khớp nếu vị trí hiện tại trong chuỗi được đi trước bởi một trận đấu cho >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'30 kết thúc ở vị trí hiện tại. Điều này được gọi là một khẳng định tầm nhìn tích cực. >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'59 sẽ tìm thấy một trận đấu trong >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'60, vì Lookbehind sẽ sao lưu 3 ký tự và kiểm tra xem mẫu chứa có khớp không. Mẫu chứa chỉ phải khớp với các chuỗi có độ dài cố định, nghĩa là >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'61 hoặc >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'62 được cho phép, nhưng không phải là Valid Invalid Valid valid70 và >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'64. Lưu ý rằng các mẫu bắt đầu với các xác nhận Lookehind tích cực sẽ không khớp khi bắt đầu chuỗi được tìm kiếm; Rất có thể bạn sẽ muốn sử dụng chức năng >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'65 thay vì hàm >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'66: >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def' Ví dụ này tìm kiếm một từ sau một dấu gạch nối: >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg' Đã thay đổi trong phiên bản 3.5: Đã thêm hỗ trợ cho các tài liệu tham khảo nhóm có độ dài cố định.Added support for group references of fixed length. >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'67 Khớp nếu vị trí hiện tại trong chuỗi không đi trước một trận đấu cho >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'30. Đây được gọi là một khẳng định tiêu cực. Tương tự như các khẳng định hướng tích cực, mẫu chứa chỉ phải khớp với một số chuỗi có độ dài cố định. Các mẫu bắt đầu với các xác nhận trông tiêu cực có thể khớp với đầu chuỗi được tìm kiếm. >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'69 Sẽ cố gắng khớp với >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'70 nếu nhóm có ID hoặc tên đã cho tồn tại và với >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'71 nếu nó không. >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'71 là tùy chọn và có thể được bỏ qua. Ví dụ: >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'73 là mẫu khớp email kém, sẽ phù hợp với >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'74 cũng như >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'75, nhưng không phải với >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'76 cũng không >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'77. Đã không dùng từ phiên bản 3.11: ID nhóm chứa bất cứ thứ gì ngoại trừ các chữ số ASCII.Group id containing anything except ASCII digits. Các chuỗi đặc biệt bao gồm Valid Invalid Valid valid02 và một ký tự từ danh sách dưới đây. Nếu ký tự thông thường không phải là chữ số ASCII hoặc chữ ASCII, thì kết quả sẽ phù hợp với ký tự thứ hai. Ví dụ, >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'79 khớp với ký tự >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'80. >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'69 Khớp với nội dung của nhóm của cùng một số. Các nhóm được đánh số bắt đầu từ 1. Ví dụ: >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'82 khớp với >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'83 hoặc >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'84, nhưng không phải >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'85 (lưu ý không gian sau nhóm). Trình tự đặc biệt này chỉ có thể được sử dụng để phù hợp với một trong 99 nhóm đầu tiên. Nếu chữ số đầu tiên của số là 0, hoặc số dài 3 chữ số, nó sẽ không được hiểu là khớp nhóm, nhưng là ký tự có số giá trị bát phân. Bên trong >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'54 và >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'50 của một lớp ký tự, tất cả các lối thoát số được coi là ký tự. >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'88 Chỉ khớp khi bắt đầu chuỗi. >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'89 Khớp với chuỗi trống, nhưng chỉ ở đầu hoặc cuối của một từ. Một từ được định nghĩa là một chuỗi các ký tự từ. Lưu ý rằng chính thức, >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'89 được định nghĩa là ranh giới giữa ký tự >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'40 và >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'92 (hoặc ngược lại) hoặc giữa >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'40 và đầu/đầu của chuỗi. Điều này có nghĩa là >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'94 khớp với >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'95, >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'96, >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'97, >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'98 nhưng không phải >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'99 hoặc \a \b \f \n \N \r \t \u \U \v \x \\00. Theo mặc định Unicode Alphanumerics là những người được sử dụng trong các mẫu Unicode, nhưng điều này có thể được thay đổi bằng cách sử dụng cờ >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'42. Ranh giới từ được xác định bởi địa phương hiện tại nếu cờ >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'43 được sử dụng. Bên trong một phạm vi ký tự, >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'89 đại diện cho ký tự backspace, để tương thích với các chữ Python. \a \b \f \n \N \r \t \u \U \v \x \\04 Khớp với chuỗi trống, nhưng chỉ khi nó không ở đầu hoặc cuối của một từ. Điều này có nghĩa là \a \b \f \n \N \r \t \u \U \v \x \\05 khớp với \a \b \f \n \N \r \t \u \U \v \x \\06, \a \b \f \n \N \r \t \u \U \v \x \\07, \a \b \f \n \N \r \t \u \U \v \x \\08, nhưng không phải \a \b \f \n \N \r \t \u \U \v \x \\09, \a \b \f \n \N \r \t \u \U \v \x \\10 hoặc \a \b \f \n \N \r \t \u \U \v \x \\11. \a \b \f \n \N \r \t \u \U \v \x \\04 hoàn toàn trái ngược với >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'89, vì vậy các ký tự từ trong các mẫu Unicode là Unicode Alphanumerics hoặc Undercore, mặc dù điều này có thể được thay đổi bằng cách sử dụng cờ >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'42. Ranh giới từ được xác định bởi địa phương hiện tại nếu cờ >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'43 được sử dụng. \a \b \f \n \N \r \t \u \U \v \x \\16 cho các mẫu Unicode (Str): Khớp với bất kỳ chữ số thập phân unicode nào (nghĩa là, bất kỳ ký tự nào trong danh mục ký tự Unicode [nd]). Điều này bao gồm \a \b \f \n \N \r \t \u \U \v \x \\17, và nhiều ký tự chữ số khác. Nếu cờ >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'42 chỉ được sử dụng \a \b \f \n \N \r \t \u \U \v \x \\17 được khớp.Cho các mẫu 8 bit (byte): Phù hợp với bất kỳ chữ số thập phân; Điều này tương đương với \a \b \f \n \N \r \t \u \U \v \x \\17. \a \b \f \n \N \r \t \u \U \v \x \\21 Phù hợp với bất kỳ ký tự nào không phải là một chữ số thập phân. Đây là điều ngược lại với \a \b \f \n \N \r \t \u \U \v \x \\16. Nếu cờ >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'42 được sử dụng, điều này sẽ trở thành tương đương với \a \b \f \n \N \r \t \u \U \v \x \\24. \a \b \f \n \N \r \t \u \U \v \x \\25 cho các mẫu Unicode (Str): Khớp với các ký tự khoảng trắng Unicode (bao gồm \a \b \f \n \N \r \t \u \U \v \x \\26 và cũng có nhiều ký tự khác, ví dụ như các không gian không phá vỡ được ủy quyền bởi các quy tắc typography bằng nhiều ngôn ngữ). Nếu cờ >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'42 được sử dụng, chỉ \a \b \f \n \N \r \t \u \U \v \x \\26 được khớp.Cho các mẫu 8 bit (byte): Phù hợp với bất kỳ chữ số thập phân; Điều này tương đương với \a \b \f \n \N \r \t \u \U \v \x \\17. >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'41 Phù hợp với bất kỳ ký tự nào không phải là một chữ số thập phân. Đây là điều ngược lại với \a \b \f \n \N \r \t \u \U \v \x \\16. Nếu cờ >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'42 được sử dụng, điều này sẽ trở thành tương đương với \a \b \f \n \N \r \t \u \U \v \x \\24. \a \b \f \n \N \r \t \u \U \v \x \\25 cho các mẫu Unicode (Str): Khớp với các ký tự khoảng trắng Unicode (bao gồm \a \b \f \n \N \r \t \u \U \v \x \\26 và cũng có nhiều ký tự khác, ví dụ như các không gian không phá vỡ được ủy quyền bởi các quy tắc typography bằng nhiều ngôn ngữ). Nếu cờ >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'42 được sử dụng, chỉ \a \b \f \n \N \r \t \u \U \v \x \\26 được khớp.Cho các mẫu 8 bit (byte): Phù hợp với bất kỳ chữ số thập phân; Điều này tương đương với \a \b \f \n \N \r \t \u \U \v \x \\17. >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'92 Khớp với bất kỳ ký tự nào không phải là một ký tự từ. Đây là điều ngược lại với >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'40. Nếu cờ >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'42 được sử dụng, điều này sẽ trở thành tương đương với \a \b \f \n \N \r \t \u \U \v \x \\42. Nếu cờ >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'43 được sử dụng, khớp các ký tự không phải là chữ và số trong địa phương hiện tại cũng như dấu gạch dưới. \a \b \f \n \N \r \t \u \U \v \x \\44 Chỉ khớp ở cuối chuỗi. Hầu hết các ESCAPES tiêu chuẩn được hỗ trợ bởi các chuỗi chuỗi Python cũng được chấp nhận bởi trình phân tích cú pháp biểu thức thông thường: \a \b \f \n \N \r \t \u \U \v \x \\ . \a \b \f \n \N \r \t \u \U \v \x \\46, \a \b \f \n \N \r \t \u \U \v \x \\47 và \a \b \f \n \N \r \t \u \U \v \x \\48 Trình tự thoát chỉ được nhận ra trong các mẫu Unicode. Trong các mẫu byte chúng là lỗi. Những lần thoát khỏi các chữ cái ASCII được dành riêng cho việc sử dụng trong tương lai và được coi là lỗi. Escapes octal được bao gồm trong một hình thức giới hạn. Nếu chữ số đầu tiên là 0, hoặc nếu có ba chữ số bát phân, thì nó được coi là một lối thoát bát phân. Nếu không, nó là một tham chiếu nhóm. Đối với các chuỗi chữ, thoát hiểm luôn luôn có chiều dài tối đa ba chữ số. Đã thay đổi trong phiên bản 3.3: Trình tự thoát \a \b \f \n \N \r \t \u \U \v \x \\46 and \a \b \f \n \N \r \t \u \U \v \x \\47 escape sequences have been added. Đã thay đổi trong phiên bản 3.6: Các lối thoát chưa biết bao gồm Valid Invalid Valid valid02 and an ASCII letter now are errors. Thay đổi trong phiên bản 3.8: Trình tự thoát \a \b \f \n \N \r \t \u \U \v \x \\52 escape sequence has been added. As in string literals, it expands to the named Unicode character (e.g. \a \b \f \n \N \r \t \u \U \v \x \\53). Nội dung mô -đunMô -đun xác định một số chức năng, hằng số và một ngoại lệ. Một số chức năng là phiên bản đơn giản hóa của các phương thức nổi bật đầy đủ cho các biểu thức thông thường được biên dịch. Hầu hết các ứng dụng không tầm thường luôn sử dụng biểu mẫu được biên dịch. CờĐã thay đổi trong phiên bản 3.6: Hằng số cờ hiện là các trường hợp là \a \b \f \n \N \r \t \u \U \v \x \\54, which is a subclass of \a \b \f \n \N \r \t \u \U \v \x \\55. Classre.Regexflag¶ re.RegexFlag¶ Một lớp \a \b \f \n \N \r \t \u \U \v \x \\55 chứa các tùy chọn regex được liệt kê dưới đây. Mới trong phiên bản 3.11: - được thêm vào \a \b \f \n \N \r \t \u \U \v \x \\57 Re.a¶ Re.ascii¶A¶ re.ASCII¶ Tạo >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'40, >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'92, >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'89, \a \b \f \n \N \r \t \u \U \v \x \\04, \a \b \f \n \N \r \t \u \U \v \x \\16, \a \b \f \n \N \r \t \u \U \v \x \\21, \a \b \f \n \N \r \t \u \U \v \x \\25 và >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'41 thực hiện khớp ASCII-chỉ khớp thay vì khớp unicode hoàn toàn. Điều này chỉ có ý nghĩa đối với các mẫu Unicode và bị bỏ qua cho các mẫu byte. Tương ứng với cờ nội tuyến \a \b \f \n \N \r \t \u \U \v \x \\66. Lưu ý rằng để tương thích ngược, cờ >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'94 vẫn tồn tại (cũng như từ đồng nghĩa của nó \a \b \f \n \N \r \t \u \U \v \x \\68 và đối tác nhúng của nó ). Re.debug¶DEBUG¶ Hiển thị thông tin gỡ lỗi về biểu thức biên dịch. Không có cờ nội tuyến tương ứng. Re.I¶ re.ignorecase¶I¶ re.IGNORECASE¶Thực hiện kết hợp không nhạy cảm trường hợp; Biểu thức như \a \b \f \n \N \r \t \u \U \v \x \\70 cũng sẽ phù hợp với các chữ cái viết thường. Kết hợp unicode đầy đủ (chẳng hạn như \a \b \f \n \N \r \t \u \U \v \x \\71 khớp \a \b \f \n \N \r \t \u \U \v \x \\72) cũng hoạt động trừ khi cờ \a \b \f \n \N \r \t \u \U \v \x \\73 được sử dụng để vô hiệu hóa các trận đấu không ASCII. Địa điểm hiện tại không thay đổi hiệu ứng của cờ này trừ khi cờ \a \b \f \n \N \r \t \u \U \v \x \\74 cũng được sử dụng. Tương ứng với cờ nội tuyến \a \b \f \n \N \r \t \u \U \v \x \\75. Lưu ý rằng khi các mẫu Unicode >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'25 hoặc \a \b \f \n \N \r \t \u \U \v \x \\70 được sử dụng kết hợp với cờ \a \b \f \n \N \r \t \u \U \v \x \\78, chúng sẽ khớp với 52 chữ cái ASCII và 4 chữ cái không ASCII bổ sung: ' 'ı' (U+0131, chữ nhỏ Latin Dotless i), 'ſ' (u+017f, chữ nhỏ Latin dài s) và 'k' (u+212a, dấu hiệu Kelvin). Nếu cờ >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'42 được sử dụng, chỉ có các chữ cái ‘A, thành‘ Z, và ‘A, với’ Z, được khớp. Re.l¶ Re.Locale¶L¶ re.LOCALE¶ Tạo >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'40, >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'92, >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'89, \a \b \f \n \N \r \t \u \U \v \x \\04 và khớp không nhạy cảm với trường hợp phụ thuộc vào địa phương hiện tại. Cờ này chỉ có thể được sử dụng với các mẫu byte. Việc sử dụng lá cờ này không được khuyến khích vì cơ chế địa phương rất không đáng tin cậy, nó chỉ xử lý một nền văn hóa của người Hồi giáo tại một thời điểm và nó chỉ hoạt động với các địa phương 8 bit. Kết hợp Unicode đã được bật theo mặc định trong Python 3 cho các mẫu Unicode (STR) và nó có thể xử lý các địa phương/ngôn ngữ khác nhau. Tương ứng với cờ nội tuyến \a \b \f \n \N \r \t \u \U \v \x \\84. Thay đổi trong phiên bản 3.6: \a \b \f \n \N \r \t \u \U \v \x \\74 can be used only with bytes patterns and is not compatible with \a \b \f \n \N \r \t \u \U \v \x \\73. Đã thay đổi trong phiên bản 3.7: Đã biên dịch các đối tượng biểu thức chính quy bằng cờ \a \b \f \n \N \r \t \u \U \v \x \\74 flag no longer depend on the locale at compile time. Only the locale at matching time affects the result of matching. Re.m¶ Re.Multiline¶M¶ re.MULTILINE¶ Khi được chỉ định, ký tự mẫu >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'44 khớp ở đầu chuỗi và ở đầu mỗi dòng (ngay sau mỗi dòng mới); và ký tự mẫu >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'80 khớp ở cuối chuỗi và ở cuối mỗi dòng (ngay trước mỗi dòng mới). Theo mặc định, >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'44 chỉ khớp với đầu chuỗi và >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'80 chỉ ở cuối chuỗi và ngay trước dòng mới (nếu có) ở cuối chuỗi. Tương ứng với cờ nội tuyến \a \b \f \n \N \r \t \u \U \v \x \\92. Re.noflag¶NOFLAG¶ Cho biết không có cờ được áp dụng, giá trị là \a \b \f \n \N \r \t \u \U \v \x \\93. Cờ này có thể được sử dụng làm giá trị mặc định cho đối số từ khóa chức năng hoặc là giá trị cơ sở sẽ có điều kiện với các cờ khác. Ví dụ về sử dụng làm giá trị mặc định: def myfunc(text, flag=re.NOFLAG): return re.match(text, flag) Mới trong phiên bản 3.11. Re.s¶ Re.Dotall¶S¶ re.DOTALL¶Làm cho nhân vật đặc biệt \a \b \f \n \N \r \t \u \U \v \x \\94 khớp với bất kỳ nhân vật nào, bao gồm cả dòng mới; Không có cờ này, \a \b \f \n \N \r \t \u \U \v \x \\94 sẽ khớp với bất cứ điều gì ngoại trừ một dòng mới. Tương ứng với cờ nội tuyến \a \b \f \n \N \r \t \u \U \v \x \\96. Re.x¶ Re.verbose¶X¶ re.VERBOSE¶ Cờ này cho phép bạn viết các biểu thức thông thường trông đẹp hơn và dễ đọc hơn bằng cách cho phép bạn các phần logic tách biệt trực quan của mẫu và thêm nhận xét. Khoảng trắng trong mẫu bị bỏ qua, ngoại trừ khi trong một lớp ký tự hoặc khi đi trước bởi một dấu gạch chéo ngược không được phân loại hoặc trong các mã thông báo như Valid Invalid Valid valid49, \a \b \f \n \N \r \t \u \U \v \x \\98 hoặc \a \b \f \n \N \r \t \u \U \v \x \\99. Ví dụ, def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)00 và def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)01 không được phép. Khi một dòng chứa một def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)02 không nằm trong một lớp ký tự và không được đặt trước bởi một dấu gạch chéo ngược không được phân loại, tất cả các ký tự từ phần ngoài cùng bên trái như vậy cho đến cuối dòng đều bị bỏ qua. Điều này có nghĩa là hai đối tượng biểu thức chính quy sau phù hợp với số thập phân có chức năng bằng nhau: a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*") Tương ứng với cờ nội tuyến def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)04. Chức năng¶re.compile (mẫu, cờ = 0) ¶compile(pattern, flags=0)¶Biên dịch một mẫu biểu thức chính quy thành một đối tượng biểu thức chính quy, có thể được sử dụng để kết hợp bằng cách sử dụng >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'66, >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'65 và các phương pháp khác, được mô tả dưới đây.regular expression object, which can be used for matching using its >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'66, >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'65 and other methods, described below. Hành vi biểu thức có thể được sửa đổi bằng cách chỉ định giá trị cờ. Các giá trị có thể là bất kỳ biến nào sau đây, kết hợp bằng bitwise hoặc (toán tử >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'60). Trình tự prog = re.compile(pattern) result = prog.match(string) tương đương với result = re.match(pattern, string) Nhưng sử dụng >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'96 và lưu đối tượng biểu thức chính quy kết quả để sử dụng lại hiệu quả hơn khi biểu thức sẽ được sử dụng nhiều lần trong một chương trình. Ghi chú Các phiên bản được biên dịch của các mẫu gần đây nhất được chuyển đến >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'96 và các hàm khớp cấp mô-đun được lưu trữ, vì vậy các chương trình chỉ sử dụng một vài biểu thức thông thường tại một thời điểm cần phải lo lắng về việc biên dịch các biểu thức chính quy. Re.Search (mẫu, chuỗi, cờ = 0) ¶search(pattern, string, flags=0)¶ Quét qua chuỗi Tìm kiếm vị trí đầu tiên nơi mẫu biểu thức chính quy tạo ra một khớp và trả về một đối tượng khớp tương ứng. Trả về def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)10 Nếu không có vị trí nào trong chuỗi phù hợp với mẫu; Lưu ý rằng điều này khác với việc tìm một trận đấu có độ dài bằng không tại một số điểm trong chuỗi.match object. Return def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)10 if no position in the string matches the pattern; note that this is different from finding a zero-length match at some point in the string. Re.match (mẫu, chuỗi, cờ = 0) ¶match(pattern, string, flags=0)¶ Nếu số không hoặc nhiều ký tự ở đầu chuỗi khớp với mẫu biểu thức chính quy, hãy trả về một đối tượng khớp tương ứng. Trả về def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)10 nếu chuỗi không khớp với mẫu; Lưu ý rằng điều này khác với một trận đấu có độ dài bằng không.match object. Return def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)10 if the string does not match the pattern; note that this is different from a zero-length match. Lưu ý rằng ngay cả trong chế độ Valid Invalid Valid valid33, def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)13 sẽ chỉ khớp ở đầu chuỗi chứ không phải ở đầu mỗi dòng. Nếu bạn muốn xác định vị trí đối sánh ở bất cứ đâu trong chuỗi, hãy sử dụng >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'65 thay thế (xem thêm search () so với match ()).search() vs. match()). re.fullmatch (mẫu, chuỗi, cờ = 0) ¶fullmatch(pattern, string, flags=0)¶ Nếu toàn bộ chuỗi khớp với mẫu biểu thức chính quy, hãy trả về một đối tượng khớp tương ứng. Trả về def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)10 nếu chuỗi không khớp với mẫu; Lưu ý rằng điều này khác với một trận đấu có độ dài bằng không.match object. Return def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)10 if the string does not match the pattern; note that this is different from a zero-length match. Mới trong phiên bản 3.4. Re.Split (mẫu, chuỗi, maxsplit = 0, cờ = 0) ¶split(pattern, string, maxsplit=0, flags=0)¶Chuỗi phân chia theo các lần xuất hiện của mẫu. Nếu chụp dấu ngoặc đơn được sử dụng trong mẫu, thì văn bản của tất cả các nhóm trong mẫu cũng được trả về như một phần của danh sách kết quả. Nếu MAXSplit là không khác biệt, tại hầu hết các phân tách MaxSplit xảy ra và phần còn lại của chuỗi được trả về làm yếu tố cuối cùng của danh sách. >>> re.split(r'\W+', 'Words, words, words.') ['Words', 'words', 'words', ''] >>> re.split(r'(\W+)', 'Words, words, words.') ['Words', ', ', 'words', ', ', 'words', '.', ''] >>> re.split(r'\W+', 'Words, words, words.', 1) ['Words', 'words, words.'] >>> re.split('[a-f]+', '0a3B9', flags=re.IGNORECASE) ['0', '3', '9'] Nếu có các nhóm bắt giữ trong dấu phân cách và nó khớp với đầu chuỗi, kết quả sẽ bắt đầu bằng một chuỗi trống. Tương tự giữ cho phần cuối của chuỗi: Valid Invalid Valid valid0 Bằng cách đó, các thành phần phân tách luôn được tìm thấy tại cùng một chỉ số tương đối trong danh sách kết quả. Các khớp trống cho mẫu chỉ chia chuỗi khi không liền kề với trận đấu trống trước đó. Valid Invalid Valid valid1 Đã thay đổi trong phiên bản 3.1: Đã thêm đối số cờ tùy chọn.Added the optional flags argument. Đã thay đổi trong phiên bản 3.7: Đã thêm hỗ trợ chia tách trên một mẫu có thể khớp với một chuỗi trống.Added support of splitting on a pattern that could match an empty string. re.findall (mẫu, chuỗi, cờ = 0) ¶findall(pattern, string, flags=0)¶Trả về tất cả các trận đấu không chồng chéo của mẫu trong chuỗi, như một danh sách các chuỗi hoặc bộ dữ liệu. Chuỗi được quét từ trái sang phải và các trận đấu được trả về theo thứ tự được tìm thấy. Các trận đấu trống được bao gồm trong kết quả. Kết quả phụ thuộc vào số lượng nhóm chụp trong mẫu. Nếu không có nhóm, hãy trả lại một danh sách các chuỗi phù hợp với toàn bộ mẫu. Nếu có chính xác một nhóm, hãy trả lại một danh sách các chuỗi khớp với nhóm đó. Nếu có nhiều nhóm có mặt, hãy trả lại một danh sách các bộ dữ liệu phù hợp với các nhóm. Các nhóm không bắt giữ không ảnh hưởng đến hình thức của kết quả. Valid Invalid Valid valid2 Đã thay đổi trong phiên bản 3.7: Các trận đấu không trống hiện có thể bắt đầu ngay sau trận đấu trống trước đó.Non-empty matches can now start just after a previous empty match. re.finditer (mẫu, chuỗi, cờ = 0) ¶finditer(pattern, string, flags=0)¶Trả về một iterator mang lại các đối tượng khớp trên tất cả các kết quả không chồng chéo cho mẫu RE trong chuỗi. Chuỗi được quét từ trái sang phải và các trận đấu được trả về theo thứ tự được tìm thấy. Các trận đấu trống được bao gồm trong kết quả.iterator yielding match objects over all non-overlapping matches for the RE pattern in string. The string is scanned left-to-right, and matches are returned in the order found. Empty matches are included in the result. Đã thay đổi trong phiên bản 3.7: Các trận đấu không trống hiện có thể bắt đầu ngay sau trận đấu trống trước đó.Non-empty matches can now start just after a previous empty match. Re.sub (mẫu, repl, chuỗi, đếm = 0, cờ = 0) ¶sub(pattern, repl, string, count=0, flags=0)¶Trả về chuỗi thu được bằng cách thay thế các lần xuất hiện không chồng chéo bên trái của mẫu trong chuỗi bằng cách thay thế. Nếu mẫu được tìm thấy, chuỗi được trả về không thay đổi. REPREP có thể là một chuỗi hoặc một hàm; Nếu đó là một chuỗi, bất kỳ dấu gạch chéo ngược nào thoát trong đó được xử lý. Đó là, def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)16 được chuyển đổi thành một ký tự mới, def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)17 được chuyển đổi thành một trở lại vận chuyển, v.v. Những lần thoát khỏi các chữ cái ASCII được dành riêng cho việc sử dụng trong tương lai và được coi là lỗi. Những trốn thoát chưa biết khác như def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)18 bị bỏ lại một mình. Các bản sao lưu, chẳng hạn như def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)19, được thay thế bằng chuỗi con phù hợp với nhóm 6 trong mẫu. Ví dụ: Valid Invalid Valid valid3 Nếu thay thế là một hàm, nó được gọi cho mọi lần xuất hiện không chồng chéo của mẫu. Hàm có một đối số đối tượng khớp và trả về chuỗi thay thế. Ví dụ:match object argument, and returns the replacement string. For example: Valid Invalid Valid valid4 Các mẫu có thể là một chuỗi hoặc một đối tượng mẫu.pattern object. Số lượng đối số tùy chọn là số lượng tối đa của các lần xuất hiện mẫu được thay thế; Đếm phải là một số nguyên không âm. Nếu bị bỏ qua hoặc không, tất cả các lần xuất hiện sẽ được thay thế. Các trận đấu trống cho mẫu chỉ được thay thế khi không liền kề với trận đấu trống trước đó, do đó def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)20 trả về def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)21. Trong các đối số thay thế loại chuỗi, ngoài các ký tự thoát ra và các bản sao lưu được mô tả ở trên, def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)22 sẽ sử dụng chuỗi con phù hợp với nhóm có tên def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)23, theo định nghĩa của cú pháp >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'80. def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)25 sử dụng số nhóm tương ứng; Do đó, def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)26 tương đương với def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)27, nhưng không phải là mơ hồ trong việc thay thế như def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)28. def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)29 sẽ được hiểu là tham chiếu đến nhóm 20, không phải là tham chiếu đến nhóm 2, sau đó là ký tự nghĩa đen Valid Invalid Valid valid16. Các bản thay thế lại def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)31 trong toàn bộ chuỗi con phù hợp với RE. Đã thay đổi trong phiên bản 3.1: Đã thêm đối số cờ tùy chọn.Added the optional flags argument. Thay đổi trong phiên bản 3.5: Các nhóm chưa từng có được thay thế bằng một chuỗi trống.Unmatched groups are replaced with an empty string. Đã thay đổi trong phiên bản 3.6: Các ESCAPES chưa biết trong mẫu bao gồm Valid Invalid Valid valid02 and an ASCII letter now are errors. Đã thay đổi trong phiên bản 3.7: Các lối thoát không xác định trong việc thay thế bao gồm Valid Invalid Valid valid02 and an ASCII letter now are errors. Đã thay đổi trong phiên bản 3.7: Các khớp trống cho mẫu được thay thế khi liền kề với trận đấu không trống trước đó.Empty matches for the pattern are replaced when adjacent to a previous non-empty match. Đã không dùng từ phiên bản 3.11: ID nhóm chứa bất cứ thứ gì ngoại trừ các chữ số ASCII. Tên nhóm chứa các ký tự không phải ASCII trong chuỗi thay thế byte.Group id containing anything except ASCII digits. Group names containing non-ASCII characters in bytes replacement strings. Re.subn (mẫu, repl, chuỗi, đếm = 0, cờ = 0) ¶subn(pattern, repl, string, count=0, flags=0)¶Thực hiện thao tác tương tự như def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)34, nhưng trả về một tuple def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)35. Đã thay đổi trong phiên bản 3.1: Đã thêm đối số cờ tùy chọn.Added the optional flags argument. Thay đổi trong phiên bản 3.5: Các nhóm chưa từng có được thay thế bằng một chuỗi trống.Unmatched groups are replaced with an empty string. Đã thay đổi trong phiên bản 3.6: Các ESCAPES chưa biết trong mẫu bao gồmValid Invalid Valid valid02 và một chữ cái ASCII hiện là lỗi.escape(pattern)¶ Đã thay đổi trong phiên bản 3.7: Các lối thoát không xác định trong việc thay thế bao gồm Valid Invalid Valid valid02 và một chữ cái ASCII hiện là lỗi. Valid Invalid Valid valid5 Đã thay đổi trong phiên bản 3.7: Các khớp trống cho mẫu được thay thế khi liền kề với trận đấu không trống trước đó. Valid Invalid Valid valid6 Đã không dùng từ phiên bản 3.11: ID nhóm chứa bất cứ thứ gì ngoại trừ các chữ số ASCII. Tên nhóm chứa các ký tự không phải ASCII trong chuỗi thay thế byte.The def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)38 character is no longer escaped. Re.subn (mẫu, repl, chuỗi, đếm = 0, cờ = 0) ¶Only characters that can have special meaning in a regular expression are escaped. As a result, def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)39, def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)40, def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)41, def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)42, def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)43, def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)44, def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)45, def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)46, >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'76, def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)48, >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'77, def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)50, and def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)51 are no longer escaped. Thực hiện thao tác tương tự như def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)34, nhưng trả về một tuple def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)35.purge()¶ Re.escape (mẫu) Thoát khỏi các ký tự đặc biệt trong mẫu. Điều này rất hữu ích nếu bạn muốn khớp với một chuỗi theo nghĩa đen tùy ý có thể có các metacharacters biểu thức thông thường trong đó. Ví dụ:Chức năng này không được sử dụng cho chuỗi thay thế trongdef myfunc(text, flag=re.NOFLAG): return re.match(text, flag)34 và def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)37, chỉ nên thoát khỏi các dấu gạch chéo ngược. Ví dụ: re.error(msg, pattern=None, pos=None)¶ Đã thay đổi trong phiên bản 3.3: ký tự def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)38 không còn thoát ra được. Thay đổi trong phiên bản 3.7: Chỉ các ký tự có thể có ý nghĩa đặc biệt trong một biểu thức chính quy được thoát ra. Kết quả là, def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)39, def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)40, def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)41, def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)42, def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)43, def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)44, def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)45, def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)46, >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'76, def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)48, >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'77, ____.¶ Re.purge () Xóa bộ đệm biểu thức thông thường.¶Ngoại lệ ha Exceptionre.error (MSG, MPLENT = none, POS = none) ¶¶Ngoại lệ được nêu ra khi một chuỗi được truyền cho một trong các hàm ở đây không phải là biểu thức chính quy hợp lệ (ví dụ, nó có thể chứa dấu ngoặc đơn chưa từng có) hoặc khi một số lỗi khác xảy ra trong quá trình biên dịch hoặc khớp. Nó không bao giờ là một lỗi nếu một chuỗi không có khớp với một mẫu. Trường hợp lỗi có các thuộc tính bổ sung sau: tin nhắn¶Thông báo lỗi chưa được định dạng. họa tiết¶¶Các mẫu biểu thức chính quy. vị của nước nàyAdded additional attributes. Chỉ số trong mẫu trong đó biên dịch không thành công (có thể là def myfunc(text, flag=re.NOFLAG): return re.match(text, flag) 10).vải mỏng Dòng tương ứng với POS (có thể làdef myfunc(text, flag=re.NOFLAG): return re.match(text, flag)10).search(string[, pos[, endpos]])¶ một thứ lớn tiếngmatch object. Return def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)10 if no position in the string matches the pattern; note that this is different from finding a zero-length match at some point in the string. Cột tương ứng với POS (có thể là def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)10). Đã thay đổi trong phiên bản 3.5: Đã thêm các thuộc tính bổ sung. Valid Invalid Valid valid7 Đối tượng biểu thức chính quymatch(string[, pos[, endpos]])¶ Nếu số không hoặc nhiều ký tự ở đầu chuỗi khớp với biểu thức chính quy này, hãy trả về một đối tượng khớp tương ứng. Trả về def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)10 nếu chuỗi không khớp với mẫu; Lưu ý rằng điều này khác với một trận đấu có độ dài bằng không.match object. Return def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)10 if the string does not match the pattern; note that this is different from a zero-length match. Các tham số POS và EndPOS tùy chọn có cùng ý nghĩa với phương thức >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'65. Valid Invalid Valid valid8 Nếu bạn muốn xác định vị trí đối sánh ở bất cứ đâu trong chuỗi, hãy sử dụng >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'65 thay thế (xem thêm search () so với match ()).search() vs. match()). Mẫu.FullMatch (String [, Pos [, EndPos]])fullmatch(string[, pos[, endpos]])¶ Nếu toàn bộ chuỗi khớp với biểu thức chính quy này, hãy trả về một đối tượng khớp tương ứng. Trả về def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)10 nếu chuỗi không khớp với mẫu; Lưu ý rằng điều này khác với một trận đấu có độ dài bằng không.match object. Return def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)10 if the string does not match the pattern; note that this is different from a zero-length match. Các tham số POS và EndPOS tùy chọn có cùng ý nghĩa với phương thức >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'65. Valid Invalid Valid valid9 Nếu bạn muốn xác định vị trí đối sánh ở bất cứ đâu trong chuỗi, hãy sử dụng Nếu toàn bộ chuỗi khớp với biểu thức chính quy này, hãy trả về một đối tượng khớp tương ứng. Trả về def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)10 nếu chuỗi không khớp với mẫu; Lưu ý rằng điều này khác với một trận đấu có độ dài bằng không. Mới trong phiên bản 3.4.findall(string[, pos[, endpos]])¶ Mẫu.split (chuỗi, maxsplit = 0) ¶ Giống hệt với hàmdef myfunc(text, flag=re.NOFLAG): return re.match(text, flag)66, sử dụng mẫu được biên dịch.finditer(string[, pos[, endpos]])¶ Mẫu.findall (chuỗi [, pos [, endpos]]) ¶ Tương tự như hàmdef myfunc(text, flag=re.NOFLAG): return re.match(text, flag)67, sử dụng mẫu được biên dịch, nhưng cũng chấp nhận các tham số POS và EndPOS tùy chọn giới hạn vùng tìm kiếm như >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'65.sub(repl, string, count=0)¶ Mẫu.finditer (chuỗi [, pos [, endpos]]) ¶ Tương tự như hàmdef myfunc(text, flag=re.NOFLAG): return re.match(text, flag)69, sử dụng mẫu được biên dịch, nhưng cũng chấp nhận các tham số POS và EndPOS tùy chọn giới hạn vùng tìm kiếm như >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'65.subn(repl, string, count=0)¶ Mẫu.sub (repl, chuỗi, đếm = 0) ¶ Giống hệt với hàmdef myfunc(text, flag=re.NOFLAG): return re.match(text, flag)34, sử dụng mẫu được biên dịch.flags¶ Mẫu.subn (repl, chuỗi, đếm = 0) ¶ Giống hệt với hàmdef myfunc(text, flag=re.NOFLAG): return re.match(text, flag)37, sử dụng mẫu được biên dịch.groups¶ Mẫu.flags¶ Các lá cờ phù hợp với regex. Đây là sự kết hợp của các cờ được cung cấp chodef myfunc(text, flag=re.NOFLAG): return re.match(text, flag)73, bất kỳ cờ nội tuyến >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'76 nào trong mẫu và các cờ ẩn như def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)75 nếu mẫu là chuỗi Unicode.groupindex¶ Mẫu.groups¶ Số lượng các nhóm chụp trong mẫu.pattern¶Mẫu.groupindex¶ Một bản đồ từ điển lập bản đồ bất kỳ tên nhóm tượng trưng nào được xác định bởi def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)77 and def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)78. Compiled regular expression objects are considered atomic. Mẫu.Potyern¶Chuỗi mẫu mà từ đó đối tượng mẫu được biên dịch. >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'0 Đã thay đổi trong phiên bản 3.7: Đã thêm hỗ trợ của def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)77 và def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)78. Biên dịch các đối tượng biểu thức chính quy được xem xét nguyên tử. Khớp đối tượng lorexpand(template)¶ Các đối tượng khớp luôn có giá trị boolean là def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)79. Vì >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'66 và >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'65 trả về def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)10 Khi không có khớp, bạn có thể kiểm tra xem có một trận đấu với câu lệnh def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)83 đơn giản: Đối tượng khớp hỗ trợ các phương thức và thuộc tính sau:Unmatched groups are replaced with an empty string. Match.expand (mẫu) ¶group([group1, ...])¶Trả về chuỗi thu được bằng cách thực hiện thay thế Backslash trên mẫu chuỗi mẫu, như được thực hiện bằng phương thức def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)34. Các lối thoát như def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)16 được chuyển đổi thành các ký tự thích hợp và các bản sao lưu số ( >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'38, def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)27) và được đặt tên là Backreferences ( >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'43, def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)22) được thay thế bằng nội dung của nhóm tương ứng. >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'1 Nếu biểu thức chính quy sử dụng cú pháp >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'80, các đối số nhóm cũng có thể là các chuỗi xác định các nhóm theo tên nhóm của chúng. Nếu một đối số chuỗi không được sử dụng làm tên nhóm trong mẫu, ngoại lệ def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)90 sẽ được nêu ra. Một ví dụ phức tạp vừa phải: >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'2 Các nhóm được đặt tên cũng có thể được đề cập bởi chỉ mục của họ: >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'3 Nếu một nhóm khớp với nhiều lần, chỉ có thể truy cập được trận đấu cuối cùng: >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'4 Khớp .__ getItem __ (g) ¶__getitem__(g)¶ Điều này giống hệt với def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)94. Điều này cho phép truy cập dễ dàng hơn vào một nhóm cá nhân từ một trận đấu: >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'5 Các nhóm được đặt tên cũng được hỗ trợ: >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'6 Mới trong phiên bản 3.6. Match.groups (mặc định = none) ¶groups(default=None)¶Trả về một tuple chứa tất cả các nhóm nhỏ của trận đấu, từ 1 trở lên tuy nhiên nhiều nhóm nằm trong mẫu. Đối số mặc định được sử dụng cho các nhóm không tham gia vào trận đấu; Nó mặc định là def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)10. Ví dụ: >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'7 Nếu chúng ta thực hiện vị trí thập phân và mọi thứ sau khi nó tùy chọn, không phải tất cả các nhóm có thể tham gia vào trận đấu. Các nhóm này sẽ mặc định là def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)10 trừ khi đối số mặc định được đưa ra: >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'8 Match.groupdict (mặc định = none) ¶groupdict(default=None)¶ Trả về một từ điển chứa tất cả các nhóm nhỏ được đặt tên của trận đấu, được khóa bởi tên phân nhóm. Đối số mặc định được sử dụng cho các nhóm không tham gia vào trận đấu; Nó mặc định là def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)10. Ví dụ: >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'9 Match.start ([nhóm]) ¶ match.end ([nhóm]) ¶start([group])¶ Match.end([group])¶ Trả về các chỉ số của phần bắt đầu và kết thúc của chuỗi con phù hợp với nhóm; Nhóm mặc định về 0 (có nghĩa là toàn bộ chuỗi con phù hợp). Trả lại def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)98 nếu nhóm tồn tại nhưng không đóng góp cho trận đấu. Đối với một đối tượng khớp m và nhóm G đã đóng góp cho trận đấu, phần phụ phù hợp với nhóm G (tương đương với def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)94) là >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'0 Lưu ý rằng a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")00 sẽ bằng a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")01 nếu nhóm khớp với chuỗi null. Ví dụ, sau a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")02, a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")03 là 1, a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")04 là 2, a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")05 và a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")06 đều là 2 và a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")07 làm tăng ngoại lệ def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)90. Một ví dụ sẽ loại bỏ Remove_this khỏi địa chỉ email: >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'1 Match.span ([nhóm]) ¶span([group])¶ Đối với một trận đấu M, trả lại 2-Tuple a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")09. Lưu ý rằng nếu nhóm không đóng góp cho trận đấu, đây là a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")10. Nhóm mặc định về 0, toàn bộ trận đấu. Match.Pos¶pos¶ Giá trị của POS được chuyển đến phương thức >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'65 hoặc >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'66 của một đối tượng regex. Đây là chỉ mục vào chuỗi mà động cơ RE bắt đầu tìm kiếm một trận đấu.regex object. This is the index into the string at which the RE engine started looking for a match. Match.endpos¶endpos¶ Giá trị của các endpos được chuyển đến phương thức >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'65 hoặc >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'66 của một đối tượng regex. Đây là chỉ mục vào chuỗi mà động cơ RE sẽ không đi.regex object. This is the index into the string beyond which the RE engine will not go. Match.lastindex¶lastindex¶ Chỉ số số nguyên của nhóm bắt giữ phù hợp cuối cùng, hoặc def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)10 nếu không có nhóm nào được khớp. Ví dụ: các biểu thức a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")16, a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")17 và a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")18 sẽ có a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")19 nếu được áp dụng cho chuỗi a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")20, trong khi biểu thức a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")21 sẽ có a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")22, nếu được áp dụng cho cùng một chuỗi. Match.lastgroup¶lastgroup¶ Tên của nhóm bắt giữ phù hợp cuối cùng, hoặc def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)10 nếu nhóm không có tên, hoặc nếu không có nhóm nào được khớp. Khớp.re¶re¶ Đối tượng biểu thức chính quy có phương pháp >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'66 hoặc >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'65 đã tạo ra thể hiện đối sánh này.regular expression object whose >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'66 or >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'65 method produced this match instance. Match.String¶string¶ Chuỗi được chuyển đến >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'66 hoặc >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'65. Đã thay đổi trong phiên bản 3.7: Đã thêm hỗ trợ của def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)77 and def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)78. Match objects are considered atomic. Ví dụ biểu hiện chính quyKiểm tra một cặpTrong ví dụ này, chúng tôi sẽ sử dụng chức năng trợ giúp sau để hiển thị các đối tượng phù hợp hơn một chút một cách duyên dáng hơn một chút: >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'2 Giả sử bạn đang viết một chương trình poker trong đó bàn tay của người chơi được thể hiện dưới dạng chuỗi 5 ký tự với mỗi nhân vật đại diện cho một thẻ, một cách Càng Tiên cho 10, và 2 2, thông qua 9 9, đại diện cho thẻ có giá trị đó. Để xem liệu một chuỗi đã cho là một bàn tay hợp lệ, người ta có thể làm như sau: >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'3 Tay cuối cùng đó, a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")30, chứa một cặp hoặc hai thẻ có giá trị giống nhau. Để phù hợp với biểu thức thông thường, người ta có thể sử dụng các bản sao lưu như vậy: >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'4 Để tìm hiểu thẻ nào mà cặp bao gồm, người ta có thể sử dụng phương thức a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")31 của đối tượng đối sánh theo cách sau: >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'5 Mô phỏng scanf ()Python hiện không có tương đương với a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")32. Các biểu thức thông thường thường mạnh mẽ hơn, mặc dù cũng nhiều hơn so với các chuỗi định dạng a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")32. Bảng dưới đây cung cấp một số ánh xạ tương đương hoặc ít hơn giữa các mã thông báo định dạng a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")32 và các biểu thức thông thường.
Để trích xuất tên tệp và số từ một chuỗi như >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'6 bạn sẽ sử dụng định dạng a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")32 như >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'7 Biểu thức chính quy tương đương sẽ là >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'8 search () so với match ()Python cung cấp hai hoạt động nguyên thủy khác nhau dựa trên các biểu thức thông thường: def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)13 chỉ kiểm tra một trận đấu ở đầu chuỗi, trong khi a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")60 kiểm tra đối sánh ở bất cứ đâu trong chuỗi (đây là những gì Perl làm theo mặc định). Ví dụ: >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'9 Các biểu thức thông thường bắt đầu bằng >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'44 có thể được sử dụng với >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'65 để hạn chế trận đấu ở đầu chuỗi: \a \b \f \n \N \r \t \u \U \v \x \\0 Tuy nhiên, lưu ý rằng ở chế độ Valid Invalid Valid valid33 >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'66 chỉ khớp với đầu chuỗi, trong khi sử dụng >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'65 với biểu thức chính quy bắt đầu với >>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'44 sẽ khớp ở đầu mỗi dòng. \a \b \f \n \N \r \t \u \U \v \x \\1 Làm một danh bạdef myfunc(text, flag=re.NOFLAG): return re.match(text, flag)66 chia một chuỗi thành một danh sách được phân định bởi mẫu được truyền. Phương pháp này là vô giá để chuyển đổi dữ liệu văn bản thành các cấu trúc dữ liệu có thể dễ dàng đọc và sửa đổi bởi Python như được trình bày trong ví dụ sau tạo ra một danh bạ. Đầu tiên, đây là đầu vào. Thông thường nó có thể đến từ một tệp, ở đây chúng tôi đang sử dụng cú pháp chuỗi được trích xuất ba \a \b \f \n \N \r \t \u \U \v \x \\2 Các mục được phân tách bằng một hoặc nhiều dòng mới. Bây giờ chúng tôi chuyển đổi chuỗi thành một danh sách với mỗi dòng không có giá trị có mục nhập riêng: \a \b \f \n \N \r \t \u \U \v \x \\3 Cuối cùng, chia mỗi mục vào một danh sách với tên, họ, số điện thoại và địa chỉ. Chúng tôi sử dụng tham số a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")68 của def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)66 vì địa chỉ có khoảng trắng, mẫu phân tách của chúng tôi, trong đó: \a \b \f \n \N \r \t \u \U \v \x \\4 Mẫu a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")70 khớp với dấu hai chấm sau tên cuối cùng, do đó nó không xảy ra trong danh sách kết quả. Với a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")68 của a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")72, chúng tôi có thể tách số nhà khỏi tên đường phố: \a \b \f \n \N \r \t \u \U \v \x \\5 Nhắn tin MUNGING¶def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)34 thay thế mọi lần xuất hiện của một mẫu bằng một chuỗi hoặc kết quả của một hàm. Ví dụ này thể hiện bằng cách sử dụng def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)34 với chức năng cho văn bản của Mung Munge, hoặc ngẫu nhiên thứ tự của tất cả các ký tự trong mỗi từ của một câu ngoại trừ các ký tự đầu tiên và cuối cùng: \a \b \f \n \N \r \t \u \U \v \x \\6 Tìm tất cả các trạng từdef myfunc(text, flag=re.NOFLAG): return re.match(text, flag)67 phù hợp với tất cả các lần xuất hiện của một mẫu, không chỉ mô hình đầu tiên như >>> m = re.search(r'(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg'65. Ví dụ: nếu một người viết muốn tìm tất cả các trạng từ trong một số văn bản, họ có thể sử dụng def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)67 theo cách sau: \a \b \f \n \N \r \t \u \U \v \x \\7 Tìm tất cả các trạng từ và vị trí của chúngNếu người ta muốn nhiều thông tin hơn về tất cả các trận đấu của một mẫu so với văn bản phù hợp, def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)69 rất hữu ích vì nó cung cấp các đối tượng phù hợp thay vì chuỗi. Tiếp tục với ví dụ trước, nếu một nhà văn muốn tìm tất cả các trạng từ và vị trí của chúng trong một số văn bản, họ sẽ sử dụng def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)69 theo cách sau:match objects instead of strings. Continuing with the previous example, if a writer wanted to find all of the adverbs and their positions in some text, they would use def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)69 in the following manner: \a \b \f \n \N \r \t \u \U \v \x \\8 Ký hiệu chuỗi thôKý hiệu chuỗi thô ( a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")80) giữ cho các biểu thức thường xuyên lành mạnh. Không có nó, mọi dấu gạch chéo ngược ( Valid Invalid Valid valid02) trong một biểu thức chính quy sẽ phải được đặt trước với một biểu thức khác để thoát khỏi nó. Ví dụ: hai dòng mã sau đây có chức năng giống hệt nhau: \a \b \f \n \N \r \t \u \U \v \x \\9 Khi một người muốn kết hợp một dấu gạch chéo ngược theo nghĩa đen, nó phải được thoát trong biểu thức thông thường. Với ký hiệu chuỗi thô, điều này có nghĩa là a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")82. Không có ký hiệu chuỗi thô, người ta phải sử dụng a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")83, tạo các dòng mã sau giống hệt nhau về mặt chức năng: def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)0 Viết Tokenizer¶Một tokenizer hoặc máy quét phân tích một chuỗi để phân loại các nhóm ký tự. Đây là bước đầu tiên hữu ích khi viết trình biên dịch hoặc trình thông dịch. Các danh mục văn bản được chỉ định với các biểu thức thông thường. Kỹ thuật này là kết hợp những người đó thành một biểu thức thông thường chính và lặp lại các trận đấu liên tiếp: def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)1 Tokenizer tạo ra đầu ra sau: def myfunc(text, flag=re.NOFLAG): return re.match(text, flag)2Frie09 Friedl, Jeffrey. Làm chủ các biểu thức thường xuyên. Tái bản lần thứ 3, O hèReilly Media, 2009. Phiên bản thứ ba của cuốn sách không còn bao gồm Python, nhưng phiên bản đầu tiên bao gồm viết các mẫu biểu thức thông thường tốt rất chi tiết. Re iddecase trong Python là gì?lại. IGNORECASE: Cờ này cho phép khớp không nhạy cảm với biểu thức thông thường với chuỗi đã cho, tức là các biểu thức như [A-Z] cũng sẽ khớp với các chữ cái viết thường. Nói chung, nó được thông qua như một đối số tùy chọn để tái. biên dịch ().This flag allows for case-insensitive matching of the Regular Expression with the given string i.e. expressions like [A-Z] will match lowercase letters, too. Generally, It's passed as an optional argument to re. compile() .
Làm thế nào để tìm kiếm lại hoạt động trong Python?Phương thức Python Regex re.Search () tìm kiếm sự xuất hiện của mẫu regex bên trong toàn bộ chuỗi mục tiêu và trả về thể hiện đối tượng đối tượng tương ứng nơi đối sánh tìm thấy.Re.Search () chỉ trả về trận đấu đầu tiên với mẫu từ chuỗi đích.looks for occurrences of the regex pattern inside the entire target string and returns the corresponding Match Object instance where the match found. The re.search() returns only the first match to the pattern from the target string.
Làm thế nào để chia re hoạt động trong python?Chia () hoạt động.Ở đó.Chức năng phân tách () Chức năng chia chuỗi đã cho theo sự xuất hiện của một ký tự hoặc mẫu cụ thể.Khi tìm mẫu, hàm này trả về các ký tự còn lại từ chuỗi trong danh sách.splits the given string according to the occurrence of a particular character or pattern. Upon finding the pattern, this function returns the remaining characters from the string in a list.
Reat () return là gì?khớp () hàm.Khi được cung cấp một biểu thức thông thường, Re.hàm match () kiểm tra chuỗi được khớp cho một mẫu trong regex và trả về lần xuất hiện đầu tiên của một mẫu phù hợp như vậy.Hàm này chỉ kiểm tra một trận đấu ở đầu chuỗi.the first occurrence of such a pattern match. This function only checks for a match at the beginning of the string. |