Cách sử dụng các hàm biểu thức chính quy do thư viện 're' cung cấp để khớp, tìm kiếm và thay thế văn bản trong các chương trình Python của bạn Show
Nhà văn cao cấp, InfoWorld. David Lofink (CC BY 2. 0)Biểu thức chính quy hoặc “regex” là một hệ thống tìm các mẫu phức tạp trong văn bản. Hầu hết mọi ngôn ngữ chính đều có hỗ trợ cho các biểu thức chính quy, dù là thư viện bổ trợ hay chức năng thư viện gốc Python đi kèm với hỗ trợ regex ngay lập tức, như một phần của thư viện chuẩn của nó. Tại đây, chúng ta sẽ xem nhanh thư viện biểu thức chính quy của Python và cách tận dụng tối đa thư viện này. Để biết thêm chi tiết về biểu thức chính quy nói chung, hãy xem phần giới thiệu này trong tài liệu Python [ Theo dõi các video hướng dẫn về Python thông minh của Serdar Yegulalp để tìm hiểu các thủ thuật Python thông minh trong 5 phút hoặc ít hơn ]Khái niệm cơ bản về regex PythonĐể bắt đầu sử dụng biểu thức chính quy trong Python, chỉ cần nhập thư viện biểu thức chính quy Python, import re4, được đưa vào như một phần của thư viện chuẩn của Python import re Cách dễ nhất để sử dụng import re4 là thực hiện các tìm kiếm nhanh chóng, sử dụng một biểu thức chính quy cụ thể đối với một chuỗi cụ thể. Đây là một ví dụ dễ dàng import re Ở đây, chúng tôi sử dụng biểu thức chính quy _______56, tìm kiếm chữ cái import re7 theo sau là bất kỳ số chữ số nào và sau đó là khoảng trắng. import re0 lấy biểu thức chính quy đó và tìm kiếm kết quả khớp đầu tiên với biểu thức đó trong chuỗi được cung cấp import re1. Trong ví dụ trên, trận đấu là import re2 Khi import re4 thực hiện một hoặc nhiều kết quả khớp, nó sẽ trả về cái được gọi là đối tượng khớp, là cấu trúc dữ liệu chứa nhiều thông tin chi tiết về kết quả trùng khớp. (Thông tin thêm về khớp các đối tượng trong một chút. ) Hầu hết thời gian, nếu bạn chỉ tìm kiếm kết quả phù hợp đầu tiên, thì bạn có thể lấy nó chỉ bằng cách lập chỉ mục vào đối tượng khớp như chúng tôi đã thực hiện ở trên (với chỉ mục import re4) Cuối cùng, lưu ý rằng chúng tôi đã sử dụng chuỗi thô Python để xây dựng biểu thức chính quy của mình. Điều này là do cú pháp của biểu thức chính quy, vì nó sử dụng dấu gạch chéo ngược, có thể xung đột với cách thoát chuỗi thông thường trong Python. Tiền tố import re5 trước chuỗi cho trình thông dịch Python biết, “Không hiểu dấu gạch chéo ngược là mã thoát. ” Nhiều cách khác để khớp bằng Python regeximport re0 không phải là cách duy nhất để tìm các mẫu trong văn bản với import re4 và đây không phải là cách linh hoạt nhất. Bốn phương pháp khác có sẵn trong import re4 có thể phù hợp hơn với trường hợp sử dụng của bạn
Nếu bạn đang tìm kiếm một trận đấu duy nhất, import re9 và import re01 cung cấp cho bạn hai tùy chọn hữu ích. Nếu biểu thức chính quy của bạn có khả năng tạo ra nhiều kết quả phù hợp, thì import re02 và import re09 sẽ cung cấp cho bạn hai cách khác nhau để sử dụng kết quả. Đây là một ví dụ sử dụng import re02 import re0 Biểu thức chính quy sử dụng nhiều ký tự theo cách dành riêng cho cú pháp biểu thức chính quy, chẳng hạn như dấu chấm ( import re11) hoặc dấu ngoặc nhọn ( import re12 và import re13). Nếu bạn muốn tìm kiếm những ký tự đó, bạn sẽ cần thoát chúng bằng dấu gạch chéo ngược trong biểu thức của mình. Nhưng nếu bạn đang làm việc với đầu vào tùy ý mà bạn muốn thoát tự động — ví dụ: bằng cách tìm kiếm một số đầu vào của người dùng — bạn có thể sử dụng import re14 để chuyển đổi một chuỗi thành phiên bản thoát biểu thức chính quy của nó Tìm kiếm và thay thế bằng Python regexBiểu thức chính quy cũng có thể được sử dụng để thực hiện các thao tác tìm kiếm và thay thế, với import re15. Đây là một ví dụ import re1 Regex này thay thế tất cả các lần xuất hiện của import re7 theo sau là bất kỳ số chữ số nào và sau đó là khoảng trắng bằng import re17, theo sau là các chữ số đó và dấu cách Lưu ý rằng tìm kiếm và thay thế thường sử dụng một số tính năng đặc biệt trong biểu thức chính quy. Phần ngoặc đơn của biểu thức chính quy được gọi là "nhóm chụp", đây là một cách để chọn ra và tham chiếu đến các phần của kết quả khớp. Chuỗi thay thế, import re18, sử dụng import re19 để chỉ nhóm chụp đầu tiên trong biểu thức so khớp — về cơ bản là nói: “Chèn nội dung của nhóm chụp đó vào đây. ” Khớp các đối tượng trong Python regexCác đối tượng đối sánh chứa thông tin về một đối sánh biểu thức chính quy cụ thể — vị trí trong chuỗi nơi tìm thấy đối sánh, nội dung của bất kỳ nhóm chụp nào đối với đối sánh, v.v. Bạn có thể làm việc với các đối tượng khớp bằng các phương thức này
Tùy chọn biểu thức chính quy PythonKhi tạo regex Python, bạn có thể chuyển một số tùy chọn kiểm soát hành vi của nó. Dưới đây là một số hữu ích nhất
Dưới đây là một ví dụ về cách các tùy chọn này có thể được sử dụng. Lưu ý rằng các tùy chọn này về cơ bản là các giá trị, vì vậy chúng được chuyển bằng cách kết hợp chúng với toán tử logic “và” ( import re09) import re0 Biên dịch trước các regex PythonNếu bạn đang thực hiện đối sánh cụm từ thông dụng chỉ một lần trong vòng đời của tập lệnh, thì việc sử dụng import re0 hoặc import re9 là tốt. Nhưng nếu bạn đang thực hiện nhiều lần khớp trong một tập lệnh hoặc thực hiện nhiều lần khớp trong một vòng lặp, thì sẽ có chi phí hiệu suất liên quan đến việc xác định lặp đi lặp lại các biểu thức chính quy. Trong những trường hợp như thế này, sẽ rất hợp lý khi sử dụng biểu thức chính quy được biên dịch sẵn Để tạo biểu thức chính quy được biên dịch sẵn, hãy sử dụng import re42. Truyền cho nó một chuỗi biểu thức chính quy và bạn sẽ nhận lại một đối tượng mà bạn có thể sử dụng như thể đó là chính đối tượng import re4 import re0 Trong ví dụ này, chúng tôi lặp qua một tập hợp các chuỗi để tìm trong mỗi chuỗi một hoặc nhiều lần xuất hiện của chữ cái import re7 và chữ cái ngay sau nó, sau đó lặp qua tất cả các kết quả khớp trên chuỗi đó cho biểu thức chính quy đó. Bởi vì chúng tôi đang sử dụng cùng một biểu thức chính quy trên mỗi lần lặp lại của vòng lặp, nên chỉ tạo đối tượng biểu thức chính quy một lần và sử dụng lại nó [ Cũng trên InfoWorld. 5 công cụ để dọn dẹp mã Python của bạn]Thư viện regex PythonThư viện import re4 có trong thư viện chuẩn của Python không phải là hệ thống biểu thức chính quy duy nhất có sẵn cho Python. Thư viện của bên thứ ba, import re46, cung cấp một số chức năng bổ sung. Chẳng hạn, import re47 có thể thực hiện khớp không phân biệt chữ hoa chữ thường trong Unicode. Tuy nhiên, tính năng quan trọng nhất của nó là có thể chạy đồng thời — nó có thể thực hiện các thao tác so khớp bên ngoài GIL của Python, vì vậy, các thao tác regex không chặn các luồng Python khác. Đối với mục đích sử dụng thông thường, thư viện _______54 thông thường vẫn ổn, nhưng hãy cân nhắc sử dụng import re46 nếu bạn thấy mình thực hiện nhiều trận đấu trong các vòng lặp chặt chẽ Có liên quan
Serdar Yegulalp là một nhà văn cao cấp tại InfoWorld, tập trung vào học máy, container hóa, devops, hệ sinh thái Python và đánh giá định kỳ Nhóm đối sánh () trong Python là gì?Khớp các đối tượng trong biểu thức chính quy Python
. group() trả về kết quả khớp từ chuỗi . Đây sẽ là a15 trong ví dụ đầu tiên của chúng tôi. cuộc thi đấu. bắt đầu() và khớp.
Làm cách nào để sử dụng các nhóm trong regex Python?Nhóm là một phần của mẫu biểu thức chính quy được đặt trong siêu ký tự dấu ngoặc đơn (). Chúng tôi tạo một nhóm bằng cách đặt mẫu biểu thức chính quy bên trong tập hợp các dấu ngoặc đơn ( và ) . Ví dụ: biểu thức chính quy (con mèo) tạo một nhóm duy nhất chứa các chữ cái 'c', 'a' và 't'.
Regex nhóm đối sánh là gì?Biểu thức chính quy cho phép chúng ta không chỉ đối sánh văn bản mà còn trích xuất thông tin để xử lý thêm. Điều này được thực hiện bằng cách xác định nhóm ký tự và ghi lại chúng bằng cách sử dụng dấu ngoặc đơn đặc biệt ( và ) siêu ký tự . Bất kỳ mẫu con nào bên trong một cặp dấu ngoặc đơn sẽ được ghi lại dưới dạng một nhóm.
Nhóm tìm kiếm lại Python là gì?Trong Python, tìm kiếm biểu thức chính quy thường được viết là. khớp = lại. search(pat, str) The re. phương thức search() lấy một mẫu biểu thức chính quy và một chuỗi rồi tìm kiếm mẫu đó trong chuỗi . Nếu tìm kiếm thành công, search() trả về một đối tượng khớp hoặc Không có gì khác. |