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

Cách viết Regex khớp 'a' hoặc 'b' trong Python

Dùng nhóm alternation (a|b) để khớp một trong hai ký tự. Có thể thêm flag re.I (IGNORECASE) để không phân biệt chữ hoa/thường.

Ví dụ cơ bản

import re

s = 'Bank of Baroda'
# Khớp 'a' hoặc 'b', không phân biệt hoa/thường
matches = re.findall(r'(a|b)', s, re.I)
print(matches)
# ['B', 'a', 'B', 'a', 'a']

Giải thích

  • (a|b): Group capturing, khớp 'a' HOẶC 'b'.
  • re.I / re.IGNORECASE: Case-insensitive.
  • findall với capturing group trả về nội dung group (không phải toàn bộ match).

Các biến thể

# Non-capturing group (chỉ khớp, không capture)
re.findall(r'(?:a|b)', s, re.I)  # ['a', 'b', 'a', 'a'] - không có 'B' vì group không capture

# Khớp toàn bộ từ chứa a/b
re.findall(r'\b\w*[ab]\w*\b', s, re.I)  # ['Bank', 'Baroda']

# Character class thay thế (nhanh hơn cho single char)
re.findall(r'[ab]', s, re.I)  # ['B', 'a', 'B', 'a', 'a']

Mở rộng: Nhiều lựa chọn hơn

# Khớp 'cat', 'dog', hoặc 'bird'
re.findall(r'(cat|dog|bird)', text, re.I)

# Khớp từ bắt đầu bằng a hoặc b
re.findall(r'\b[ab]\w*', text, re.I)

Lưu ý hiệu năng

  • Character class [ab] nhanh hơn alternation (a|b) cho single character.
  • Alternation cần thiết khi các lựa chọn là chuỗi nhiều ký tự.
  • Thứ tự trong alternation quan trọng: regex thử từ trái sang phải.