Regex trong Python
Trong các dự án, việc ràng buộc thông tin người dùng nhập lên là điều rất cần thiết và quan trọng. Và hôm nay eLib.VN sẽ cùng bạn đọc tìm hiểu về Regex trong Python xem nó được sử dụng như thế nào nhé!
Mục lục nội dung
1. Regex trong Python
Biểu thức chính quy (Regular Expressions) hay Regex trong Python có thể được định nghĩa là chuỗi các ký tự được sử dụng để tìm kiếm một mẫu trong chuỗi. Mô-đun re cung cấp hỗ trợ để sử dụng regex trong chương trình python. Mô-đun re bắn ra một ngoại lệ nếu có lỗi xảy ra trong khi sử dụng biểu thức chính quy.
Bạn càn phải import mô-đun re để sử dụng các chức năng regex trong python.
import re
2. Các hàm Regex
Các hàm regex sau được sử dụng trong Python.
STT | Hàm | Mô tả |
---|---|---|
1 | match | Hàm này khớp với mẫu regex trong chuỗi với cờ tùy chọn. Nó trả về true nếu một kết quả khớp được tìm thấy trong chuỗi nếu không nó trả về false. |
2 | search | Hàm này trả về đối tượng khớp nếu có một kết quả khớp được tìm thấy trong chuỗi. |
3 | findall | Nó trả về một danh sách chứa tất cả các kết quả khớp của một mẫu trong chuỗi. |
4 | split | Trả về một danh sách trong đó chuỗi đã được phân chia theo mỗi kết quả khớp. |
5 | sub | Thay thế một hoặc nhiều kết quả khớp trong chuỗi. |
3. Xây dựng biểu thức chính quy
Một biểu thức chính quy có thể được hình thành bằng cách sử dụng kết hợp các meta-character, ký tự đặc biệt và set.
Meta-Characters
Metacharacter là một ký tự có ý nghĩa nhất định:
Metacharacter | Mô tả | Ví dụ |
---|---|---|
[] | Nó đại diện cho một tập các ký tự. | "[a-z]" |
\ | Nó đại diện cho ký tự đặc biệt. | "\r" |
. | Nó đại diện cho bất kỳ ký tự nào xuất hiện ở một số nơi cụ thể. | "Ja.v." |
^ | Nó đại diện cho mẫu có mặt ở đầu chuỗi. | "^Java" |
$ | Nó đại diện cho mẫu có mặt ở cuối chuỗi. | "viettuts" |
* | Nó đại diện cho không hoặc nhiều lần xuất hiện của một mẫu trong chuỗi. | "hello*" |
+ | Nó đại diện cho một hoặc nhiều lần xuất hiện của một mẫu trong chuỗi. | "hello+" |
{} | Số lần xuất hiện đã chỉ định của một mẫu trong chuỗi. | "java{2}" |
| | Nó biểu diễn cho cái này hoặc cái kia (điều kiện or). | "python2|python3" |
() | Nhóm các thành phần. |
Ký tự đặc biệt
Ký tự đặt biệt là các chuỗi có chứa \ theo sau là một trong các ký tự.
Ký tự | Mô tả |
---|---|
\A | Nó trả về một kết quả khớp nếu các ký tự được chỉ định có mặt ở đầu chuỗi. |
\b | Nó trả về một kết quả khớp nếu các ký tự được chỉ định có mặt ở đầu hoặc cuối chuỗi. |
\B | Nó trả về một kết quả khớp nếu các ký tự được chỉ định có mặt ở đầu chuỗi nhưng không ở cuối chuỗi. |
\d | Nó trả về một kết quả khớp nếu chuỗi chứa các chữ số [0-9]. |
\D | Nó trả về một kết quả khớp nếu chuỗi không chứa các chữ số [0-9]. |
\s | Nó trả về một kết quả khớp nếu chuỗi chứa bất kỳ ký tự khoảng trắng nào. |
\S | Nó trả về một kết quả khớp nếu chuỗi không chứa bất kỳ ký tự khoảng trắng nào. |
\w | Nó trả về một kết quả khớp nếu chuỗi chứa bất kỳ ký tự từ nào. |
\W | Nó trả về một kết quả khớp nếu chuỗi không chứa bất kỳ từ nào. |
\Z | Trả về một kết quả khớp nếu các ký tự được chỉ định ở cuối chuỗi. |
Set
Một set là một nhóm các ký tự được đưa ra bên trong một cặp dấu ngoặc vuông. Nó đại diện cho ý nghĩa đặc biệt.
STT | Set | Mô tả |
---|---|---|
1 | [arn] | Trả về một kết quả khớp nếu chuỗi chứa bất kỳ ký tự nào được chỉ định trong tập hợp. |
2 | [a-n] | Trả về một kết quả khớp nếu chuỗi chứa bất kỳ ký tự nào từ a đến n. |
3 | [^arn] | Trả về một kết quả khớp nếu chuỗi chứa các ký tự ngoại trừ a, r và n. |
4 | [0123] | Trả về một kết quả khớp nếu chuỗi chứa bất kỳ chữ số nào được chỉ định. |
5 | [0-9] | Trả về một kết quả khớp nếu chuỗi chứa bất kỳ chữ số nào trong khoảng từ 0 đến 9. |
6 | [0-5][0-9] | Trả về một kết quả khớp nếu chuỗi chứa bất kỳ chữ số nào trong khoảng từ 00 đến 59. |
10 | [a-zA-Z] | Trả về một kết quả khớp nếu chuỗi chứa bất kỳ bảng chữ cái nào (chữ thường hoặc chữ hoa). |
4. Hàm findall()
Phương thức này trả về một danh sách chứa danh sách tất cả các kết quả khớp của mẫu trong chuỗi. Nó trả về các mẫu theo thứ tự chúng được tìm thấy. Nếu không có kết quả khớp, thì một danh sách trống được trả về. Ví dụ:
import re
str = "Xin chào Bạn! Bạn đang học bài Regex trong Python."
matches = re.findall("Bạn", str)
print(matches)
Kết quả:
['Bạn', 'Bạn']
5. Đối tượng Match (kết quả khớp)
Đối tượng match chứa thông tin về tìm kiếm và đầu ra. Nếu không tìm thấy kết quả khớp, đối tượng None được trả về. Ví dụ:
import re
str = "Xin chào Bạn! Bạn đang học bài Regex trong Python."
matches = re.search("Bạn", str)
print(type(matches))
print(matches)
Kết quả:
Các phương thức đối tượng Match
Có các phương thức sau liên quan đến đối tượng Match.
- span(): Nó trả về bộ dữ liệu chứa vị trí bắt đầu và kết thúc của kết quả khớp.
- string(): Nó trả về một chuỗi được truyền vào hàm.
- group(): Một phần của chuỗi được trả về nơi tìm thấy kết quả khớp.
Ví dụ:
import re
str = "Xin chào Bạn! Bạn đang học bài Regex trong Python."
matches = re.search("Bạn", str)
print(matches.span())
print(matches.group())
print(matches.string)
Kết quả:
(9, 12)
Bạn
Xin chào Bạn! Bạn đang học bài Regex trong Python.
Trên đây là bài viết của eLib.VN về Regex trong Python. Hy vọng qua bài này bạn sẽ hiểu và vận dụng trong quá trình học tập và làm việc với Python. Chúc các bạn thành công!
Tham khảo thêm
- doc Date và Time trong Python
- doc Hàm trong Python
- doc Module trong Python
- doc File I/O trong Python
- doc Xử lý ngoại lệ trong Python
- doc Module collection trong Python
- doc Module math trong Python
- doc Module OS trong Python
- doc Module statistics trong Python
- doc Module random & sys trong Python
- doc IDE phổ biến trong lập trình Python