Hướng dẫn dùng match search python

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ũng đượ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ẽ học-

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 hiện có thể bao gồm

  • Đối sánh văn bản
  • Sự lặp lại
  • Sự phân nhánh
  • Thành phần hoa văn, 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ư Modifiers, Identifiers, and White space characters.

Định danhBổ ngữKý tự khoảng trắngYê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 hơn s = khoảng trắng
s = khoảng trắng
(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 = chữ cái (Khớp ký tự chữ và số, bao gồm _) $ khớp cuối của một chuỗi r = xuống dòng
W = bất kỳ thứ gì trừ các chữ cái (Đối sánh 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 variance —————-
. {x} = lượng mã trước đó —————–

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

import re
  • re đượ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 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ề w + và ^ Expression

  • ^: Biểu thức này khớp với phần bắt đầu của một chuỗi
  • w+: This expression matches the alphanumeric character in the string

Ở đâ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, education is fun nếu chúng ta thực thi mã với w + và ^, nó sẽ đưa ra kết quả 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, tức là [g]

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 một Ví dụ về RegEx trong Python đơn giản về một hàm tách. Trong ví dụ, chúng tôi đã tách từng từ bằng cách sử dụng re.split đồng thời chúng ta đã sử dụng biểu thức s cho phép phân tích cú pháp 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 đầ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 from s. There is no ‘s’ alphabet in the output, this is because we have removed ‘’ from the string, and it evaluates s như 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.

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

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

Các 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 ()
  • nghiên cứu()
  • re.findall ()

Ghi chú: 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() 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 Python RegEx Match chỉ kiểm tra kết quả khớp ở phần đầu của 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 một kết quả khớp được tìm thấy 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. Cách diễn đạt w+W sẽ khớp với các từ bắt đầu bằng ký tự ‘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ự phù hợ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ụ Python re.match () này.

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

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 mẫu không được tìm thấy

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

Để 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 patterntext để 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 chữ Software testing guru99trong một chuỗi văn bản Software Testing is fun. Vì software testing 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ụ như found a matchtrong khi từng chữ guru99 chúng tôi không thể tìm thấy trong chuỗi do đó nó trả về kết quả đầu ra là No match.

re.findall ()

findall() được sử dụng để tìm kiếm all 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 trùng khớp không trùng lặp trong một bước duy nhất.

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 ()

import re list = ["guru99 get", "guru99 give", "guru Selenium"] for element in list: z = re.match("(gw+)W(gw+)", 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="[email protected], [email protected], [email protected]" emails = re.findall(r'[w.-][email protected][w.-]+', abc) for email in emails: print(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 FlagsLá cờ này làm gì
[re.M] Bắt đầu / kết thúc xem xét từng dòng
[re.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
[re.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 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 hiện 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ẽ 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ã

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 string guru99…. nghề nghiệp99… .selenium
  • Chạy mã mà không sử dụng cờ nhiều dòng, nó chỉ cho kết quả đầu ra là ‘g’ từ các dòng
  • Chạy mã với cờ multilinekhi bạn in ‘k2’, nó cho kết quả 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), 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ụ Python 3, Nếu bạn muốn chạy bằng 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("(gw+)W(gw+)", 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="[email protected], [email protected], [email protected]" emails = re.findall(r'[w.-][email protected][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

Bản 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
  • Sự lặp lại
  • Sự phân nhánh
  • Thành phần hoa văn, v.v.

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

  • re đượ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)
  • Regular Expression Methods include re.match (), re.search () & 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
  • Python Flags Nhiều phương thức Python Regex 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 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.

Chủ đề