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
if re.search[['/wp-includes/'] | ['/wp-admin/'], response]:
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.
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.if re.search[['/wp-includes/'] | ['/wp-admin/'], response]:
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.- Đố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.
- 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
1.if re.search['/wp-includes/' , '/wp-admin/'], response]:
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]:
5Mô hình này có nghĩa là gì?
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.if re.search['/wp-includes/' , '/wp-admin/'], response]:
- 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
0 để tìm kiếm sự xuất hiện của mẫu và nó đã trả về đối tượngif 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 theif re.search[['/wp-includes/'] | ['/wp-admin/'], response]:
0 object.if re.search['/wp-includes/' , '/wp-admin/'], response]:
- Tiếp theo, chúng tôi đã sử dụng phương thức
1 của đối tượngif 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.if re.search['/wp-includes/' , '/wp-admin/'], response]:
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
- Để 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
2 thay thế.re.search[pattern, string, flags=0]
- Để 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.
- Một từ mười chữ cái
- 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:
4: re.search[pattern, string, flags=0]
re.search[pattern, string, flags=0]
4Nó 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:
5: re.search[pattern, string, flags=0]
re.search[pattern, string, flags=0]
5Bâ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]
6Trê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
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ỏ quare.search[pattern, string, flags=0]
- Tiếp theo, chúng tôi đã sử dụng phương pháp
1 để trích xuất hai giá trị phù hợp.if re.search['/wp-includes/' , '/wp-admin/'], response]:
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'