Hướng dẫn what is finditer in python? - công cụ tìm kiếm trong python là gì?

Tóm tắt: Trong hướng dẫn này, bạn sẽ học cách sử dụng hàm Python Regex

import re s = 'Readability counts.' pattern = r'[aeoui]' matches = re.finditer(pattern, s) for match in matches: print(match)

Code language: Python (python)
3 để tìm tất cả các khớp trong một chuỗi và trả về trình lặp lại mang lại các đối tượng phù hợp.: in this tutorial, you’ll learn how to use the Python regex

import re s = 'Readability counts.' pattern = r'[aeoui]' matches = re.finditer(pattern, s) for match in matches: print(match)

Code language: Python (python)
3 function to find all matches in a string and return an iterator that yields match objects.

Giới thiệu về chức năng Finditer Python Regex

Hàm

import re s = 'Readability counts.' pattern = r'[aeoui]' matches = re.finditer(pattern, s) for match in matches: print(match)

Code language: Python (python)
3 khớp với một mẫu trong một chuỗi và trả về một trình lặp lại mang lại các đối tượng

import re s = 'Readability counts.' pattern = r'[aeoui]' matches = re.finditer(pattern, s) for match in matches: print(match)

Code language: Python (python)
5 của tất cả các trận đấu không chồng chéo.

Sau đây cho thấy cú pháp của hàm

import re s = 'Readability counts.' pattern = r'[aeoui]' matches = re.finditer(pattern, s) for match in matches: print(match)

Code language: Python (python)
3:

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

Code language: Python (python)

Trong cú pháp này:

  • import re s = 'Readability counts.' pattern = r'[aeoui]' matches = re.finditer(pattern, s) for match in matches: print(match)

    Code language: Python (python)
    7 là biểu thức chính quy mà bạn muốn tìm kiếm trong chuỗi.
  • import re s = 'Readability counts.' pattern = r'[aeoui]' matches = re.finditer(pattern, s) for match in matches: print(match)

    Code language: Python (python)
    8 là chuỗi đầu vào.
  • Tham số

    import re s = 'Readability counts.' pattern = r'[aeoui]' matches = re.finditer(pattern, s) for match in matches: print(match)

    Code language: Python (python)
    9 là tùy chọn và mặc định về 0. Tham số

    import re s = 'Readability counts.' pattern = r'[aeoui]' matches = re.finditer(pattern, s) for match in matches: print(match)

    Code language: Python (python)
    9 chấp nhận một hoặc nhiều cờ regex. Tham số

    import re s = 'Readability counts.' pattern = r'[aeoui]' matches = re.finditer(pattern, s) for match in matches: print(match)

    Code language: Python (python)
    9 thay đổi cách động cơ Regex khớp với mẫu.

Nếu tìm kiếm thành công, hàm

import re s = 'Readability counts.' pattern = r'[aeoui]' matches = re.finditer(pattern, s) for match in matches: print(match)

Code language: Python (python)
3 trả về một trình lặp lại mang lại các đối tượng

import re s = 'Readability counts.' pattern = r'[aeoui]' matches = re.finditer(pattern, s) for match in matches: print(match)

Code language: Python (python)
5. Mặt khác,

import re s = 'Readability counts.' pattern = r'[aeoui]' matches = re.finditer(pattern, s) for match in matches: print(match)

Code language: Python (python)
3 cũng trả về một trình lặp sẽ không mang lại đối tượng

import re s = 'Readability counts.' pattern = r'[aeoui]' matches = re.finditer(pattern, s) for match in matches: print(match)

Code language: Python (python)
5.

Ví dụ sau sử dụng hàm

import re s = 'Readability counts.' pattern = r'[aeoui]' matches = re.finditer(pattern, s) for match in matches: print(match)

Code language: Python (python)
3 để tìm kiếm tất cả các nguyên âm trong một chuỗi:

import re s = 'Readability counts.' pattern = r'[aeoui]' matches = re.finditer(pattern, s) for match in matches: print(match)

Code language: Python (python)

Output:

1, 2), match='e'> 2, 3), match='a'> 4, 5), match='a'> 6, 7), match='i'> 8, 9), match='i'> 13, 14), match='o'> 14, 15), match='u'>

Code language: Python (python)

Bản tóm tắt

  • Sử dụng chức năng

    import re s = 'Readability counts.' pattern = r'[aeoui]' matches = re.finditer(pattern, s) for match in matches: print(match)

    Code language: Python (python)
    3 để khớp một mẫu trong chuỗi và trả về trình lặp mang lại cho các đối tượng khớp.

Nó có nghĩa là,

import re s = 'Readability counts.' pattern = r'[aeoui]' matches = re.finditer(pattern, s) for match in matches: print(match)

Code language: Python (python)
3 trả về một đối tượng có thể gọi sẽ tải kết quả trong bộ nhớ khi được gọi. Vui lòng tham khảo câu trả lời StackoverFlow này để biết được lợi ích hiệu suất của các trình lặp.Python » RegEx » Python Regex Find All Matches using findall() and finditer()

Trong bài viết này, chúng tôi sẽ học cách tìm tất cả các trận đấu với biểu thức thông thường trong Python. Phương thức RE Module ____ ____28 quét mẫu regex thông qua toàn bộ chuỗi mục tiêu và trả về tất cả các trận đấu được tìm thấy dưới dạng một danh sách.find all matches to the regular expression in Python. The RE module’s

1, 2), match='e'> 2, 3), match='a'> 4, 5), match='a'> 6, 7), match='i'> 8, 9), match='i'> 13, 14), match='o'> 14, 15), match='u'>

Code language: Python (python)
8 method scans the regex pattern through the entire target string and returns all the matches that were found in the form of a list.

Cách sử dụng Re.Findall ()

Trước khi di chuyển xa hơn, hãy để Lừa xem cú pháp của phương pháp

1, 2), match='e'> 2, 3), match='a'> 4, 5), match='a'> 6, 7), match='i'> 8, 9), match='i'> 13, 14), match='o'> 14, 15), match='u'>

Code language: Python (python)
8.

Syntax::

re.findall(pattern, string, flags=0)
  1. import re s = 'Readability counts.' pattern = r'[aeoui]' matches = re.finditer(pattern, s) for match in matches: print(match)

    Code language: Python (python)
    7: mẫu biểu thức chính quy mà chúng tôi muốn tìm trong chuỗi hoặc văn bản
  2. import re s = 'Readability counts.' pattern = r'[aeoui]' matches = re.finditer(pattern, s) for match in matches: print(match)

    Code language: Python (python)
    8: Đó là & nbsp; biến chỉ vào chuỗi đích (trong đó chúng tôi muốn tìm kiếm sự xuất hiện của mẫu).
  3. re.findall(pattern, string, flags=0)
    2: Nó đề cập đến cờ Regex tùy chọn. Theo mặc định, không có cờ được áp dụng. Ví dụ: cờ & nbsp; ________ 33 được sử dụng để thực hiện các phát hiện không nhạy cảm trường hợp.. by default, no flags are applied. For example, the 
    re.findall(pattern, string, flags=0)
    3 flag is used for performing case-insensitive findings.

Mẫu biểu thức chính quy và chuỗi đích là các đối số bắt buộc và cờ là tùy chọn.

Giá trị trả về

1, 2), match='e'> 2, 3), match='a'> 4, 5), match='a'> 6, 7), match='i'> 8, 9), match='i'> 13, 14), match='o'> 14, 15), match='u'>

Code language: Python (python)
8 quét chuỗi mục tiêu từ trái sang phải theo mẫu biểu thức chính quy và trả về tất cả các trận đấu theo thứ tự chúng được tìm thấy.

Nó trả về

re.findall(pattern, string, flags=0)
5 nếu nó không xác định được các lần xuất hiện của mẫu hoặc một mẫu như vậy không tồn tại trong một chuỗi đích.

Hướng dẫn what is finditer in python? - công cụ tìm kiếm trong python là gì?
Regex Findall

Ví dụ để tìm tất cả các kết quả phù hợp với mẫu regex

Trong ví dụ này, chúng tôi sẽ tìm thấy tất cả các số có bên trong chuỗi đích. Để đạt được điều này, hãy để viết một mẫu Regex.

Mẫu:

re.findall(pattern, string, flags=0)
6:
re.findall(pattern, string, flags=0)
6

Mô hình này có nghĩa là gì?

  • re.findall(pattern, string, flags=0)
    7 là một chuỗi Regex đặc biệt phù hợp với bất kỳ chữ số nào từ 0 đến 9 trong chuỗi đích.
  • ____ 38 & nbsp; Metacharacter cho biết số có thể chứa tối thiểu một hoặc tối đa bất kỳ số chữ số nào.

Nói một cách đơn giản, nó có nghĩa là để phù hợp với bất kỳ số nào bên trong chuỗi mục tiêu sau.match any number inside the following target string.

target_string = "Emma is a basketball player who was born on June 17, 1993. She played 112 matches with scoring average 26.12 points per game. Her weight is 51 kg."

Như chúng ta có thể thấy trong chuỗi ở trên, 17, 17, ’1993,‘ 112 ,, 26,, 12, 121, vì vậy chúng ta nên có tất cả những con số đó trong đầu ra.

Thí dụ

import re

target_string = "Emma is a basketball player who was born on June 17, 1993. She played 112 matches with scoring average 26.12 points per game. Her weight is 51 kg."
result = re.findall(r"\d+", target_string)

# print all matches
print("Found following matches")
print(result)

# Output ['17', '1993', '112', '26', '12', '51']

Note::

Trước hết, tôi đã sử dụng một chuỗi thô để chỉ định mẫu biểu thức chính quy i.e

re.findall(pattern, string, flags=0)
9. Như bạn có thể đã biết, dấu gạch chéo ngược có ý nghĩa đặc biệt trong một số trường hợp vì nó có thể chỉ ra một ký tự thoát hoặc trình tự thoát để tránh rằng chúng ta phải sử dụng chuỗi RAW.raw string to specify the regular expression pattern i.e
re.findall(pattern, string, flags=0)
9. As you may already know, the backslash has a special meaning in some cases because it may indicate an escape character or escape sequence to avoid that we must use raw string.

Phương pháp Finditer

target_string = "Emma is a basketball player who was born on June 17, 1993. She played 112 matches with scoring average 26.12 points per game. Her weight is 51 kg."
0 hoạt động chính xác giống như phương thức

1, 2), match='e'> 2, 3), match='a'> 4, 5), match='a'> 6, 7), match='i'> 8, 9), match='i'> 13, 14), match='o'> 14, 15), match='u'>

Code language: Python (python)
8 ngoại trừ nó trả về một iterator mang lại các đối tượng khớp khớp với mẫu regex trong một chuỗi thay vì một danh sách.returns an iterator yielding match objects matching the regex pattern in a string instead of a list.

Nó quét chuỗi từ trái sang phải và các trận đấu được trả về ở dạng lặp. Sau đó, chúng ta có thể sử dụng đối tượng Iterator này để trích xuất tất cả các trận đấu.

Nói một cách đơn giản,

import re s = 'Readability counts.' pattern = r'[aeoui]' matches = re.finditer(pattern, s) for match in matches: print(match)

Code language: Python (python)
3 trả về một trình lặp qua & nbsp; matchObject & nbsp; đối tượng.

Hướng dẫn what is finditer in python? - công cụ tìm kiếm trong python là gì?
Regex finditer ()

Nhưng tại sao sử dụng

import re s = 'Readability counts.' pattern = r'[aeoui]' matches = re.finditer(pattern, s) for match in matches: print(match)

Code language: Python (python)
3?

Trong một số kịch bản, số lượng trận đấu cao và bạn có thể có nguy cơ lấp đầy bộ nhớ của mình bằng cách tải tất cả chúng bằng cách sử dụng

target_string = "Emma is a basketball player who was born on June 17, 1993. She played 112 matches with scoring average 26.12 points per game. Her weight is 51 kg."
4. Thay vì sử dụng

import re s = 'Readability counts.' pattern = r'[aeoui]' matches = re.finditer(pattern, s) for match in matches: print(match)

Code language: Python (python)
3, bạn có thể nhận được tất cả các trận đấu có thể dưới dạng đối tượng Iterator, điều này sẽ cải thiện hiệu suất.

Nó có nghĩa là,

import re s = 'Readability counts.' pattern = r'[aeoui]' matches = re.finditer(pattern, s) for match in matches: print(match)

Code language: Python (python)
3 trả về một đối tượng có thể gọi sẽ tải kết quả trong bộ nhớ khi được gọi. Vui lòng tham khảo câu trả lời StackoverFlow này để biết được lợi ích hiệu suất của các trình lặp.

Ví dụ tìm kiếm

Bây giờ, hãy để Lừa xem ví dụ để tìm cả hai chữ số liên tiếp bên trong chuỗi mục tiêu.

import re

target_string = "Emma is a basketball player who was born on June 17, 1993. She played 112 matches with a scoring average of 26.12 points per game. Her weight is 51 kg."

# finditer() with regex pattern and target string
# \d{2} to match two consecutive digits 
result = re.finditer(r"\d{2}", target_string)

# print all match object
for match_obj in result:
    # print each re.Match object
    print(match_obj)
    
    # extract each matching number
    print(match_obj.group())

Output::

re.Match object; span=(49, 51), match='17'
17
re.Match object; span=(53, 55), match='19'
19
re.Match object; span=(55, 57), match='93'
93
re.Match object; span=(70, 72), match='11'
11
re.Match object; span=(103, 105), match='26'
26
re.Match object; span=(106, 108), match='12'
12
re.Match object; span=(140, 142), match='51'
51

Sử dụng nhiều hơn

  • Sử dụng Finditer để tìm các chỉ mục của tất cả các trận đấu Regex
  • Regex Findall Biểu tượng đặc biệt từ một chuỗi

Regex tìm tất cả từ bắt đầu bằng các chữ cái cụ thể

Trong ví dụ này, chúng ta sẽ thấy giải quyết 2 kịch bản

  1. Tìm tất cả các từ bắt đầu bằng một chữ cái/ký tự cụ thể
  2. Tìm tất cả các từ bắt đầu bằng một nền tảng cụ thể

Bây giờ, hãy để giả sử bạn có chuỗi sau:

target_string = "Jessa is a Python developer. She also gives Python programming training"

Bây giờ, hãy để Lừa tìm tất cả các từ bắt đầu bằng chữ p. Ngoài ra, hãy tìm tất cả các từ bắt đầu bằng conp. Also, find all words that start with substring ‘py

Mẫu:

target_string = "Emma is a basketball player who was born on June 17, 1993. She played 112 matches with scoring average 26.12 points per game. Her weight is 51 kg."
7:
target_string = "Emma is a basketball player who was born on June 17, 1993. She played 112 matches with scoring average 26.12 points per game. Her weight is 51 kg."
7

  • target_string = "Emma is a basketball player who was born on June 17, 1993. She played 112 matches with scoring average 26.12 points per game. Her weight is 51 kg."
    8 là một ranh giới từ, sau đó p trong khung vuông
    target_string = "Emma is a basketball player who was born on June 17, 1993. She played 112 matches with scoring average 26.12 points per game. Her weight is 51 kg."
    9 có nghĩa là từ phải bắt đầu với chữ cái p ‘.p‘.
  • Tiếp theo,
    import re
    
    target_string = "Emma is a basketball player who was born on June 17, 1993. She played 112 matches with scoring average 26.12 points per game. Her weight is 51 kg."
    result = re.findall(r"\d+", target_string)
    
    # print all matches
    print("Found following matches")
    print(result)
    
    # Output ['17', '1993', '112', '26', '12', '51']
    0 có nghĩa là một hoặc nhiều ký tự chữ và chữ cái sau một chữ cái
  • Cuối cùng, chúng tôi đã sử dụng
    target_string = "Emma is a basketball player who was born on June 17, 1993. She played 112 matches with scoring average 26.12 points per game. Her weight is 51 kg."
    8 để chỉ ra ranh giới từ, tức là cuối của từ.

Thí dụ

import re

target_string = "Jessa is a Python developer. She also gives Python programming training"
# all word starts with letter 'p'
print(re.findall(r'\b[p]\w+\b', target_string, re.I))
# output ['Python', 'Python', 'programming']

# all word starts with substring 'Py'
print(re.findall(r'\bpy\w+\b', target_string, re.I))
# output ['Python', 'Python']

Regex để tìm tất cả các từ bắt đầu và kết thúc bằng một chữ cái cụ thể

Trong ví dụ này, chúng ta sẽ thấy giải quyết 2 kịch bản

  1. Tìm tất cả các từ bắt đầu và kết thúc bằng một chữ cái cụ thể
  2. Tìm tất cả các từ bắt đầu và kết thúc bằng một chuỗi con cụ thể

Thí dụ

import re s = 'Readability counts.' pattern = r'[aeoui]' matches = re.finditer(pattern, s) for match in matches: print(match)

Code language: Python (python)
0

Regex để tìm tất cả các từ bắt đầu và kết thúc bằng một chữ cái cụ thể

Trong ví dụ này, chúng ta sẽ thấy giải quyết 2 kịch bản

import re s = 'Readability counts.' pattern = r'[aeoui]' matches = re.finditer(pattern, s) for match in matches: print(match)

Code language: Python (python)
1

Tìm tất cả các từ bắt đầu và kết thúc bằng một chữ cái cụ thể

Tìm tất cả các từ bắt đầu và kết thúc bằng một chuỗi con cụ thể

Regex để tìm tất cả các từ chứa một chữ cái nhất định

Thí dụ

import re s = 'Readability counts.' pattern = r'[aeoui]' matches = re.finditer(pattern, s) for match in matches: print(match)

Code language: Python (python)
2

Việc sử dụng Finditer trong Python là gì?

Phương thức Finditer Nó quét chuỗi từ trái sang phải và các trận đấu được trả về ở dạng lặp. Sau đó, chúng ta có thể sử dụng đối tượng Iterator này để trích xuất tất cả các trận đấu. Nói một cách đơn giản, finditer () trả về một trình lặp qua các đối tượng matchObject.It scans the string from left to right, and matches are returned in the iterator form. Later, we can use this iterator object to extract all matches. In simple words, finditer() returns an iterator over MatchObject objects.

Sự khác biệt giữa Findall và Finditer trong Python là gì?

Nhưng Finditer và Findall đang tìm thấy những thứ khác nhau.Findall thực sự tìm thấy tất cả các trận đấu trong chuỗi đã cho. Nhưng FindIter chỉ tìm thấy phần đầu tiên, trả về một trình lặp chỉ có một phần tử.Findall indeed finds all the matches in the given string. But finditer only finds the first one, returning an iterator with only one element.

Biên dịch lại được sử dụng để làm gì?

Python's re.Phương thức Compile () được sử dụng để biên dịch một mẫu biểu thức chính quy được cung cấp dưới dạng chuỗi thành một đối tượng mẫu regex (mẫu lại).Sau đó, chúng ta có thể sử dụng đối tượng mẫu này để tìm kiếm một trận đấu bên trong các chuỗi mục tiêu khác nhau bằng các phương thức regex như RE.to compile a regular expression pattern provided as a string into a regex pattern object ( re. Pattern ). Later we can use this pattern object to search for a match inside different target strings using regex methods such as a re.

Tìm kiếm lại RE trở lại trong Python là gì?

Hàm RE.Search () sẽ tìm kiếm mẫu biểu thức thông thường 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.Nếu mẫu được tìm thấy, đối tượng khớp sẽ được trả về, nếu không thì NULL, được trả về.the first occurrence. Unlike Python re. match(), it will check all lines of the input string. If the pattern is found, the match object will be returned, otherwise “null” is returned.