Gói Python lại 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ẫ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 cần nhận ra là 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ân vân

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

  • Cú pháp biểu thức chính quy
  • Ví dụ về biểu thức w+ và ^
  • Ví dụ về biểu thức \s trong re. chức năng phân chia
  • Sử dụng các phương thức biểu thức chính quy
  • Sử dụng lại. trận đấu[]
  • Tìm mẫu trong văn bản [tái. Tìm kiếm[]]
  • Sử dụng lại. tìm tất cả cho văn bản
  • Cờ Python
  • Ví dụ về lại. Cờ M hoặc nhiều dòng

Chẳng hạn, 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 hiện có thể bao gồm

  • đối sánh văn bản
  • sự lặp lại
  • phân nhánh
  • Thành phần mô hình, v.v.

Biểu thức chính quy hoặc RegEx trong Python được ký hiệu là RE [RE, biểu thức chính quy hoặc mẫu biểu thức chính quy] được nhập thông qua mô-đun re. 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ư Công cụ sửa đổi, Số nhận dạng và Ký tự khoảng trắng

IdentifiersModifiersKý tự khoảng trắngYêu cầu thoát\d= bất kỳ số nào [một chữ số]\d đại diện cho một chữ số. Bán tại. \d{1,5} nó sẽ khai báo chữ số trong khoảng 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ố]+ = khớp với 1 hoặc nhiều hơn\s= dấu cách\s = dấu cách
[tab,dấu cách,dòng mới, v.v. ]? . = bất cứ thứ gì trừ 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} = số lượng mã trước đó—————–

Cú pháp biểu thức chính quy[RE]

import re
  • Mô-đun “re” đi kèm với Python được sử dụng chủ yếu để 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 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 với 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ề biểu thức w+ và ^

  • “^”. 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ề RegEx của Python 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 bao hàm lại. findall[] trong Python, ở phần sau của hướng dẫn này nhưng trong một thời gian, chúng ta chỉ tập trung vào biểu thức \w+ và \^

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

import re
xx = "guru99,education is fun"
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, i. e. , [g]

Ví dụ về biểu thức \s trong re. chức năng phân chia

  • "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 này trong Python, chúng ta bắt đầu với một Ví dụ RegEx 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 “re. split” và đồng thời chúng tôi đã sử dụng biểu thức \s cho phép phân tích từng từ trong chuỗi một cách riêng biệt

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

Bây giờ, hãy xem điều gì 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 đã xóa '\' khỏi chuỗi và nó đánh giá “s” là một ký tự thông thường và do đó phân tách các từ ở bất kỳ nơi nào nó tìm thấy “s” trong chuỗi

Tương tự, có một loạt 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

import re
xx = "guru99,education is fun"
r1 = re.findall[r"^\w+", xx]
print[[re.split[r'\s','we are splitting the words']]]
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 các 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 re trong Python

  • lại. trận đấu[]
  • lại. Tìm kiếm[]
  • lại. tìm tất cả []

Ghi chú. Dựa trên các biểu thức chính quy, Python cung cấp hai thao tác nguyên thủy khác nhau. Phương thức match chỉ kiểm tra sự trùng khớp ở đầu chuỗi trong khi search kiểm tra sự trùng khớp ở bất kỳ đâu trong chuỗi

lại. trận đấu[]

lại. hàm match[] 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 RegEx Match của Python chỉ kiểm tra sự trùng khớp ở đầu chuỗi. Vì vậy, nếu một kết quả khớp được tìm thấy trong dòng đầu tiên, nó sẽ trả về đối tượng khớp. Nhưng nếu một kết quả phù hợp được tìm thấy trong một số dòng khác, hàm Python RegEx Match trả về giá trị rỗng

Ví dụ, xét đoạn mã sau của Python re. hàm match[]. 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' đều không được xác định. Để kiểm tra sự trùng khớp cho từng phần tử trong danh sách hoặc chuỗi, chúng tôi chạy vòng lặp for trong Python này. khớp [] Ví dụ

lại. Tìm kiếm[]. Tìm mẫu trong văn bản

lại. hàm 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 lại. match[], nó sẽ kiểm tra tất cả các dòng của chuỗi đầu vào. Python lại. hàm search[] 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

Làm thế nào để sử dụng tìm kiếm[]?

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

Ví dụ ở đây, chúng tôi tìm kiếm hai chuỗi ký tự “Kiểm thử phần mềm” “guru99”, trong chuỗi văn bản “Kiểm thử phần mềm rất thú vị”. Đối với phần mềm 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ề đầu ra của Python re. search[] Ví dụ như “đã tìm thấy kết quả khớ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”

lại. tìm tất cả []

mô-đun findall[] được sử dụng để tìm kiếm các lần xuất hiện “tất cả” khớ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 khớp với mẫu đã chỉ định. findall[] sẽ lặp qua tất cả các dòng của tệp và sẽ trả về tất cả các kết quả khớp mẫu không chồng chéo trong một bước

Làm thế nào để sử dụng lại. findall[] bằng 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 lấy ra khỏi danh sách, chúng tôi sử dụng phương pháp re. tìm tất cả [] 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. tìm tất cả []

import re

list = ["guru99 get", "guru99 give", "guru Selenium"]
for element in list:
    z = re.match["[g\w+]\W[g\w+]", element]
if z:
    print[[z.groups[]]]
    
patterns = ['software testing', 'guru99']
text = 'software testing is fun?'
for pattern in patterns:
    print['Looking for "%s" in "%s" ->' % [pattern, text], end=' ']
    if re.search[pattern, text]:
        print['found a match!']
else:
    print['no match']
abc = 'guru99@google.com, careerguru99@hotmail.com, users@yahoomail.com'
emails = re.findall[r'[\w\.-]+@[\w\.-]+', abc]
for email in emails:
    print[email]

Cờ Python

Nhiều Phương thức Regex trong Python và các hàm Regex nhận một đối số tùy chọn có tên là Flags. Cờ này có thể sửa đổi ý nghĩa của mẫu Regex Python đã 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 Cờ RegexCờ này làm gì[re. M]Hãy bắt đầu/kết thúc xem xét từng dòng[re. Tôi] Nó bỏ qua trường hợp [re. S]Làm [. ][lại. U]Tạo { \w,\W,\b,\B} tuân theo quy tắc Unicode[re. L]Đặt {\w,\W,\b,\B} theo ngôn ngữ[re. X] Cho phép nhận xét trong Regex

Ví dụ về lại. Cờ M hoặ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à đầu 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, nó sẽ tìm nạp các ký tự đầu tiên của tất cả các thành phần trong chuỗi

Đây là mã

import re
xx = """guru99 
careerguru99	
selenium"""
k1 = re.findall[r"^\w", xx]
k2 = re.findall[r"^\w", xx, re.MULTILINE]
print[k1]
print[k2]
  • Chúng tôi đã khai báo biến xx cho chuỗi ” guru99…. Careerguru99…. selen”
  • Chạy mã mà không sử dụng cờ nhiều dòng, nó chỉ cho đầu ra là 'g' từ các dòng
  • Chạy mã với cờ “multiline”, khi bạn in ‘k2’, nó cho đầu ra là ‘g’, ‘c’ và ‘s’
  • Vì vậy, sự khác biệt chúng ta có thể thấy 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], lại. L [Theo ngôn ngữ], lại. X [Cho phép nhận xét], v.v.

Ví dụ về Python 2

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

# Example of w+ and ^ Expression
import re
xx = "guru99,education is fun"
r1 = re.findall[r"^\w+",xx]
print r1

# Example of \s expression in re.split function
import re
xx = "guru99,education is fun"
r1 = re.findall[r"^\w+", xx]
print [re.split[r'\s','we are splitting the words']]
print [re.split[r's','split the words']]

# Using re.findall for text
import re

list = ["guru99 get", "guru99 give", "guru Selenium"]
for element in list:
    z = re.match["[g\w+]\W[g\w+]", element]
if z:
    print[z.groups[]]
    
patterns = ['software testing', 'guru99']
text = 'software testing is fun?'
for pattern in patterns:
    print 'Looking for "%s" in "%s" ->' % [pattern, text],
    if re.search[pattern, text]:
        print 'found a match!'
else:
    print 'no match'
abc = 'guru99@google.com, careerguru99@hotmail.com, users@yahoomail.com'
emails = re.findall[r'[\w\.-]+@[\w\.-]+', abc]
for email in emails:
    print email

# Example of re.M or Multiline Flags
import re
xx = """guru99 
careerguru99	
selenium"""
k1 = re.findall[r"^\w", xx]
k2 = re.findall[r"^\w", xx, re.MULTILINE]
print k1
print k2

Tóm lược

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ẫu tìm kiếm. 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ân vân. Biểu thức có thể bao gồm nghĩa đen

  • đối sánh văn bản
  • sự lặp lại
  • phân nhánh
  • Thành phần mô hình, v.v.

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

Việc sử dụng mô-đun lại là gì?

Mô-đun re cung cấp một tập hợp các tiện ích biểu thức chính quy mạnh mẽ, cho phép bạn nhanh chóng kiểm tra xem một chuỗi đã cho có khớp với một mẫu nhất định hay không [sử dụng hàm khớp] hoặc có chứa một mẫu như vậy [sử dụng chức năng tìm kiếm]

r có nghĩa là gì trong Python re?

R có nghĩa là chuỗi sẽ được coi là chuỗi thô , nghĩa là tất cả các mã thoát sẽ bị bỏ qua.

Làm cách nào để cài đặt lại trong Python?

Gõ "cmd" vào thanh tìm kiếm và nhấn Enter để mở dòng lệnh. Cái này là cái gì? . Điều này cài đặt regex cho cài đặt Python mặc định của bạn. Type “ pip install regex ” [without quotes] in the command line and hit Enter again. This installs regex for your default Python installation.

Được tích hợp lại vào Python?

Python có gói dựng sẵn có tên là re , gói này có thể được sử dụng để làm việc với Biểu thức chính quy.

Chủ Đề