Trong Python, Regular Expressions (biểu thức chính quy) là một công cụ mạnh mẽ cho việc xử lý và kiểm tra các chuỗi. Biểu thức chính quy cho phép người lập trình thiết lập các mẫu tìm kiếm phức tạp để khớp với các chuỗi ký tự dựa trên những điều kiện nhất định. Đây là một công cụ rất hữu ích trong nhiều tình huống khác nhau, chẳng hạn như phân tích cú pháp các tệp log, xác minh đầu vào người dùng hoặc trích xuất dữ liệu từ văn bản.
Khởi đầu với Regular Expressions trong Python
Để làm việc với biểu thức chính quy trong Python, bạn cần sử dụng module re
. Đây là module tiêu chuẩn được tích hợp sẵn trong Python, không cần cài đặt thêm.
import re
Các phương thức cơ bản
Dưới đây là một số phương thức phổ biến của module re
:
- re.match(): Kiểm tra xem một chuỗi có phù hợp với mẫu ở đầu chuỗi hay không.
- re.search(): Tìm kiếm chuỗi để khớp với mẫu ở bất kỳ vị trí nào.
- re.findall(): Tìm tất cả các mục khớp với mẫu và trả về chúng trong một danh sách.
- re.sub(): Thay thế các mẫu khớp trong chuỗi bằng một chuỗi khác.
Ví dụ về re.match():
pattern = r'^hello'
text = 'hello world'
match = re.match(pattern, text)
if match:
print('Chuỗi bắt đầu bằng "hello"')
else:
print('Chuỗi không bắt đầu bằng "hello"')
Sử dụng re.search()
Phương thức re.search()
kiểm tra toàn bộ chuỗi để tìm vị trí mà mẫu xuất hiện.
pattern = r'world'
text = 'hello world'
match = re.search(pattern, text)
if match:
print('Tìm thấy từ "world" trong chuỗi')
else:
print('Không tìm thấy từ "world" trong chuỗi')
Tìm tất cả các khớp với re.findall()
Phương thức re.findall()
trả về tất cả các kết quả khớp tìm được trong chuỗi.
pattern = r'\d+'
text = 'Có 2 con mèo và 3 con chó.'
matches = re.findall(pattern, text)
print('Các số trong chuỗi:', matches)
Thay thế bằng re.sub()
Phương thức re.sub()
được sử dụng để thay thế các mục khớp trong chuỗi bằng một chuỗi khác.
pattern = r'\bcon\b'
text = 'Có 2 con mèo và 3 con chó.'
new_text = re.sub(pattern, 'con vật', text)
print('Chuỗi sau khi thay thế:', new_text)
Các ký tự đặc biệt trong Regular Expressions
- .`: Bất kỳ ký tự nào ngoại trừ ký tự xuống dòng.
- ^: Bắt đầu của chuỗi.
- $: Kết thúc của chuỗi.
- *: Không hoặc nhiều lần xuất hiện của mẫu trước đó.
- +: Một hoặc nhiều lần xuất hiện của mẫu trước đó.
- ?: Không hoặc một lần xuất hiện của mẫu trước đó.
- \d: Bất kỳ chữ số nào (0-9).
- \w: Bất kỳ ký tự chữ cái hoặc chữ số (a-z, A-Z, 0-9, _).
- \s: Bất kỳ ký tự khoảng trắng nào.
Ứng dụng thực tế
Biểu thức chính quy có rất nhiều ứng dụng thực tế, chẳng hạn như:
- Xác minh email: Đảm bảo rằng một chuỗi email tuân theo định dạng hợp lệ.
pattern = r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'
email = 'example@domain.com'
if re.match(pattern, email):
print('Email hợp lệ')
else:
print('Email không hợp lệ')
- Trích xuất địa chỉ IP: Tìm các địa chỉ IP trong một log file.
pattern = r'\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b'
log = 'Client 192.168.0.1 connected to server 10.0.0.1'
ip_addresses = re.findall(pattern, log)
print('Địa chỉ IP:', ip_addresses)
Kết luận, biểu thức chính quy là công cụ rất mạnh mẽ và linh hoạt cho việc xử lý chuỗi trong Python. Bằng cách nắm vững các phương thức và ký tự đặc biệt của biểu thức chính quy, bạn có thể giải quyết nhiều vấn đề liên quan đến phân tích và xử lý văn bản một cách hiệu quả.
Comments