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.

Sets và Ranges trong Regex của Python

Trong lập trình, việc tìm kiếm và khớp các chuỗi ký tự là một phần quan trọng và thường xuyên cần thiết. Python cung cấp công cụ mạnh mẽ để làm điều này thông qua regular expressions (regex). Một trong những tính năng quan trọng của regex là khả năng sử dụng các tập hợp (sets) và phạm vi (ranges) để tạo ra các mẫu khớp với các ký tự cụ thể. Trong bài viết này, bạn sẽ học cách sử dụng các tập hợp và phạm vi trong regex của Python để xây dựng các mẫu tìm kiếm hiệu quả, từ đó giúp bạn xử lý các chuỗi ký tự phức tạp một cách dễ dàng và linh hoạ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ề Sets và Ranges trong Regex

Các ký tự hoặc tập ký tự bên trong dấu ngoặc vuông [] có nghĩa là khớp với bất kỳ ký tự hoặc tập ký tự nào trong số chúng.

Sets

Ví dụ, [abc] có nghĩa là bất kỳ một trong ba ký tự 'a', 'b', hoặc 'c'. [abc] được gọi là một tập hợp (set). Bạn có thể sử dụng tập hợp này cùng với các ký tự thông thường để xây dựng một mẫu tìm kiếm.

Ví dụ, chương trình sau sử dụng mẫu licen[cs]e để khớp với cả hai từ license và licence:

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

import re

s = 'A licence or license'

pattern = 'licen[cs]e'
matches = re.finditer(pattern, s)

for match in matches:
    print(match.group())

Output:

licence
license

Mẫu licen[cs]e tìm kiếm:

  • licen
  • sau đó là một trong các chữ cái [cs]
  • rồi đến e.

Vì vậy, nó khớp với cả license và licence.

Ranges

Khi một tập hợp chứa nhiều ký tự ví dụ như từ a đến z hoặc từ 1 đến 9, sẽ rất tẻ nhạt khi liệt kê chúng trong một tập hợp. Thay vào đó, bạn có thể sử dụng các phạm vi ký tự trong dấu ngoặc vuông. Ví dụ, [a-z] là một ký tự trong phạm vi từ a đến z và [0-9] là một chữ số từ 0 đến 9.

Bạn cũng có thể sử dụng nhiều phạm vi trong cùng một dấu ngoặc vuông. Ví dụ, [a-z0-9] có hai phạm vi khớp với một ký tự từ a đến z hoặc một chữ số từ 0 đến 9.

Tương tự, bạn có thể sử dụng một hoặc nhiều tập hợp ký tự bên trong dấu ngoặc vuông như [\d\s] có nghĩa là một chữ số hoặc một ký tự khoảng trắng.

Ngoài ra, bạn có thể kết hợp ký tự với tập hợp ký tự. Ví dụ, [\d_] khớp với một chữ số hoặc một dấu gạch dưới.

Loại trừ Sets & Ranges trong Python

Để phủ định một tập hợp hoặc một phạm vi, bạn sử dụng ký tự dấu mũ (^) ở đầu tập hợp hoặc phạm vi. Ví dụ, phạm vi [^0-9] khớp với bất kỳ ký tự nào ngoại trừ một chữ số. Nó giống như tập hợp ký tự \D.

Lưu ý rằng regex cũng sử dụng dấu mũ (^) như một mỏ neo để khớp với đầu chuỗi. Tuy nhiên, nếu bạn sử dụng dấu mũ (^) bên trong dấu ngoặc vuông, regex sẽ coi nó là một toán tử phủ định, không phải là mỏ neo.

Ví dụ sau sử dụng dấu mũ (^) để phủ định tập hợp [aeoiu] nhằm khớp với các phụ âm trong chuỗi 'Python':

import re

s = 'Python'

pattern = '[^aeoiu]'
matches = re.finditer(pattern, s)

for match in matches:
    print(match.group())

Output:

P
y
t
h
n

Kết bài

Qua hướng dẫn này, bạn đã học cách sử dụng các tập hợp (sets) và phạm vi (ranges) trong regex của Python để tạo ra các mẫu tìm kiếm khớp với một tập ký tự nhất định. Sử dụng tập hợp và phạm vi giúp bạn xây dựng các biểu thức chính quy linh hoạt và hiệu quả hơn trong việc xử lý chuỗi ký tự. Bằng cách áp dụng những kiến thức này vào thực tế, bạn có thể thực hiện các tác vụ tìm kiếm và thay thế một cách chính xác và tối ưu hơn, từ đó nâng cao hiệu quả lập trình và xử lý dữ liệu của mình.

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