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 lưu trữ và tải lại Models trong PyTorch

Cách lưu trữ và tải lại Models trong PyTorch

Tìm hiểu về TensorBoard với PyTorch

Tìm hiểu về TensorBoard với PyTorch

Học chuyển giao (Transfer Learning) trong PyTorch Beginner

Học chuyển giao (Transfer Learning) trong PyTorch Beginner

Hướng dẫn cơ bản mạng Nơ-ron Tích Chập (CNN) trong PyTorch

Hướng dẫn cơ bản mạng Nơ-ron Tích Chập (CNN) trong PyTorch

Mạng Nơ-Ron truyền thẳng (Feed Forward Neural Network) trong PyTorch

Mạng Nơ-Ron truyền thẳng (Feed Forward Neural Network) trong PyTorch

Tìm hiểu Activation Functions trong PyTorch

Tìm hiểu Activation Functions trong PyTorch

Softmax và Cross Entropy trong PyTorch Beginner

Softmax và Cross Entropy trong PyTorch Beginner

Dataset Transforms trong PyTorch Beginner

Dataset Transforms trong PyTorch Beginner

Dataset và DataLoader trong PyTorch Beginner

Dataset và DataLoader trong PyTorch Beginner

Hồi quy Logistic trong PyTorch Beginner

Hồi quy Logistic trong PyTorch Beginner

Hồi quy tuyến tính trong PyTorch Beginner

Hồi quy tuyến tính trong PyTorch Beginner

Training Pipeline trong PyTorch Beginner

Training Pipeline trong PyTorch Beginner

Sử dụng Gradient Descent với Autograd trong PyTorch

Sử dụng Gradient Descent với Autograd trong PyTorch

Hướng dẫn về Tensor cơ bản trong PyTorch

Hướng dẫn về Tensor cơ bản trong PyTorch

Hướng dẫn cài đặt PyTorch với Deep Learning

Hướng dẫn cài đặt PyTorch với Deep Learning

LDA (Linear Discriminant Analysis) trong Python

LDA (Linear Discriminant Analysis) trong Python

Thuật toán AdaBoost trong Python

Thuật toán AdaBoost trong Python

Thuật toán K-Means Clustering trong Python

Thuật toán K-Means Clustering trong Python

Triển khai PCA bằng Python

Triển khai PCA bằng Python

Triển khai thuật toán Random Forest bằng Python

Triển khai thuật toán Random Forest bằng Python

Top