Python RegEx: re.match (), re.search (), re.findall () với Ví dụ – đối sánh biểu thức chính quy trong python

Biểu thức chính quy là gì? Biểu thức chính quy hoặc regex là một chuỗi văn bản đặc biệt được sử dụng để mô tả một mẫu tìm kiếm. Tìm hiểu các phương thức re module, re.match (), re.search (), re.findall (), re.split () trong hướng dẫn này với các ví dụ.

Bạn đang xem : đối sánh biểu thức chính quy trong python

Biểu thức chính quy trong Python là gì?

Biểu thức chính quy (RE) trong ngôn ngữ lập trình là một chuỗi văn bản đặc biệt được sử dụng để mô tả một mẫu tìm kiếm. Nó cực kỳ hữu ích để trích xuất thông tin từ văn bản như mã, tệp, nhật ký, bảng tính hoặc thậm chí cả tài liệu.

Trong khi sử dụng biểu thức chính quy Python, điều đầu tiên là phải nhận ra rằng mọi thứ về cơ bản là một ký tự và chúng tôi đang viết các mẫu để khớp với một chuỗi ký tự cụ thể còn được gọi là chuỗi. Các chữ cái ascii hoặc latin là những chữ cái có trên bàn phím của bạn và Unicode được sử dụng để khớp với văn bản nước ngoài. Nó bao gồm các chữ số và dấu chấm câu và tất cả các ký tự đặc biệt như $ # @!%, V.v.

Trong hướng dẫn Python RegEx này, chúng ta sẽ tìm hiểu-

Ví dụ: một biểu thức chính quy Python có thể yêu cầu một chương trình tìm kiếm văn bản cụ thể từ chuỗi và sau đó in ra kết quả tương ứng. Biểu cảm có thể bao gồm

  • Đối sánh văn bản
  • Lặp lại
  • Phân nhánh
  • Thành phần mẫu, v.v.

Biểu thức chính quy hoặc RegEx trong Python được biểu thị là RE (RE (RE, regex hoặc mẫu regex) được nhập thông qua re module . Python hỗ trợ biểu thức chính quy thông qua các thư viện. RegEx trong Python hỗ trợ nhiều thứ khác nhau như Số sửa đổi, Số nhận dạng và Ký tự khoảng trắng .

Định danh
Bổ ngữ
Ký tự khoảng trắng
Yêu cầu thoát hiểm

\ d = bất kỳ số nào (một chữ số)
\ d đại diện cho một chữ số. Ví dụ: \ d {1,5} nó sẽ khai báo chữ số giữa 1,5 như 424,444,545, v.v.
\ n = dòng mới
. + *? [] $ ^ () {} | \

\ D = bất kỳ thứ gì ngoại trừ một số (không phải chữ số)
+ = phù hợp với 1 hoặc nhiều
\ s = khoảng trắng

\ s = dấu cách
(tab, dấu cách, dòng mới, v.v.)
? = khớp với 0 hoặc 1
\ t = tab

\ S = bất cứ thứ gì trừ khoảng trắng
* = 0 trở lên
\ e = trốn thoát

\ w = các chữ cái (Khớp ký tự chữ và số, bao gồm cả “_”)
$ khớp cuối của một chuỗi
\ r = ký tự xuống dòng

\ W = bất kỳ thứ gì ngoại trừ các chữ cái (Đối sánh với một ký tự không phải chữ và số ngoại trừ “_”)
^ khớp với phần đầu của một chuỗi
\ f = nguồn cấp dữ liệu biểu mẫu

. = bất cứ thứ gì ngoại trừ các chữ cái (dấu chấm)
| khớp với một trong hai hoặc x / y
—————–

\ b = bất kỳ ký tự nào ngoại trừ dòng mới
[] = phạm vi hoặc “phương sai”
—————-

\.
{x} = lượng mã trước đó
—————–

Cú pháp Cụm từ Thông dụng (RE)

 nhập lại 
  • Mô-đun “lại” được bao gồm trong Python chủ yếu được sử dụng để tìm kiếm và thao tác chuỗi
  • Cũng được sử dụng thường xuyên cho trang web “Scraping” (trích xuất một lượng lớn dữ liệu từ các trang web)

Chúng ta sẽ bắt đầu hướng dẫn về biểu thức bằng bài tập đơn giản này bằng cách sử dụng các biểu thức (w +) và (^).

Ví dụ về w + và ^ Biểu thức

  • “^”: Biểu thức này khớp với phần đầu của một chuỗi
  • “w + “: Biểu thức này khớp với ký tự chữ và số trong chuỗi

Ở đây, chúng ta sẽ thấy một Ví dụ về Python RegEx về cách chúng ta có thể sử dụng biểu thức w + và ^ trong mã của mình. Chúng tôi đề cập đến hàm re.findall () trong Python, ở phần sau của hướng dẫn này nhưng chúng tôi chỉ tập trung vào biểu thức \ w + và \ ^.

Ví dụ: đối với chuỗi của chúng tôi “guru99, giáo dục là niềm vui” nếu chúng tôi thực thi mã với w + và ^, nó sẽ cho kết quả đầu ra là “guru99”.

Mã này có thể chỉnh sửa được. Nhấp vào Chạy để Thực thi

 nhập lại
xx = "guru99, giáo dục là niềm vui"
r1 = re.findall (r "^ \ w +", xx)
print (r1) 

Hãy nhớ rằng, nếu bạn xóa dấu + khỏi w +, đầu ra sẽ thay đổi và nó sẽ chỉ cung cấp ký tự đầu tiên của chữ cái đầu tiên, tức là [g]

Xem Thêm  Làm thế nào để tạo một Div theo chiều dọc có thể cuộn - tạo một css có thể cuộn được div

Ví dụ về biểu thức \ s trong hàm re.split

  • “s”: Biểu thức này được sử dụng để tạo khoảng trắng trong chuỗi

Để hiểu cách hoạt động của RegEx trong Python này, chúng ta bắt đầu với Ví dụ về RegEx trong Python đơn giản về hàm phân tách. Trong ví dụ này, chúng tôi đã tách từng từ bằng cách sử dụng hàm “re.split” và đồng thời chúng tôi đã sử dụng biểu thức cho phép phân tích cú pháp từng từ trong chuỗi riêng biệt.

Khi bạn thực thi mã này, nó sẽ cung cấp cho bạn kết quả đầu ra [‘we’, ‘are’, ‘splitting’, ‘the’, ‘words’].

Bây giờ, hãy xem điều gì sẽ xảy ra nếu bạn xóa “\” khỏi s. Không có bảng chữ cái ‘s’ trong đầu ra, điều này là do chúng tôi đã loại bỏ ‘\’ khỏi chuỗi và nó đánh giá “s” là một ký tự thông thường và do đó tách các từ ở bất cứ nơi nào nó tìm thấy “s” trong chuỗi. < / p>

Tương tự, có một loạt các biểu thức chính quy Python khác mà bạn có thể sử dụng theo nhiều cách khác nhau trong Python như \ d, \ D, $, \., \ b, v.v.

Đây là mã hoàn chỉnh

 nhập lại
xx = "guru99, giáo dục là niềm vui"
r1 = re.findall (r "^ \ w +", xx)
print ((re.split (r '\ s', 'chúng ta đang tách các từ')))
print ((re.split (r's ',' split the words '))) 

Tiếp theo, chúng ta sẽ xem các loại phương thức được sử dụng với biểu thức chính quy trong Python.

Sử dụng phương thức biểu thức chính quy

Gói “re” cung cấp một số phương thức để thực sự thực hiện các truy vấn trên một chuỗi đầu vào. Chúng ta sẽ thấy các phương thức của re trong Python:

  • re.match ()
  • re.search ()
  • re.findall ()

Lưu ý : Dựa trên các biểu thức chính quy, Python cung cấp hai phép toán nguyên thủy khác nhau. Phương thức so khớp chỉ kiểm tra kết quả phù hợp ở đầu chuỗi trong khi tìm kiếm sẽ kiểm tra kết quả phù hợp ở bất kỳ vị trí nào trong chuỗi.

re.match ()

re.match () hàm của re trong Python sẽ tìm kiếm mẫu biểu thức chính quy và trả về lần xuất hiện đầu tiên. Phương thức đối sánh RegEx trong Python chỉ kiểm tra kết quả khớp ở đầu chuỗi. Vì vậy, nếu một kết quả phù hợp được tìm thấy trong dòng đầu tiên, nó sẽ trả về đối tượng phù hợp. Nhưng nếu tìm thấy một kết quả khớp trong một số dòng khác, thì hàm Python RegEx Match trả về giá trị null.

Ví dụ: hãy xem xét đoạn mã sau của hàm re.match () trong Python. Biểu thức “w +” và “\ W” sẽ khớp với các từ bắt đầu bằng chữ cái ‘g’ và sau đó, bất kỳ từ nào không bắt đầu bằng ‘g’ sẽ không được xác định. Để kiểm tra sự khớp cho từng phần tử trong danh sách hoặc chuỗi, chúng tôi chạy forloop trong ví dụ re.match () Python này.

re.search (): Tìm mẫu trong văn bản

Hàm

re.search () sẽ tìm kiếm mẫu biểu thức chính quy và trả về lần xuất hiện đầu tiên. Không giống như Python re.match (), nó sẽ kiểm tra tất cả các dòng của chuỗi đầu vào. Hàm re.search () trong Python trả về một đối tượng khớp khi tìm thấy mẫu và “null” nếu không tìm thấy mẫu

Cách sử dụng search ()?

Để sử dụng hàm search (), trước tiên bạn cần nhập mô-đun lại Python và sau đó thực thi mã. Hàm re.search () trong Python lấy “mẫu” và “văn bản” để quét từ chuỗi chính của chúng ta

Ví dụ: ở đây, chúng tôi tìm kiếm hai chuỗi chữ “Kiểm tra phần mềm” “guru99”, trong chuỗi văn bản “Phần mềm Kiểm tra rất thú vị”. Đối với “kiểm tra phần mềm”, chúng tôi đã tìm thấy kết quả phù hợp do đó nó trả về kết quả đầu ra của Python re.search () Ví dụ là “tìm thấy kết quả phù hợp”, trong khi đối với từ “guru99”, chúng tôi không thể tìm thấy trong chuỗi do đó nó trả về kết quả là “Không khớp ”.

re.findall ()

findall () mô-đun được sử dụng để tìm kiếm “tất cả” các lần xuất hiện phù hợp với một mẫu nhất định. Ngược lại, mô-đun search () sẽ chỉ trả về lần xuất hiện đầu tiên phù hợp với mẫu được chỉ định. findall () sẽ lặp lại trên tất cả các dòng của tệp và sẽ trả về tất cả các mẫu phù hợp không trùng lặp trong một bước duy nhất.

Xem Thêm  SUBSTRING (Transact-SQL) - Máy chủ SQL - substr trong máy chủ sql

Làm thế nào để sử dụng re.findall () trong Python?

Ở đây chúng tôi có một danh sách các địa chỉ e-mail và chúng tôi muốn tất cả các địa chỉ e-mail được tìm nạp từ danh sách, chúng tôi sử dụng phương thức re.findall () trong Python. Nó sẽ tìm thấy tất cả các địa chỉ e-mail từ danh sách.

Đây là mã hoàn chỉnh cho Ví dụ về re.findall ()

 nhập lại

list = ["guru99 get", "guru99 give", "guru Selenium"]
cho phần tử trong danh sách:
    z = re.match ("(g \ w +) \ W (g \ w +)", phần tử)
nếu z:
    print ((z.groups ()))
    
pattern = ['software testing', 'guru99']
text = 'kiểm tra phần mềm có thú vị không?'
cho mẫu trong các mẫu:
    print ('Đang tìm kiếm "% s" trong "% s" - & gt;'% (pattern, text), end = '')
    if re.search (mẫu, văn bản):
        print ('tìm thấy một kết quả phù hợp!')
khác:
    print ('không phù hợp')
abc = 'guru99@google.com, Careerguru99@hotmail.com, users@yahoomail.com'
email = re.findall (r '[\ w \ .-] + @ [\ w \ .-] +', abc)
cho email trong các email:
    in (email) 

Cờ Python

Nhiều Phương thức Regex Python và các hàm Regex có một đối số tùy chọn được gọi là Cờ. Các cờ này có thể sửa đổi ý nghĩa của mẫu Python Regex đã cho. Để hiểu những điều này, chúng ta sẽ xem một hoặc hai ví dụ về các Cờ này.

Các cờ khác nhau được sử dụng trong Python bao gồm

Cú pháp cho Regex Flags
Lá cờ này làm gì

[re.M]
Bắt đầu / kết thúc xem xét từng dòng

[lại tôi]
Nó bỏ qua trường hợp

[re.S]
Làm [ . ]

[re.U]
Làm cho {\ w, \ W, \ b, \ B} tuân theo các quy tắc Unicode

[lại.L]
Đặt {\ w, \ W, \ b, \ B} theo ngôn ngữ

[re.X]
Cho phép bình luận trong Regex

Ví dụ về re.M hoặc Cờ nhiều dòng

Trong nhiều dòng, ký tự mẫu [^] khớp với ký tự đầu tiên của chuỗi và ký tự đầu của mỗi dòng (ngay sau mỗi dòng mới). Trong khi biểu thức nhỏ “w” được sử dụng để đánh dấu khoảng trắng bằng các ký tự. Khi bạn chạy mã, biến đầu tiên “k1” chỉ in ra ký tự ‘g’ cho từ guru99, trong khi khi bạn thêm cờ nhiều dòng, biến này sẽ lấy ra các ký tự đầu tiên của tất cả các phần tử trong chuỗi.

Đây là mã

 nhập lại
xx = "" "guru99
nghề nghiệp99
selen "" "
k1 = re.findall (r "^ \ w", xx)
k2 = re.findall (r "^ \ w", xx, re.MULTILINE)
in (k1)
in (k2) 
  • Chúng tôi đã khai báo biến xx cho chuỗi ”guru99…. Careerguru99… .selenium ”
  • Chạy mã mà không sử dụng cờ nhiều dòng, nó chỉ cung cấp đầu ra là ‘g’ từ các dòng
  • Chạy mã với cờ “multiline”, khi bạn in ‘k2’, nó sẽ đưa ra kết quả là ‘g’, ‘c’ và ‘s’
  • Vì vậy, chúng ta có thể thấy sự khác biệt sau và trước khi thêm nhiều dòng trong ví dụ trên.

Tương tự như vậy, bạn cũng có thể sử dụng các cờ Python khác như re.U (Unicode), re.L (Theo ngôn ngữ), re.X (Cho phép Nhận xét), v.v.

Ví dụ Python 2

Các mã trên là ví dụ về Python 3, Nếu bạn muốn chạy bằng Python 2, vui lòng xem xét mã sau.

 # Ví dụ về biểu thức w + và ^
nhập lại
xx = "guru99, giáo dục là niềm vui"
r1 = re.findall (r "^ \ w +", xx)
in r1

# Ví dụ về biểu thức \ s trong hàm re.split
nhập lại
xx = "guru99, giáo dục là niềm vui"
r1 = re.findall (r "^ \ w +", xx)
print (re.split (r '\ s', 'we are split the words'))
print (re.split (r's ',' split the words '))

# Sử dụng re.findall cho văn bản
nhập lại

list = ["guru99 get", "guru99 give", "guru Selenium"]
cho phần tử trong danh sách:
    z = re.match ("(g \ w +) \ W (g \ w +)", phần tử)
nếu z:
    print (z.groups ())
    
pattern = ['software testing', 'guru99']
text = 'kiểm tra phần mềm có thú vị không?'
cho mẫu trong các mẫu:
    print 'Tìm kiếm "% s" trong "% s" - & gt;' % (mẫu, văn bản),
    if re.search (mẫu, văn bản):
        print 'tìm thấy một kết quả phù hợp!'
khác:
    in 'không khớp'
abc = 'guru99@google.com, Careerguru99@hotmail.com, users@yahoomail.com'
email = re.findall (r '[\ w \ .-] + @ [\ w \ .-] +', abc)
cho email trong các email:
    in email

# Ví dụ về re.M hoặc Cờ nhiều dòng
nhập lại
xx = "" "guru99
nghề nghiệp99
selen "" "
k1 = re.findall (r "^ \ w", xx)
k2 = re.findall (r "^ \ w", xx, re.MULTILINE)
in k1
in k2

Tóm tắt

Biểu thức chính quy trong ngôn ngữ lập trình là một chuỗi văn bản đặc biệt được sử dụng để mô tả một mẫu tìm kiếm. Nó bao gồm các chữ số và dấu câu và tất cả các ký tự đặc biệt như $ # @!%, V.v. Biểu thức có thể bao gồm chữ

  • Đối sánh văn bản
  • Lặp lại
  • Phân nhánh
  • Thành phần mẫu, v.v.
Xem Thêm  Tìm hiểu cách thêm cột trong SQL với ví dụ - thêm cột trong sql

Trong Python, một biểu thức chính quy được ký hiệu là RE (RE (RE, regex hoặc mẫu regex) được nhúng qua mô-đun re của Python.

  • Mô-đun “lại” được bao gồm trong Python chủ yếu được sử dụng để tìm kiếm và thao tác chuỗi
  • Cũng được sử dụng thường xuyên cho trang web “Scraping” (trích xuất một lượng lớn dữ liệu từ các trang web)
  • Phương thức Biểu thức Chính quy bao gồm re.match (), re.search () & amp; re.findall ()
  • Các phương thức thay thế Python RegEx khác là sub () và subn () được sử dụng để thay thế các chuỗi phù hợp trong re
  • Cờ Python Nhiều phương thức Python Regex và các hàm Regex nhận một đối số tùy chọn được gọi là Cờ
  • Các cờ này có thể sửa đổi ý nghĩa của mẫu Regex đã cho
  • Các cờ Python khác nhau được sử dụng trong các Phương thức Regex là re.M, re.I, re.S, v.v.


Xem thêm những thông tin liên quan đến chủ đề đối sánh biểu thức chính quy trong python

Học nhanh Python căn bản cho sinh viên # Bài 7_ Biểu thức chính quy (Regex) trong Python

  • Tác giả: iSpring – Học nhanh & Hiệu quả
  • Ngày đăng: 2021-07-22
  • Đánh giá: 4 ⭐ ( 4097 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Bài này rất cần hay không thể thiếu cho các ứng dụng cần xử lý xâu chuỗi nhiều, ví dụ các ứng dụng đọc dữ liệu từ nguồn các file văn bản. Tuy bài hướng dẫn gắn với Python nhưng phần cú pháp REGEX cũng có thể áp dụng tương tự cho các ngôn ngữ lập trình khác.
    Link tài liệu: https://drive.google.com/drive/folders/1pLqbzJZXGQE9yf7PwMRoMtLd7tdyYc1F

Python – Biểu thức chính quy

  • Tác giả: isolution.pro
  • Đánh giá: 3 ⭐ ( 4533 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Một biểu thức chính quy là một chuỗi đặc biệt của nhân vật giúp bạn kết hợp hoặc tìm chuỗi khác hoặc bộ dây, sử dụng một cú pháp đặc biệt được tổ chức tại một mô hình. Biểu thức chính quy được sử dụng rộng rãi trong thế giới UNIX. Mô-đun Python recung cấp hỗ trợ đầy đủ cho…

Các loại toán tử trong Python

  • Tác giả: t3h.edu.vn
  • Đánh giá: 3 ⭐ ( 4494 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Toán tử trong Python là một ký hiệu thực hiện một phép toán trên một hoặc nhiều toán hạng. Toán hạng là một biến hoặc một giá trị mà chúng ta thực hiện phép toán.

Giới thiệu về biểu thức chính quy trong Python

  • Tác giả: helpex.vn
  • Đánh giá: 5 ⭐ ( 8111 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Các biểu thức chính quy về cơ bản là một ngôn ngữ nhỏ mà chúng có thể sử dụng bên trong Python và nhiều ngôn ngữ lập trình khác. Bạn sẽ thường nghe thấy các biểu thức thông thường được gọi…

[Tự học python] Kết hợp các toán tử so sánh trong Python

  • Tác giả: cafedev.vn
  • Đánh giá: 3 ⭐ ( 7884 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Trong các ngôn ngữ lập trình, việc kiểm tra từ hai điều kiện trở lên là điều rất phổ biến. Giả sử chúng ta muốn kiểm tra điều kiện dưới đây:

Regular Expression (RegEx) trong Python

  • Tác giả: quantrimang.com
  • Đánh giá: 4 ⭐ ( 2185 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Regular Expression (RegEx) hay còn gọi là Biểu thức chính quy là một đoạn các ký tự đặc biệt theo những khuôn mẫu (pattern) nhất định

Chi tiết bài học 14.Biểu thức chính quy trong Python

  • Tác giả: vimentor.com
  • Đánh giá: 4 ⭐ ( 6693 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Vimentor chi tiết bài học Biểu thức chính quy trong Python: re.match (), re.search (), re.findall () với Ví dụ

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình