Regex trong Python
Bài đăng này đã không được cập nhật trong 6 năm
1. Regex là gì?
Regular expression (Regex) là một chuỗi miêu tả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định. Bạn cũng có thể gọi Regex là một ngôn ngữ. Và hầu như ngôn ngữ lập trình nào cũng hỗ trợ Regular expression.
2. Regex trong Python.
Regular Expression trong Python được thể hiện qua module re, re Module cung cấp sự hỗ trợ đầy đủ các Regular Expression trong Python. Module này tạo Exception là re.error nếu xảy ra một lỗi trong khi biên dịch hoặc khi sử dụng một Regular Expression. Để sử dụng re việc đầu tiên bạn cần phải import module re vào chương trình, sử dụng với cú pháp như sau:
import re
3. Sử dụng Regex với search(), match(), split()
3.1 re.match()
re.match(pattern, string, flags=0)
So khớp pattern với string với các flag tùy ý. Dưới đây là cú pháp cho hàm này.
Chi tiết về tham số:
pattern : Đây là chuỗn cần so khớp. string : Đây là chuỗi để tìm kiếm pattern cón tồn tại trong đó không. flags : Bạn có thể xác định các flag khác nhau bởi sử dụng toán tử |. Các modifier này sẽ được liệt kê ở bảng bên dưới.
Hàm re.match trả về một đối tượng match nếu thành công và trả về None nếu thất bại. Chúng ta sử dụng hàm group(num) hoặc groups() của đối tượng match để lấy biểu thức đã được so khớp (kết nối).
>>> m = re.match(r"(?P<first_name>\w+) (?P<last_name>\w+)", "Malcolm Reynolds")
>>> m.group('first_name')
'Malcolm'
>>> m.group('last_name')
'Reynolds'
3.2 re.search()
re.search(pattern, string, flags=0)
Phương thức này thực hiện tìm kiếm chuỗi so khớp trên string và nó sẽ trả về các giá trị được so khớp.
Trong đó:
pattern: là chuỗi regular expression. string: là chuỗi cần so khớp. flags: là các kiểu so khớp mà bạn muốn thực hiện. Nếu để trống thì flags sẽ bằng 0.
>>> email = "tony@tiremove_thisger.net"
>>> m = re.search("remove_this", email)
>>> email[:m.start()] + email[m.end():]
'tony@tiger.net'
3.4 re.split()
re.split(pattern, string, maxsplit=0, flags=0)
Trong đó:
pattern: là chuỗi regular expression. string: là chuỗi cần so khớp để loại bỏ pattern maxsplit: số phần chia giới hạn. Trong quá trình split khi số phần đã đến maxspit thì dừng lại và trả về mảng gồm các phần chia trước đó và chuỗi còn lại. flags: là các kiểu so khớp mà bạn muốn thực hiện. Nếu để trống thì flags sẽ bằng 0.
>>> re.split('[a-f]+', '0a3B9', flags=re.IGNORECASE)
['0', '3', '9']
3.3 Một số flag hay dùng trong Regular Expression
I hay IGNORECASE - Không phân biệt hoa thường khi tiến hành search hoặc match L hay LOCALE - So Khớp với local hiện tại. M hay MULTILINE - Thay đổi $ và ^ thành kết thúc của một dòng và bắt đầu của một dòng thay vì mặc định là kết thúc chuỗi và bắt đầu chuỗi. A hay ACSII - Thay đổi \w, \W, \b, \B, \d, \D, \S và \s thành so khơp full unicode. S hay DOTALL -Thay đổi pattern . thành khớp với bất kỳ ký tự nào và dòng mới. ...
4. Kết Luận
Regular Expression trong python còn rất nhiều nhưng trong bài này mình chỉ hướng dẫn các bạn sử dụng một số regex hay dùng trong python mong rằng nó giúp ích được các bạn.
xem thêm : https://viblo.asia/p/chia-se-10-regular-expression-huu-ich-ma-developer-nen-biet-Qbq5QJPLKD8 https://viblo.asia/p/cac-ki-tu-dac-biet-trong-regular-expressions-phan-2-ORNZqP6MK0n
All rights reserved