Điện thoại/ Zalo
0389934723
Bài 8: Regular Expression trong Python
Trong các dự án, việc ràng buộc thông tin người dùng nhập lên là điều rất cần thiết và quan trọng. Và hôm nay chúng ta sẽ cùng tìm hiểu về Regular Expression trong Python xem nó được sử dụng như thế nào nhé!
1, Regular Expression là gì?
Regular expression (dịch ra tiếng việt là biểu thức chính quy) là một đoạn các ký tự đặc biệt dùng để so khớp các chuỗi hoặc một tập các chuỗi. Bạn cũng có thể gọi Regular Expression là một ngôn ngữ. Và hầu như ngôn ngữ lập trình nào cũng hỗ trợ Regular expression, nhưng được sử dụng nhiều nhất và phổ biến nhất là trong UNIX.
2, Regular Expression trong Python.
Regular Expression trong Python được thể hiện qua module re
, nên việc đầu tiên khi các bạn muốn sử dụng regular expression thì cần phải import module re vào chương trình, sử dụng với cú pháp như sau:
import re
Trong module này thì có rất nhiều các phương thức, và mình sẽ liệt kê một số phương thức hay được sử dụng kèm theo ví dụ với mỗi phương thức đó.
group(num)
Phương thức này trả về các giá trị so khớp giữa biểu thức chính quy và chuỗi cần so. Trong đó thì num
này là vị trí index của list so khớp trả về mà bạn muốn lấy ra. Nếu không điền thì Python sẽ coi nó là 0.
VD:
import re
str = 'Học lập trình Toidicode.com'
match = re.search(r'Toidicode.com', str)
if match: #nếu tồn tại chuỗi khớp
print (match.group()) # in ra chuỗi đó
else:
print ('Khong tim thay!') # Không thì hiện thông báo
#Kết quả:
#Toidicode.com
groups()
Phương thức này sẽ trả về một tupel các chuỗi được so khớp khớp.
VD:
import re
str = 'Hoc lap trinh Toidicode.com'
match = re.search(r'(.*) Toidicode.com', str)
if match: #nếu tồn tại chuỗi khớp
print (match.groups()) # in ra chuỗi đó
else:
print ('Khong tim thay!') # Không thì hiện thông báo
#Kết quả:
#('Hoc lap trinh',)
search(pattern, string, flags)
Phương thức này thực hiện tìm kiếm chuỗi so khớp trên string và nó sẽ trả về các giá trị được so khớp.
Trong đó:
pattern
là chuỗi regular expression.string
là chuỗi cần so khớp.flags
là các kiểu so khớp mà bạn muốn thực hiện (xem ở dưới). Nếu để trống thì flags sẽ bằng 0.
VD:
import re
str = 'Hoc lap trinh Toidicode.com'
match = re.search(r'Toidicode.com', str)
if match: #nếu tồn tại chuỗi khớp
print (match.group()) # in ra chuỗi đó
else:
print ('Khong tim thay!') # Không thì hiện thông báo
#Kết quả:
#Toidicode.com
match(pattern, string, flags)
Phương thức này cũng thực hiện việc so khớp chuỗi nhưng nó sẽ tính từ phạm vi đầu chuỗi cho đến kết thúc, còn các tham số truyền vào thì tương tự như đối với phương thức search()
.
VD:
import re
str = 'Hoc lap trinh Toidicode.com'
match = re.match(r'Toidicode.com', str)
if match: #nếu tồn tại chuỗi khớp
print (match.group()) # in ra chuỗi đó
else:
print ('Khong tim thay!') # Không thì hiện thông báo
# Kết quả:
# Khong tim thay!
fullmatch(pattern, string, flags)
Phương thức này cũng thực hiện việc so khớp nhưng nó là so khớp hoàn toàn, còn các tham số truyền vào là tương tự như phương thức match.
VD: Đây là ví dụ phân biệt sự khác nhau giữa match và fullmatch.
+ fullmatch
import re
str = 'Hoc lap trinh Toidicode.com'
match = re.fullmatch(r'Hoc lap trinh', str)
if match: #nếu tồn tại chuỗi khớp
print (match.group()) # in ra chuỗi đó
else:
print ('Khong tim thay!') # Không thì hiện thông báo
# Kết quả:
# Khong tim thay!
+ match
import re
str = 'Hoc lap trinh Toidicode.com'
match = re.match(r'Hoc lap trinh', str)
if match: #nếu tồn tại chuỗi khớp
print (match.group()) # in ra chuỗi đó
else:
print ('Khong tim thay!') # Không thì hiện thông báo
# Kết quả:
# Hoc lap trinh
split(pattern, string, maxsplit)
Hàm này có tác dụng so khớp và cắt chuỗi so khớp thành công.
Trong đó:
- pattern là chuỗi regular expression.
- string là chuỗi cần so khớp.
- maxsplit là số chuỗi tối đa sẽ được split. Nếu để trống thì Python sẽ tìm và cắt tất cả các chuỗi
VD:
import re
str = 'Hoc lap trinh Toidicode.com'
match = re.split(r'i', str)
if match: #nếu tồn tại chuỗi khớp
print (match) # in ra kết quả
else:
print ('Khong tim thay!') # Không thì hiện thông báo
# Kết quả:
# ['Hoc lap tr', 'nh To', 'd', 'code.com']
findall(partern, string, flags)
Phương thức này có tác dụng so khớp và trả về tất cả các chuỗi mà nó đã so khơp được, còn lại các tham số truyền và sử dụng như đối với phương thức search.
VD:
import re
str = 'Hoc lap trinh Toidicode.com'
match = re.findall(r'i', str)
if match: #nếu tồn tại chuỗi khớp
print (match) # in ra kết quả
else:
print ('Khong tim thay!') # Không thì hiện thông báo
# Kết quả:
# ['i', 'i', 'i']
sub(pattern, replace, string, flags)
Phương thức này có tác dụng so khớp và thay thế chuỗi so khớp được.
Trong đó:
- pattern là chuỗi regular expression.
replace
là chuỗi thay thế cho các chuỗi được so khớp.- string là chuỗi cần so khớp.
flags
là các kiểu so khớp mà bạn muốn thực hiện (xem ở dưới). Nếu để trống thì flags sẽ bằng 0.
VD:
import re
str = 'Hoc lap trinh Toidicode.com'
match = re.sub(r'Toidicode.com','https://toidicode.com', str)
if match: #nếu tồn tại chuỗi khớp
print (match) # in ra kết quả
else:
print ('Khong tim thay!') # Không thì hiện thông báo
# Kết quả:
# Hoc lap trinh https://toidicode.com
…..
3, Lời kết.
Phần này khá dài nên mình sẽ chia làm 2 phần. Mời các bạn đọc tiếp phần 2 tại đây.