Hướng dẫn dùng regex help python
Biểu thức chính quy là gì? Biểu thức chính quy trong ngôn ngữ lập trình là các chuỗi ký tự đặc biệt được dùng để mô tả một mẫu tìm kiếm. Nó cực kỳ hữu ích trong việc trích xuất thông tin từ văn bản như mã nguồn, tệp tin, log (nhật ký), bảng tính hoặc thậm chí cả tài liệu. Trong khi sử dụng biểu thức chính quy, điều đầu tiên cần biết đó là về bản chất tất cả mọi thứ đều là ký tự, và chúng ta cần viết các mẫu để khớp với một tập những ký tự đặc biệt hay còn gọi là chuỗi. Ascii hoặc ký tự latinh là những ký tự nằm trên bàn phím của bạn, Unicode được sử dụng để khớp với các văn bản nước ngoài. Nó bao gồm các chữ số, dấu chấm câu và tất cả các ký tự đặc biệt như $ # @!%, ... Trong bài này, chúng ta sẽ tìm hiểu về
Ví dụ, một biểu thức chính quy có thể yêu cầu chương trình tìm kiếm một đoạn chữ cụ thể từ chuỗi sau đó in nó ra kết quả tương ứng. Một biểu thức có thể bao gồm:
Trong Python, một biểu thức chính quy được ký hiệu là RE (REs, regexes hoặc mẫu regex) được nạp thông qua mô-đun re. Python hỗ trợ biểu thức chính quy thông qua các thư viện. Trong Python biểu thức chính quy hỗ trợ nhiều ký tự khác nhau như ký tự sửa đổi (modifier), định danh (identifier) và khoảng trắng.
Cú pháp biểu thức chính quy
Chúng ta sẽ bắt đầu tìm hiểu về biểu thức chính quy trong bài tập đơn giản sau về cách sử dụng (w+) và (^). Ví dụ với biểu thức w + và ^
Chúng ta sẽ tìm hiểu một ví dụ về cách sử dụng biểu thức w+ và ^ trong mã nguồn. Chúng ta sẽ tìm hiểu hàm re.findall sau trong bài này, còn giờ chúng ta chỉ tập trung vào biểu thức \w+ và \^. Ví dụ: với chuỗi "guru99, education is fun" nếu chúng ta chạy chương trình với w+ và ^, nó sẽ trả về kết quả “guru99”.
Hãy nhớ rằng, nếu bạn xóa dấu + khỏi w+, kết quả sẽ thay đổi và nó sẽ chỉ đưa ra ký tự đầu tiên của từ đầu tiên, tức là [g]. Ví dụ về biểu thức \s trong hàm re.split
Để hiểu cách biểu thức chính quy này hoạt động trong Python, chúng ta bắt đầu với một ví dụ đơn giản về hàm split. Trong ví dụ này, chúng ta sẽ phân tách từng từ bằng cách sử dụng hàm "re.split" và đồng thời chúng ta cũng sử dụng biểu thức \s để tách mỗi từ thành một chuỗi riêng biệt. Khi bạn chạy đoạn mã trên, kết quả trả về sẽ là ['we', 'are', 'splitting', 'the', 'words']. Bây giờ, hãy xem điều gì xảy ra nếu bạn xóa "\" khỏi s. Sẽ không có chữ cái 's' trong đầu ra, điều này là do chúng ta đã xóa '\' khỏi chuỗi và chương trình sẽ hiểu "s" là một ký tự thông thường và do đó nó sẽ tách các từ ở bất cứ nơi nào nó tìm thấy "s" trong chuỗi. Tương tự, có một loạt các biểu thức chính quy khác trong Python mà bạn có thể sử dụng theo nhiều cách khác nhau như \d, \D, $, \., \b, v.v. Đây là đoạn mã hoàn chỉnh
Tiếp theo, chúng ta sẽ tìm hiểu các kiểu phương thức được sử dụng với các biểu thức chính quy. Sử dụng các phương thức của biểu thức chính quy Gói "re" cung cấp một số phương thức để thực hiện truy vấn trên chuỗi đầu vào. Chúng ta sẽ tìm hiểu các phương thức:
Lưu ý: Dựa trên các biểu thức chính quy, Python cung cấp hai thao tác nguyên thủy khác nhau. Phương thức match chỉ kiểm tra sự trùng khớp ở đầu chuỗi trong khi đó, phương thức search kiểm tra sự trùng khớp ở bất kỳ đâu trong chuỗi. Sử dụng re.match() Hàm match được sử dụng để khớp mẫu RE với chuỗi với các cờ tùy chọn. Trong phương thức này, biểu thức "w+" và "\W" sẽ khớp với các từ bắt đầu bằng chữ 'g' và sau đó, bất kỳ thứ gì không được bắt đầu bằng 'g' đều không được xác định. Để kiểm tra sự trùng khớp cho từng thành phần trong danh sách hoặc chuỗi, chúng ta sử dụng vòng lặp for. Tìm mẫu trong văn bản (re.search()) Một biểu thức chính quy thường được sử dụng để tìm kiếm một mẫu trong văn bản. Phương thức này có đầu vào là một mẫu biểu thức chính quy và một chuỗi, sau đó nó sẽ tìm kiếm sự xuất hiện của mẫu này trong chuỗi. Để sử dụng hàm search (), bạn cần nạp mô-đun re (import re) trước rồi mới thực thi mã. Hàm search() lấy "pattern - mẫu" và "text - văn bản" để quét từ chuỗi chính của chúng ta và trả về đối tượng khớp với mẫu cho trước (found a match) nếu tìm thấy hoặc trả về đối tượng không khớp (no match) với mẫu nếu không tìm thấy. Ví dụ ở đây, chúng ta tìm hai chuỗi "Software testing" và "guru99", trong chuỗi văn bản "Software testing is fun". Đối với "Software testing", chúng ta tìm thấy kết quả khớp do đó nó trả về đầu ra là "found a match”, trong khi đối với từ "guru99" chúng ta không thể tìm thấy trong chuỗi do đó nó trả về đầu ra là "no match". Sử dụng re.findall cho văn bản Mô-đun Re.findall () được sử dụng khi bạn muốn lặp quá trình tìm kiếm cho toàn bộ các dòng trong tệp, nó sẽ trả về một danh sách tất cả các kết quả khớp chỉ với một bước. Ví dụ: ở đây chúng ta có một danh sách các địa chỉ email và chúng ta muốn tất cả các địa chỉ email được lấy ra khỏi danh sách, chúng ta sử dụng phương thức re.findall. Nó sẽ tìm thấy tất cả các địa chỉ e-mail từ danh sách. Đây là đoạn mã hoàn chỉnh
Cờ trong Python Nhiều phương thức chính quy và các hàm chính quy có sử dụng một biến tùy chọn được gọi là cờ. Cờ này sẽ thay đổi ý nghĩa của mẫu biểu thức đã cho. Để hiểu thêm chúng ta cùng xem một vài ví dụ về các cờ này. Các cờ khác nhau được sử dụng trong Python bao gồm
Ví dụ về cờ re.M hoặc cờ Multiline Trong mẫu biểu thức multiline, ký tự mẫu [^] khớp với ký tự đầu tiên của chuỗi và đầu của mỗi dòng (ngay sau ký tự dòng mới). Trong khi biểu thức "w" nhỏ được sử dụng để đánh dấu khoảng trắng bằng ký tự. Khi bạn chạy mã, biến đầu tiên "k1" chỉ in ra ký tự 'g' cho từ guru99, trong khi nếu bạn thêm cờ multiline, nó sẽ tìm ra các ký tự đầu tiên của tất cả các thành phần trong chuỗi. Đây là mã
Tương tự, bạn cũng có thể sử dụng các cờ Python khác như re.U (Unicode), re.L (tuân theo ngôn ngữ sử dụng trong máy), re.X (cho phép chú thích), v.v. Ví dụ sử dụng Python 2 Các đoạn mã trên sử dụng Python3, nếu bạn muốn chạy với Python2, hãy sử dụng đoạn mã sau:
Tổng kết Biểu thức chính quy trong một ngôn ngữ lập trình là các chuỗi ký tự đặc biệt được dùng để mô tả một mẫu tìm kiếm. Nó bao gồm các chữ số và dấu chấm câu và tất cả các ký tự đặc biệt như $ # @!%, ... Biểu thức có thể thực hiện những việc như:
Trong Python, một biểu thức chính quy được ký hiệu là RE (REs, regexes hoặc regex mẫu) được nạp thông qua mô-đun re.
|