Hướng dẫn search for multiple patterns in a string python - tìm kiếm nhiều mẫu trong chuỗi python

Xin lỗi nếu điều này đã được hỏi, mặc dù tôi không thể tìm thấy nó. Tôi đang cố gắng phát hiện nếu một trang web sử dụng WordPress. Đây là mã mẫu.

url = input["Please enter the URL"]
if '//' in url:
    append = url
else:
    append = '//' + url
r = requests.get[append + "/robots.txt"]
    response = r.text
if re.search[['/wp-includes/'] | ['/wp-admin/'], response]:
    print["{0} --> Its Wordpress ".format[append]]
    sys.exit[0]

Nó nói | Nhà điều hành không thể được sử dụng, trong

if re.search[['/wp-includes/'] | ['/wp-admin/'], response]: 

Làm thế nào tôi có thể tìm kiếm nhiều chuỗi, với hoặc giữa chúng? Tôi cũng đã thử sử dụng 'hoặc' và thử cái này

if re.search['/wp-includes/' , '/wp-admin/'], response]:

Cảm ơn

Phương pháp Python Regex

if re.search[['/wp-includes/'] | ['/wp-admin/'], response]: 
0 tìm kiếm sự xuất hiện của mẫu regex bên trong toàn bộ chuỗi mục tiêu và trả về thể hiện đối tượng đối sánh tương ứng nơi tìm thấy đối sánh.

if re.search[['/wp-includes/'] | ['/wp-admin/'], response]: 
0 chỉ trả về trận đấu đầu tiên với mẫu từ chuỗi đích. Sử dụng
if re.search[['/wp-includes/'] | ['/wp-admin/'], response]: 
0 để tìm kiếm mẫu ở bất cứ đâu trong chuỗi.

Cách sử dụng
if re.search[['/wp-includes/'] | ['/wp-admin/'], response]: 
0

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

Cú pháp

re.search[pattern, string, flags=0]

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.

  • if re.search[['/wp-includes/'] | ['/wp-admin/'], response]: 
    
    4: Đối số đầu tiên là mẫu biểu thức chính quy mà chúng tôi muốn tìm kiếm bên trong chuỗi đích.
  • if re.search[['/wp-includes/'] | ['/wp-admin/'], response]: 
    
    5: Đối số thứ hai là 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].
  • if re.search[['/wp-includes/'] | ['/wp-admin/'], response]: 
    
    6: Cuối cùng, đối số thứ ba là tùy chọn và nó đề cập đến các cờ Regex theo mặc định Không có cờ nào được áp dụng.regex flags by default no flags are applied.

Có nhiều giá trị cờ chúng ta có thể sử dụng. Ví dụ,

if re.search[['/wp-includes/'] | ['/wp-admin/'], response]: 
7 được sử dụng để thực hiện tìm kiếm không nhạy cảm trường hợp. Chúng ta cũng có thể kết hợp nhiều cờ bằng bitwise hoặc [toán tử
if re.search[['/wp-includes/'] | ['/wp-admin/'], response]: 
8].

Giá trị trả về

Phương thức

if re.search[['/wp-includes/'] | ['/wp-admin/'], response]: 
0 trả về một đối tượng khớp [nghĩa là, ____ 20]. & NBSP; Đối tượng phù hợp này chứa hai mục sau.
if re.search['/wp-includes/' , '/wp-admin/'], response]:
0
]. This match object contains the following two items.

  1. Đối tượng tuple chứa chỉ số bắt đầu và kết thúc của một trận đấu thành công.
  2. Thứ hai, nó chứa một giá trị phù hợp thực tế mà chúng ta có thể truy xuất bằng phương pháp
    if re.search['/wp-includes/' , '/wp-admin/'], response]:
    
    1.

Nếu phương thức

if re.search[['/wp-includes/'] | ['/wp-admin/'], response]: 
0 không xác định được các lần xuất hiện của mẫu mà chúng ta muốn tìm hoặc một mẫu như vậy không tồn tại trong chuỗi đích, nó sẽ trả về một loại không.

Bây giờ, hãy để Lừa xem cách sử dụng

if re.search[['/wp-includes/'] | ['/wp-admin/'], response]: 
0.

Ví dụ tìm kiếm regex - tìm một từ bên trong chuỗi đích

Bây giờ, hãy để Lừa xem cách sử dụng

if re.search[['/wp-includes/'] | ['/wp-admin/'], response]: 
0 để tìm kiếm mẫu sau trong một chuỗi.

Mẫu:

if re.search['/wp-includes/' , '/wp-admin/'], response]:
5

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

  • if re.search['/wp-includes/' , '/wp-admin/'], response]:
    
    6 là một chuỗi đặc biệt Regex đại diện cho bất kỳ ký tự chữ và số nào như chữ cái chữ hoa hoặc chữ thường, các chữ số cũng như ký tự dấu gạch dưới.
  • Sau đó, 8 niềng răng xoăn bên trong có nghĩa là các ký tự phải xảy ra chính xác 8 lần liên tiếp bên trong chuỗi đích8 inside curly braces mean the characters have to occur exactly 8 times in a row inside the target string

Nói một cách đơn giản, nó có nghĩa là tìm kiếm bất kỳ từ tám chữ cái nàoany eight-letter word

"Emma is a baseball player who was born on June 17, 1993."

Như chúng ta có thể thấy trong bóng chày chuỗi trên là từ tám chữ cái đầu tiên bên trong chuỗi đích, vì vậy chúng ta nên lấy bóng chày làm đầu ra.baseball is the first eight-letter word inside the target string, so we should get the baseball as an output.

import re

# Target String
target_string = "Emma is a baseball player who was born on June 17"

# search[] for eight-letter word
result = re.search[r"\w{8}", target_string]

# Print match object
print["Match Object", result]
# output re.Match object; span=[10, 18], match='baseball'

# print the matching word using group[] method
print["Matching word: ", result.group[]] 
# Output 'baseball'

Hãy để hiểu ví dụ trên..

  • 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. 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 chúng tôi đã sử dụng chuỗi thô.raw string to specify the regular expression pattern. 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 used raw string.
  • Ngoài ra, chúng tôi không xác định và biên dịch mẫu này trước [như phương thức biên dịch], thực tiễn là viết mẫu thực tế theo định dạng chuỗi.
  • Tiếp theo, chúng tôi đã viết một mẫu regex để tìm kiếm bất kỳ từ tám chữ cái nào bên trong chuỗi đích.
  • Tiếp theo, chúng tôi đã chuyển mẫu này cho phương thức
    if re.search[['/wp-includes/'] | ['/wp-admin/'], response]: 
    
    0 để tìm kiếm sự xuất hiện của mẫu và nó đã trả về đối tượng
    if re.search['/wp-includes/' , '/wp-admin/'], response]:
    
    0.
    if re.search[['/wp-includes/'] | ['/wp-admin/'], response]: 
    
    0
    method to looks for occurrences of the pattern and it returned the
    if re.search['/wp-includes/' , '/wp-admin/'], response]:
    
    0 object.
  • Tiếp theo, chúng tôi đã sử dụng phương thức
    if re.search['/wp-includes/' , '/wp-admin/'], response]:
    
    1 của đối tượng
    if re.search['/wp-includes/' , '/wp-admin/'], response]:
    
    0 để truy xuất giá trị khớp chính xác, tức là, bóng chày.

Ví dụ tìm kiếm regex tìm phần phụ chính xác hoặc từ

Trong ví dụ này, chúng tôi sẽ tìm thấy phần phụ của Ball Ball và người chơi trong một chuỗi mục tiêu.

import re

# Target String
target_string = "Emma is a baseball player who was born on June 17, 1993."

# find substring 'ball'
result = re.search[r"ball", target_string]

# Print matching substring
print[result.group[]]
# output 'ball'

# find exact word/substring surrounded by word boundary
result = re.search[r"\bball\b", target_string]
if result:
    print[result]
# output None

# find word 'player'
result = re.search[r"\bplayer\b", target_string]
print[result.group[]]
# output 'player'

Khi nào nên sử dụng Re.Search []

Phương thức

re.search[pattern, string, flags=0]
1 sẽ luôn khớp và chỉ trả về lần xuất hiện đầu tiên của mẫu từ chuỗi đích.match and return only the first occurrence of the pattern from the target string.

  • Sử dụng nó khi bạn muốn tìm trận đấu đầu tiên. Phương pháp tìm kiếm là hữu ích cho một trận đấu nhanh chóng. Tức là, ngay khi nó có được trận đấu đầu tiên, nó sẽ dừng thực hiện nó. Bạn sẽ nhận được lợi ích hiệu suất.
  • Ngoài ra, vui lòng sử dụng nó khi bạn muốn kiểm tra khả năng của một mẫu trong một chuỗi mục tiêu dài.

Tránh sử dụng phương thức search [] trong các trường hợp sau

  1. Để tìm kiếm tất cả sự xuất hiện đến một biểu thức thông thường, vui lòng sử dụng phương thức
    re.search[pattern, string, flags=0]
    2 thay thế.
  2. Để tìm kiếm khi bắt đầu chuỗi, vui lòng sử dụng phương thức Match [] thay thế. Ngoài ra, đọc regex search [] so với match []

Nếu bạn muốn thực hiện tìm kiếm và thay thế hoạt động trong Python bằng Regex, vui lòng sử dụng phương thức

re.search[pattern, string, flags=0]
3.

Tìm kiếm so với Findall

Cả hai máy chủ phương thức tìm kiếm và Findall đều có mục đích/trường hợp sử dụng khác nhau khi thực hiện khớp mẫu regex trong Python.

Như bạn đã biết, phương thức tìm kiếm quét toàn bộ chuỗi để tìm kiếm một mẫu và chỉ trả về trận đấu đầu tiên. Tức là, ngay khi nó có được trận đấu đầu tiên, nó dừng thực thi nó.

Mặt khác, phương thức findall [] trả về tất cả các khớp với mẫu.findall[] method returns all matches to the pattern.

Vì vậy, sử dụng phương thức findall [] để tìm kiếm tất cả các kết quả xảy ra/có thể phù hợp với một biểu thức thông thường.

Một sự khác biệt nữa, phương thức tìm kiếm trả về một đối tượng khớp bao gồm chỉ mục bắt đầu và kết thúc của một kết quả phù hợp thành công và giá trị khớp thực tế mà chúng ta có thể truy xuất bằng phương thức nhóm [].

Mặt khác, phương thức Findall [] trả về tất cả các trận đấu dưới dạng danh sách Python.

Nhóm tìm kiếm Regex hoặc nhiều mẫumultiple patterns

Trong phần này, chúng tôi sẽ tìm hiểu cách tìm kiếm nhiều mẫu riêng biệt bên trong cùng một chuỗi mục tiêu. Hãy giả sử, chúng tôi muốn tìm kiếm hai mẫu khác nhau sau trong chuỗi đích cùng một lúc.

  1. Một từ mười chữ cái
  2. Hai chữ số liên tiếp

Để đạt được điều này, hãy để viết hai mẫu biểu thức thông thường.

Mẫu Regex 1:

re.search[pattern, string, flags=0]
4:
re.search[pattern, string, flags=0]
4

Nó sẽ tìm kiếm bất kỳ từ sáu chữ cái nào bên trong chuỗi đích

Mẫu Regex 2:

re.search[pattern, string, flags=0]
5:
re.search[pattern, string, flags=0]
5

Bây giờ mỗi mẫu sẽ đại diện cho một nhóm. Hãy để thêm mỗi nhóm bên trong một dấu ngoặc đơn []. Trong trường hợp của chúng tôi

re.search[pattern, string, flags=0]
6

Trên một tìm kiếm thành công, chúng ta có thể sử dụng

re.search[pattern, string, flags=0]
7 để có được giá trị khớp của nhóm đầu tiên và
re.search[pattern, string, flags=0]
8 để có được giá trị phù hợp của nhóm thứ hai.

Bây giờ, hãy để chúng tôi xem cách sử dụng hai mẫu này để tìm kiếm bất kỳ từ sáu chữ cái và hai chữ số liên tiếp trong chuỗi đích.

Ví dụ để tìm kiếm nhiều mẫu

import re

target_string = "Emma is a basketball player who was born on June 17."

# two group enclosed in separate [ and ] bracket
result = re.search[r"[\w{10}].+[\d{2}]", target_string]

# Extract the matches using group[]

# print ten-letter word
print[result.group[1]]
# Output basketball

# print two digit number
print[result.group[2]]
# Output 17

Hãy để hiểu ví dụ này

  • Chúng tôi kèm theo từng mẫu trong khung mở và đóng riêng biệt.
  • Tôi đã thêm metacharacter
    re.search[pattern, string, flags=0]
    9 trước mẫu thứ hai. DOT đại diện cho bất kỳ ký tự nào ngoại trừ một dòng mới và dấu cộng có nghĩa là mẫu trước đang lặp lại một hoặc nhiều lần. Vì vậy,
    re.search[pattern, string, flags=0]
    9 có nghĩa là trước nhóm đầu tiên, chúng tôi có một loạt các nhân vật mà chúng tôi có thể bỏ qua
  • Tiếp theo, chúng tôi đã sử dụng phương pháp
    if re.search['/wp-includes/' , '/wp-admin/'], response]:
    
    1 để trích xuất hai giá trị phù hợp.

Lưu ý: Phương thức

if re.search['/wp-includes/' , '/wp-admin/'], response]:
1 đã trả về hai giá trị phù hợp vì chúng tôi đã sử dụng hai mẫu.

Ngoài ra, đọc tìm kiếm một mẫu regex trong một tệp văn bản.

Tìm kiếm nhiều từ bằng cách sử dụng regex

Hãy cùng lấy một ví dụ khác và tìm kiếm ba từ được bao quanh bởi không gian bằng Regex. Hãy để các từ tìm kiếm của người Viking Emma Emma, ​​người chơi, người chơi, người sinh ra trong chuỗi mục tiêu.

Sử dụng | [ống] toán tử để chỉ định nhiều mẫu.

import re

str1 = "Emma is a baseball player who was born on June 17, 1993."

# search[] for eight-letter word surrounded by space
# \b is used to specify word boundary
result = re.findall[r"\bEmma\b|\bplayer\b|\bborn\b", str1]
print[result]
# Output ['Emma', 'player', 'born']

Trường hợp tìm kiếm regex không nhạy cảm

Có khả năng chuỗi chứa các từ hoặc từ chữ thường và từ trên với sự kết hợp của chữ thường và chữ hoa.

Ví dụ: bạn muốn tìm kiếm một từ bằng cách sử dụng regex trong chuỗi đích, nhưng bạn không biết từ đó có chữ hoa hay chữ thường hay kết hợp cả hai. Tại đây, bạn có thể sử dụng cờ

"Emma is a baseball player who was born on June 17, 1993."
3 bên trong phương thức
re.search[pattern, string, flags=0]
1 để thực hiện tìm kiếm không nhạy cảm với mẫu Regex.

Thí dụ::

import re

# Target String
target_string = "Emma is a Baseball player who was born on June 17, 1993."

# case sensitive searching
result = re.search[r"emma", target_string]
print["Matching word:", result]
# Output None

print["case insensitive searching"]
# using re.IGNORECASE
result = re.search[r"emma", target_string, re.IGNORECASE]
print["Matching word:", result.group[]]
# Output 'Emma'

Làm thế nào bạn sẽ xác nhận rằng 2 chuỗi có cùng danh tính trong Python?

Làm thế nào bạn sẽ xác nhận rằng 2 chuỗi có cùng một danh tính?Toán tử IS trả về true nếu 2 tên trỏ đến cùng một vị trí trong bộ nhớ.Đây là những gì chúng ta đang đề cập khi chúng ta nói về danh tính.Đừng nhầm lẫn là với ==, cái sau chỉ kiểm tra bình đẳng.The is operator returns True if 2 names point to the same location in memory. This is what we're referring to when we talk about identity. Don't confuse is with ==, the latter which only tests equality.

Sự khác biệt giữa tìm kiếm lại và kết hợp lại là gì?

Python |Re.Search [] vs Re.Có một sự khác biệt giữa việc sử dụng cả hai chức năng.Cả hai trả về trận đấu đầu tiên của một chuỗi con được tìm thấy trong chuỗi, nhưng re.match [] chỉ tìm kiếm từ đầu chuỗi và trả về đối tượng đối sánh nếu tìm thấy.re. match[] searches only from the beginning of the string and return match object if found.

Bài Viết Liên Quan

Chủ Đề