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:

Sử dụng câu lệnh raise from trong Python

Sử dụng câu lệnh raise from trong Python

Ngoại lệ tùy chỉnh trong Python

Ngoại lệ tùy chỉnh trong Python

Ngoại lệ Raise trong Python

Ngoại lệ Raise trong Python

Tìm hiểu về các ngoại lệ trong Python

Tìm hiểu về các ngoại lệ trong Python

Tìm hiểu về decorator dataclass trong Python

Tìm hiểu về decorator dataclass trong Python

Ví dụ sử dụng metaclass trong Python

Ví dụ sử dụng metaclass trong Python

Lớp Metaclass trong Python

Lớp Metaclass trong Python

Tìm hiểu về Class Type trong Python

Tìm hiểu về Class Type trong Python

Phương thức __new__ trong Python

Phương thức __new__ trong Python

Phân biệt Data Descriptor và Non-data Descriptor trong Python

Phân biệt Data Descriptor và Non-data Descriptor trong Python

Mô tả Descriptors trong Python

Mô tả Descriptors trong Python

Tìm hiểu về các lớp mixin trong Python

Tìm hiểu về các lớp mixin trong Python

Đa kế thừa trong Python

Đa kế thừa trong Python

Nguyên tắc đảo ngược sự phụ thuộc trong Python

Nguyên tắc đảo ngược sự phụ thuộc trong Python

Interface Segregation Principle - ISP trong Python.

Interface Segregation Principle - ISP trong Python.

Nguyên tắc thay thế Liskov - LSP trong Python

Nguyên tắc thay thế Liskov - LSP trong Python

Nguyên tắc Đóng-Mở trong Python

Nguyên tắc Đóng-Mở trong Python

Single Responsibility Principle trong Python

Single Responsibility Principle trong Python

Cách sử dụng hàm Auto() của Python

Cách sử dụng hàm Auto() của Python

Tùy chỉnh và mở rộng lớp Enum trong Python

Tùy chỉnh và mở rộng lớp Enum trong Python

Top