Nội dung chính
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
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. |
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). |
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']
Đố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.