Hướng dẫn python -c flag - cờ python -c

Ở 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.: 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ả:
# Khop!

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

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ả:
# Khop!
3 giữa hai khoảng đó.

VD: Pattern chuỗi bắt đầu bằng ký tự in thường hoặc bằng số.: 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ả:
# Khop!

.

Ký tự dấu

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ả:
# Khop!
4 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ả:
# Khop!

^

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: 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: 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.: 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.: 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.: 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.: 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.: 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.: Kiểm tra xem chuỗi chó chứa chũ 'thanh' không.

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ả:
# Khop!
0

\

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.: Kiểm tra xem đầu chuỗi có phải là dấu . không.

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ả:
# Khop!
1

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.

  • 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ả:
    # Khop!
    
    5 hoặc
    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ả:
    # Khop!
    
    6 - Không phân biệt hoa thường khi so khớp.
  • 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ả:
    # Khop!
    
    7 hoặc
    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ả:
    # Khop!
    
    8 - So Khớp với local hiện tại.
  • 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ả:
    # Khop!
    
    9 hoặc
    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ả:
    # Khop!
    
    0 - Thay đổi
    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ả:
    # Khop!
    
    1 và
    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ả:
    # Khop!
    
    2 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.
  • 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ả:
    # Khop!
    
    3 hoặc
    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ả:
    # Khop!
    
    4 - Thay đổi 
    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ả:
    # Khop!
    
    5, 
    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ả:
    # Khop!
    
    6, 
    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ả:
    # Khop!
    
    7, 
    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ả:
    # Khop!
    
    8, 
    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ả:
    # Khop!
    
    9, 
    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!
    
    0,
    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!
    
    1 và
    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!
    
    2 thành so khơp full unicode.
  • 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!
    
    3 hoặc
    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!
    
    4 -Thay đổi pattern
    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ả:
    # Khop!
    
    4 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.: So khớp một chuỗi bắt đầu bằng v hoặc V.

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ả:
# Khop!
2

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.