DANH MỤC: PYTHON NÂNG CAO

Bài 9: Regular Expression trong Python (P2)


phần trước mình đã giới thiệu đến mọi người một số các phương thức hay được sử dụng trong Regular Expression rồi, phần này mình sẽ giới thiệu với mọi người các cú pháp pattern trong Python.

1, Các cú pháp pattern trong Python.

Dưới đây mình sẽ liệt kê ra một số các cú pháp pattern trong Python mà chúng ta hay sử dụng và kèm với theo nó là các ví dụ.

[]

Trong cặp dấu này chứa các ký tự có thể so khớp với văn bẳn. Nó gần giống như toán tử hoặc, nghĩa là chỉ cần nó so khớp 1 trong các ký tự được liệt kê trong cặp dấu này thì chuỗi đó được so khớp.

VD: pattern chuỗi bắt đầu bằng T hoặc t.

import re

str = 'thanhtaivtt'
match = re.match(r'[Tt]', str)
if match: #nếu tồn tại chuỗi khớp                     
    print('Khop!')
else:
    print ('Khong tim thay!')
# Kết quả:
# t

Và bạn cũng có thể liệt kê ra các ký tự dưới dạng từ ... đến ... bằng cách thể hiện dấu - giữa hai khoảng đó.

VD: Pattern chuỗi bắt đầu bằng ký tự in thường hoặc bằng số.

import re

str = 'thanhtaivtt'
match = re.match(r'[a-z0-9]', str)
if match: #nếu tồn tại chuỗi khớp                     
    print('Khop!')
else:
    print ('Khong tim thay!')
# Kết quả:
# t

.

Ký tự dấu . này tương đương với việc so khớp một chuỗi phải chứa ít nhất một ký tự.

VD:

import re

str = 'thanhtaivtt'
match = re.match(r'.', str)
if match: #nếu tồn tại chuỗi khớp                     
    print('Khop!')
else:
    print ('Khong tim thay!')
# Kết quả:
# t

^

Ký tự này đại diện cho việc so khớp từ đầu của chuỗi.

VD: so khớp xem có phải đầu chuỗi là chữ h

import re

str = 'thanhtaivtt'
match = re.search(r'^h', str)
if match: #nếu tồn tại chuỗi khớp                     
    print('Khop!')
else:
    print ('Khong tim thay!')
# Kết quả:
# Khong tim thay!

$

Ký tự này đại diện cho việc so khớp đến cuối chuỗi.

VD: so khớp xem cuỗi chuỗi có phải chữ t

import re

str = 'thanhtaivtt'
match = re.search(r't$', str)
if match: #nếu tồn tại chuỗi khớp                     
    print('Khop!');
else:
    print ('Khong tim thay!')
# Kết quả:
# Khop!

*

Ký tự này đại diện cho có thể có hoặc không có ký tự trước nó.

VD: So khớp một chuỗi xem có thể bắt đầu bằng t hoặc không bắt đầu bằng t hoặc là chuỗi rỗng.

import re

str = ''
match = re.match(r't*', str)
if match: #nếu tồn tại chuỗi khớp                     
    print('Khop!');
else:
    print ('Khong tim thay!')
# Kết quả:
# Khop!

+

Ký tự này đại diện cho có thể xuất hiện ít nhất hoặc nhiều ký tự trước nó.

VD: So khớp xem một chuỗi chỉ chứa chữ cái in thường.

import re

str = 'vuthanhtai'
match = re.match(r'[a-z]+', str)
if match: #nếu tồn tại chuỗi khớp                     
    print('Khop!');
else:
    print ('Khong tim thay!')
# Kết quả:
# Khop!

?

Ký tự này đại diện cho chuỗi sẽ khớp với một trong các ký tự đằng trước nó.

VD: Kiểm tra xem một chuỗi có được bắt đầu bằng a hoặc b hay không.

import re

str = 'vuthanhtai'
match = re.match(r'ab?', str)
if match: #nếu tồn tại chuỗi khớp                     
    print('Khop!');
else:
    print ('Khong tim thay!')
# Kết quả:
# Khong tim thay!

{m, n}

Ký tự này đại diện cho việc so khớp xem chuỗi đằng trước nó xuất hiện bao nhiêu tối thiểu m lần và tối đa n lần. Nếu bỏ trống n thì là so khớp sự xuất hiện m lần của chuỗi đằng trước nó.

VD: Kiểm tra xem 3 chữ cái đầu của chuỗi có phải là v không.

import re

str = 'vuthanhtai'
match = re.match(r'v{3}', str)
if match: #nếu tồn tại chuỗi khớp                     
    print('Khop!');
else:
    print ('Khong tim thay!')
# Kết quả:
# Khong tim thay!

|

Ký tự này đại diện cho sự tồn tại của một trong 2 ký tự trước và sau nó.

VD: kiểm tra xem đầu chuỗi cõ phải là a hoặc b hay không.

import re

str = 'vuthanhtai'
match = re.match(r'a|b', str)
if match: #nếu tồn tại chuỗi khớp                     
    print('Khop!');
else:
    print ('Khong khop!')
# Kết quả:
# Khong Khop!

()

Ký tự này dùng để gom nhóm các pattern lại với nhau.

VD: Kiểm tra xem chuỗi chó chứa chũ 'thanh' không.

import re

str = 'vuthanhtai'
match = re.match(r'(.*)(thanh)(.*)', str)
if match: #nếu tồn tại chuỗi khớp                     
    print('Khop!');
else:
    print ('Khong khop!')
# Kết quả:
# Khop!

\

Ký tự này giúp phân biệt chuỗi sau nó không phải là ký tự đặc biệt.

VD: Kiểm tra xem đầu chuỗi có phải là dấu . không.

import re

str = '.vuthanhtai'
match = re.match(r'\.', str)
if match: #nếu tồn tại chuỗi khớp                     
    print('Khop!');
else:
    print ('Khong khop!')
# Kết quả:
# Khop!

Các pattern khác

Pattern Mô Tả
\A So khớp chuỗi là chuỗi.
\B So khớp nếu vị trí đặt \B không phải là đầu hoặc cuối chuỗi.
\d So khớp với số nguyên.
\D So khớp với các ký tự không phải là số.
\s So khớp với khoảng trắng và các ký tự chữ.
\S So khớp với các kỹ tự không phải là chữ.
\w So khớp với chữ hoặc số.
\W So khớp với các ký tự không phải là chữ hoặc số.

2, Các flags trong Python.

Như ở phần 1 mình có trình bày các thông số flag trong Regular Expression, nhưng mình chưa liệt kê ra các flag đó. Và dưới đây là một số các flags hay dùng trong Python.

  • I hoặc IGNORECASE - Không phân biệt hoa thường khi so khớp.
  • L hoặc LOCALE - So Khớp với local hiện tại.
  • M hoặc MULTILINE - Thay đổi $^ thành kết thúc của một dòng và bắt đầu của một dòng thay vì mặc định là kết thúc chuỗi và bắt đầu chuỗi.
  • A hoặc ACSII - Thay đổi \w\W\b\B\d\D, \S\s thành so khơp full unicode.
  • S hoặc DOTALL -Thay đổi pattern . thành khớp với bất kỳ ký tự nào và dòng mới.
  • .....

VD: So khớp một chuỗi bắt đầu bằng v hoặc V.

import re

str = 'vuthanhtai'
match = re.match(r'V', str, re.IGNORECASE) # hoặc re.I
if match: #nếu tồn tại chuỗi khớp                     
    print('Khop!');
else:
    print ('Khong khop!')
# Kết quả:
# Khop!

3, Lời kết.

Như vậy phần này mình đã giới thiệu xong đến mọi người cơ bản về regular Expression trong Python rồi. Còn nếu bạn nào muốn tìm hiểu thêm tại đây.

Nguồn: Toidicode.com

Thông tin tác giả

Vũ Thanh Tài

Vũ Thanh Tài

The best way to learn is to share

Hãy tham gia group facebook để cùng giao lưu chia sẻ kiến thức! Tham Gia