PYTHON REGEX
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.

Hàm fullmatch() của Regex trong Python

Trong quá trình làm việc với chuỗi và biểu thức chính quy trong Python, việc xác thực chuỗi sao cho khớp với một mẫu nhất định là một nhu cầu rất phổ biến. Để thực hiện điều này, Python cung cấp nhiều hàm hỗ trợ trong mô-đun re. Một trong những hàm quan trọng đó là fullmatch(), hàm này giúp bạn kiểm tra xem toàn bộ chuỗi có khớp hoàn toàn với một mẫu biểu thức chính quy hay không. Trong bài viết này,mình sẽ cùng tìm hiểu chi tiết về hàm fullmatch(), cách sử dụng nó thông qua các ví dụ minh họa, và so sánh với các hàm khác như match()search() để hiểu rõ hơn về sự khác biệt và ứng dụng của chúng trong thực tế.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Giới thiệu về hàm fullmatch() trong Python

Hàm fullmatch() trả về một đối tượng Match nếu toàn bộ chuỗi khớp với mẫu tìm kiếm của biểu thức chính quy, hoặc None nếu không khớp.

Cú pháp của hàm fullmatch() như sau:

re.fullmatch(pattern, string, flags=0)

Trong cú pháp này:

Bài viết này được đăng tại [free tuts .net]

  • pattern chỉ định một biểu thức chính quy để khớp.
  • string chỉ định chuỗi đầu vào.
  • Tham số flags là tùy chọn và mặc định là không. Tham số flags chấp nhận một hoặc nhiều cờ regex. Tham số flags thay đổi cách công cụ regex khớp với mẫu.

Ví dụ về hàm fullmatch() trong Python

Ví dụ sau sử dụng hàm fullmatch() để xác thực một địa chỉ email:

import re

email = 'no-reply@freetuts.net'
pattern = r'[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}'
match = re.fullmatch(pattern, email)

if match is not None:
    print(f'The email "{match.group()}" is valid')    
else:
    print(f'The email "{email}" is not valid')

Kết quả:

The email "no-reply@freetuts.net" is valid

Đoạn mã sau định nghĩa một hàm sử dụng fullmatch() để xác thực một địa chỉ email. Hàm trả về True nếu email hợp lệ hoặc ném ra ngoại lệ ValueError nếu không hợp lệ:

import re

def is_email(s: str) -> bool:
    pattern = r'[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}'
    if re.fullmatch(pattern, s) is None:
        raise ValueError(f'The {s} is not a valid email address')

    return True

Và bạn có thể sử dụng hàm is_email() để xác thực một email như sau:

if __name__ == '__main__':
    try:
       if is_email('no-reply@freetuts'):
           print('The email is valid')
    except ValueError as e:
        print(e)

Kết quả:

The no-reply@freetuts is not a valid email address

So sánh giữa fullmatch()match()

Cả hai hàm fullmatch()match() đều trả về một đối tượng Match nếu chúng tìm thấy khớp.

  • Hàm fullmatch() khớp toàn bộ chuỗi với một mẫu.
  • Hàm match() chỉ tìm khớp ở đầu chuỗi.

Ví dụ:

import re

s = 'Python 3'
pattern = 'Python'

# fullmatch
match = re.fullmatch(pattern, s)
if match is not None:
    print('fullmatch:', match.group())

# match
match = re.match(pattern, s)
if match is not None:
    print('match:', match.group())

Kết quả:

match: Python

Trong ví dụ này, hàm fullmatch() trả về None vì mẫu Python chỉ khớp ở đầu chuỗi, không phải toàn bộ chuỗi. Trong khi đó, hàm match() khớp mẫu ở đầu chuỗi và trả về kết quả.

So sánh giữa fullmatch()search()

Cả hai hàm fullmatch()search() đều trả về một đối tượng Match nếu chúng tìm thấy khớp của một mẫu trong chuỗi. Tuy nhiên:

  • Hàm fullmatch() khớp toàn bộ chuỗi.
  • Hàm search() khớp ở bất kỳ vị trí nào trong chuỗi.

Ví dụ:

import re

s = 'Python 3'
pattern = '\d'

# fullmatch
match = re.fullmatch(pattern, s)
if match is not None:
    print(match.group()) 

# search
match = re.search(pattern, s)
if match is not None:
    print(match.group())  # 3

Kết quả:

3

Trong ví dụ này, mẫu \d khớp với một chữ số. Hàm fullmatch() trả về None vì toàn bộ chuỗi 'Python 3' không khớp. Tuy nhiên, hàm search() trả về một khớp vì nó có thể tìm thấy chữ số 3 ở cuối chuỗi.

Kết bài

Hàm fullmatch() trong Python là một công cụ hữu ích khi bạn cần kiểm tra toàn bộ chuỗi khớp với một mẫu biểu thức chính quy cụ thể. Qua các ví dụ đã trình bày, mình thấy rằng fullmatch() đảm bảo rằng chuỗi cần kiểm tra phải phù hợp hoàn toàn với mẫu, điều này khác biệt với các hàm khác như match() chỉ kiểm tra ở phần đầu chuỗi hoặc search() kiểm tra bất kỳ vị trí nào trong chuỗi. Sử dụng hàm fullmatch() đúng cách sẽ giúp bạn tăng cường hiệu quả và độ chính xác trong việc xử lý và xác thực dữ liệu chuỗi. Hãy áp dụng các kiến thức này vào các tình huống thực tế của bạn để thấy rõ hơn lợi ích của biểu thức chính quy trong việc quản lý và phân tích dữ liệu.

Cùng chuyên mục:

Cách thêm Progress Bar trong Python với chỉ một dòng Code

Cách thêm Progress Bar trong Python với chỉ một dòng Code

Toán tử Walrus Operator- Tính năng mới trong Python 3.8

Toán tử Walrus Operator- Tính năng mới trong Python 3.8

Cách nạp dữ liệu Machine Learning từ File trong Python

Cách nạp dữ liệu Machine Learning từ File trong Python

Hướng dẫn sử dụng Google Sheets API với Python

Hướng dẫn sử dụng Google Sheets API với Python

Xây dựng  web Python tự động hóa Twitter | Flask, Heroku, Twitter API & Google Sheets API

Xây dựng web Python tự động hóa Twitter | Flask, Heroku, Twitter API & Google Sheets API

Xây dựng Web Machine Learning đẹp mắt với Streamlit và Scikit-learn trong Python

Xây dựng Web Machine Learning đẹp mắt với Streamlit và Scikit-learn trong Python

Hướng dẫn tạo Chatbot đơn giản bằng PyTorch

Hướng dẫn tạo Chatbot đơn giản bằng PyTorch

11 mẹo và thủ thuật để viết Code Python hiệu quả hơn

11 mẹo và thủ thuật để viết Code Python hiệu quả hơn

Hướng dẫn làm ứng dụng TODO với Flask dành cho người mới bắt đầu trong Python

Hướng dẫn làm ứng dụng TODO với Flask dành cho người mới bắt đầu trong Python

Hướng dẫn viết Snake Game bằng Python

Hướng dẫn viết Snake Game bằng Python

Cách sử dụng chế độ interactive trong Python

Cách sử dụng chế độ interactive trong Python

Cách sử dụng Python Debugger với hàm breakpoint()

Cách sử dụng Python Debugger với hàm breakpoint()

Xây dựng ứng dụng Web Style Transfer với PyTorch và Streamlit

Xây dựng ứng dụng Web Style Transfer với PyTorch và Streamlit

Cách cài đặt Jupyter Notebook trong môi trường Conda và thêm Kernel

Cách cài đặt Jupyter Notebook trong môi trường Conda và thêm Kernel

Hướng dẫn xây dựng ứng dụng dự đoán giá cổ phiếu bằng Python

Hướng dẫn xây dựng ứng dụng dự đoán giá cổ phiếu bằng Python

Hướng dẫn tạo ứng dụng AI hội thoại với NVIDIA Jarvis trong Python

Hướng dẫn tạo ứng dụng AI hội thoại với NVIDIA Jarvis trong Python

Hỗ trợ Async trong Django 3.1

Hỗ trợ Async trong Django 3.1

8 mẹo tái cấu trúc Python giúp mã sạch hơn và Pythonic

8 mẹo tái cấu trúc Python giúp mã sạch hơn và Pythonic

Ý nghĩa của if __name__ ==

Ý nghĩa của if __name__ == "__main__" trong Python

Cách xóa phần tử trong danh sách Python

Cách xóa phần tử trong danh sách Python

Top