Hướng dẫn dùng regex meanings python

Hướng dẫn dùng regex meanings python

Nội dung chính

  • 1. Regex là gì?
  • 2. Regex trong Python.
  • 3. Sử dụng Regex với search(), match(), split()
  • 3.1 re.match()
  • 3.2 re.search()
  • 3.3 Một số flag hay dùng trong Regular Expression
  • 4. Kết Luận
  • Các hàm Regex
  • Xây dựng biểu thức chính quy
  • Meta-Characters
  • Ký tự đặc biệt
  • Hàm findall()
  • Đối tượng Match (kết quả khớp)
  • Các phương thức đối tượng Match

Đã đăng vào thg 11 27, 2017 9:57 SA 3 phút đọc

1. Regex là gì?

Regular expression (Regex) là một chuỗi miêu tả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định. Bạn cũng có thể gọi Regex 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.

2. Regex trong Python.

Regular Expression trong Python được thể hiện qua module re, re Module cung cấp sự hỗ trợ đầy đủ các Regular Expression trong Python. Module này tạo Exception là re.error nếu xảy ra một lỗi trong khi biên dịch hoặc khi sử dụng một Regular Expression. Để sử dụng re việc đầu tiên bạn 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

3. Sử dụng Regex với search(), match(), split()

3.1 re.match()

re.match(pattern, string, flags=0)

So khớp pattern với string với các flag tùy ý. Dưới đây là cú pháp cho hàm này.

Chi tiết về tham số:

pattern : Đây là chuỗn cần so khớp.
string : Đây là chuỗi để tìm kiếm pattern cón tồn tại trong đó không.
flags : Bạn có thể xác định các flag khác nhau bởi sử dụng toán tử |. Các modifier này sẽ được liệt kê ở bảng bên dưới.

Hàm re.match trả về một đối tượng match nếu thành công và trả về None nếu thất bại. Chúng ta sử dụng hàm group(num) hoặc groups() của đối tượng match để lấy biểu thức đã được so khớp (kết nối).

>>> m = re.match(r"(?P\w+) (?P\w+)", "Malcolm Reynolds")
>>> m.group('first_name')
'Malcolm'
>>> m.group('last_name')
'Reynolds'
re.search(pattern, string, flags=0)

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. Nếu để trống thì flags sẽ bằng 0.
>>> email = "[email protected]_thisger.net"
>>> m = re.search("remove_this", email)
>>> email[:m.start()] + email[m.end():]
'[email protected]'

3.4 re.split()

re.split(pattern, string, maxsplit=0, flags=0)

Trong đó:

pattern: là chuỗi regular expression.
string: là chuỗi cần so khớp để loại bỏ pattern
maxsplit: số phần chia giới hạn. Trong quá trình split khi số phần đã đến maxspit thì dừng lại và trả về mảng gồm các phần chia trước đó và chuỗi còn lại.
flags: là các kiểu so khớp mà bạn muốn thực hiện. Nếu để trống thì flags sẽ bằng 0.
>>> re.split('[a-f]+', '0a3B9', flags=re.IGNORECASE)
['0', '3', '9']

3.3 Một số flag hay dùng trong Regular Expression

I hay IGNORECASE - Không phân biệt hoa thường khi tiến hành search hoặc match L hay LOCALE - So Khớp với local hiện tại. M hay MULTILINE - Thay đổi $ và ^ 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 hay ACSII - Thay đổi \w, \W, \b, \B, \d, \D, \S và \s thành so khơp full unicode. S hay DOTALL -Thay đổi pattern . thành khớp với bất kỳ ký tự nào và dòng mới. ...

4. Kết Luận

Regular Expression trong python còn rất nhiều nhưng trong bài này mình chỉ hướng dẫn các bạn sử dụng một số regex hay dùng trong python mong rằng nó giúp ích được các bạn.

xem thêm : https://viblo.asia/p/chia-se-10-regular-expression-huu-ich-ma-developer-nen-biet-Qbq5QJPLKD8 https://viblo.asia/p/cac-ki-tu-dac-biet-trong-regular-expressions-phan-2-ORNZqP6MK0n

All rights reserved



Nội dung chính

Nội dung chính

  • Các hàm Regex
  • Xây dựng biểu thức chính quy
  • Meta-Characters
  • Ký tự đặc biệt
  • Hàm findall()
  • Đối tượng Match (kết quả khớp)
  • Các phương thức đối tượng Match
  • Regex trong Python
  • Các hàm Regex
  • Xây dựng biểu thức chính quy
    • Meta-Characters
    • Ký tự đặc biệt
    • Set
  • Hàm findall()
  • Đối tượng Match (kết quả khớp)
    • Các phương thức đối tượng Match

Biểu thức chính quy (Regular Expressions) hay Regex trong Python có thể được định nghĩa là chuỗi các ký tự được sử dụng để tìm kiếm một mẫu trong chuỗi. Mô-đun re cung cấp hỗ trợ để sử dụng regex trong chương trình python. Mô-đun re bắn ra một ngoại lệ nếu có lỗi xảy ra trong khi sử dụng biểu thức chính quy.

Bạn càn phải import mô-đun re để sử dụng các chức năng regex trong python.



Các hàm Regex

Các hàm regex sau được sử dụng trong Python.

STTHàmMô tả
1 match Hàm này khớp với mẫu regex trong chuỗi với cờ tùy chọn. Nó trả về true nếu một kết quả khớp được tìm thấy trong chuỗi nếu không nó trả về false.
2 search Hàm này trả về đối tượng khớp nếu có một kết quả khớp được tìm thấy trong chuỗi.
3 findall Nó trả về một danh sách chứa tất cả các kết quả khớp của một mẫu trong chuỗi.
4 split Trả về một danh sách trong đó chuỗi đã được phân chia theo mỗi kết quả khớp.
5 sub Thay thế một hoặc nhiều kết quả khớp trong chuỗi.

Xây dựng biểu thức chính quy

Một biểu thức chính quy có thể được hình thành bằng cách sử dụng kết hợp các meta-character, ký tự đặc biệt và set.

Meta-Characters

Metacharacter là một ký tự có ý nghĩa nhất định:

MetacharacterMô tảVí dụ
[] Nó đại diện cho một tập các ký tự. "[a-z]"
\ Nó đại diện cho ký tự đặc biệt. "\r"
. Nó đại diện cho bất kỳ ký tự nào xuất hiện ở một số nơi cụ thể. "Ja.v."
^ Nó đại diện cho mẫu có mặt ở đầu chuỗi. "^Java"
$ Nó đại diện cho mẫu có mặt ở cuối chuỗi. "viettuts"
* Nó đại diện cho không hoặc nhiều lần xuất hiện của một mẫu trong chuỗi. "hello*"
+ Nó đại diện cho một hoặc nhiều lần xuất hiện của một mẫu trong chuỗi. "hello+"
{} Số lần xuất hiện đã chỉ định của một mẫu trong chuỗi. "java{2}"
| Nó biểu diễn cho cái này hoặc cái kia (điều kiện or). "python2|python3"
() Nhóm các thành phần.

Ký tự đặc biệt

Ký tự đặt biệt là các chuỗi có chứa \ theo sau là một trong các ký tự.

Ký tựMô tả
\A Nó trả về một kết quả khớp nếu các ký tự được chỉ định có mặt ở đầu chuỗi.
\b Nó trả về một kết quả khớp nếu các ký tự được chỉ định có mặt ở đầu hoặc cuối chuỗi.
\B Nó trả về một kết quả khớp nếu các ký tự được chỉ định có mặt ở đầu chuỗi nhưng không ở cuối chuỗi.
\d Nó trả về một kết quả khớp nếu chuỗi chứa các chữ số [0-9].
\D Nó trả về một kết quả khớp nếu chuỗi không chứa các chữ số [0-9].
\s Nó trả về một kết quả khớp nếu chuỗi chứa bất kỳ ký tự khoảng trắng nào.
\S Nó trả về một kết quả khớp nếu chuỗi không chứa bất kỳ ký tự khoảng trắng nào.
\w Nó trả về một kết quả khớp nếu chuỗi chứa bất kỳ ký tự từ nào.
\W Nó trả về một kết quả khớp nếu chuỗi không chứa bất kỳ từ nào.
\Z Trả về một kết quả khớp nếu các ký tự được chỉ định ở cuối chuỗi.

Set

Một set là một nhóm các ký tự được đưa ra bên trong một cặp dấu ngoặc vuông. Nó đại diện cho ý nghĩa đặc biệt.

STTSetMô tả
1 [arn] Trả về một kết quả khớp nếu chuỗi chứa bất kỳ ký tự nào được chỉ định trong tập hợp.
2 [a-n] Trả về một kết quả khớp nếu chuỗi chứa bất kỳ ký tự nào từ a đến n.
3 [^arn] Trả về một kết quả khớp nếu chuỗi chứa các ký tự ngoại trừ a, r và n.
4 [0123] Trả về một kết quả khớp nếu chuỗi chứa bất kỳ chữ số nào được chỉ định.
5 [0-9] Trả về một kết quả khớp nếu chuỗi chứa bất kỳ chữ số nào trong khoảng từ 0 đến 9.
6 [0-5][0-9] Trả về một kết quả khớp nếu chuỗi chứa bất kỳ chữ số nào trong khoảng từ 00 đến 59.
10 [a-zA-Z] Trả về một kết quả khớp nếu chuỗi chứa bất kỳ bảng chữ cái nào (chữ thường hoặc chữ hoa).


Hàm findall()

Phương thức này trả về một danh sách chứa danh sách tất cả các kết quả khớp của mẫu trong chuỗi. Nó trả về các mẫu theo thứ tự chúng được tìm thấy. Nếu không có kết quả khớp, thì một danh sách trống được trả về. Ví dụ:

import re  
str = "Xin chào Bạn! Bạn đang học bài Regex trong Python."  
matches = re.findall("Bạn", str)  
print(matches)  

Kết quả:


Đối tượng Match (kết quả khớp)

Đối tượng match chứa thông tin về tìm kiếm và đầu ra. Nếu không tìm thấy kết quả khớp, đối tượng None được trả về. Ví dụ:

import re  
str = "Xin chào Bạn! Bạn đang học bài Regex trong Python." 
matches = re.search("Bạn", str)
print(type(matches))
print(matches)

Kết quả:

Các phương thức đối tượng Match

Có các phương thức sau liên quan đến đối tượng Match.

  1. span(): Nó trả về bộ dữ liệu chứa vị trí bắt đầu và kết thúc của kết quả khớp.
  2. string(): Nó trả về một chuỗi được truyền vào hàm.
  3. group(): Một phần của chuỗi được trả về nơi tìm thấy kết quả khớp.

Ví dụ:

import re  
str = "Xin chào Bạn! Bạn đang học bài Regex trong Python." 
matches = re.search("Bạn", str)
print(matches.span())
print(matches.group())
print(matches.string)

Kết quả:

(9, 12)
Bạn
Xin chào Bạn! Bạn đang học bài Regex trong Python.