Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Negated Character Classes (Lớp ký tự phủ định) trong Regex Python

Trong Regular Expression, Character Class (lớp ký tự) khớp với một ký tự bất kỳ trong tập hợp định nghĩa. Negated Character Class (lớp ký tự phủ định) khớp với một ký tự KHÔNG nằm trong tập hợp đó.

Cú pháp

  • Character Class thường: [abc] - khớp 'a', 'b', hoặc 'c'.
  • Negated Character Class: [^abc] - khớp bất kỳ ký tự KHÔNG phải 'a', 'b', 'c'.

Ký tự ^ ngay sau [ nghĩa là phủ định. Nếu ^ ở vị trí khác, nó chỉ là ký tự '^' thường.

Ví dụ

import re

# Khớp ký tự KHÔNG phải chữ số
pattern = r'[^0-9]'
print(re.findall(pattern, "abc123!@#"))  # ['a', 'b', 'c', '!', '@', '#']

# Khớp ký tự KHÔNG phải chữ cái
pattern = r'[^a-zA-Z]'
print(re.findall(pattern, "Hello123"))  # ['1', '2', '3']

# Phủ định nhiều khoảng
pattern = r'[^aeiou\s]'  # Không phải nguyên âm, không phải whitespace
print(re.findall(pattern, "Hello World"))  # ['H', 'l', 'l', 'W', 'r', 'l', 'd']

Kết hợp với Range

  • [^0-9] = \D (non-digit)
  • [^a-zA-Z] = ký tự không phải chữ cái
  • [^\s] = \S (non-whitespace)

Lưu ý

  • ^ chỉ có tác dụng phủ định khi ở đầu tiên trong [...].
  • [^^] khớp ký tự '^' (phủ định lớp chỉ chứa '^').
  • Negated class vẫn chỉ khớp một ký tự đơn. Dùng quantifier (+, *) để khớp chuỗi.