У меня есть url: http://200.73.81.212/.CREDIT-UNION/update.php
Ни одно из выражений reg, которые я нашел и не разработал, работает. Я работаю над набором фишинговых писем, и есть много странных гиперссылок. Это один из моих: https?:\/\/([a-zA-z0-9]+.)+)|(www.[a-zA-Z0-9]+.([a-zA-Z0-9]+\.[a-zA-Z0-9]+)+)(((/[\.A-Za-z0-9]+))+/?
Конечно, никакого успеха. Я работаю на Python.
РЕДАКТИРОВАТЬ:
Мне нужно регулярное выражение, чтобы поймать этот тип URL, а также любые обычные гиперссылки, например: https://cnn.com/
www.foxnews.com/story/122345678
Какие-нибудь мысли?
Как насчет чего-то подобного?
import re
phish = re.compile('''(?P<http>http\://)
(?P<ipaddress>(([0-9]*(\.)?)[0-9]*)*)/\.
(?P<name>(\.)?([A-Za-z]*)(\-)?([A-Za-z]*))/
(?P<ending>(update\.php))''', re.VERBOSE)
example_string = 'http://200.73.81.212/.CREDIT-UNION/update.php'
found_matches = []
# check that matches actually exist in input string
if phish.search(example_string):
# in case there are many matches, iterate over them
for mtch in phish.finditer(example_string):
# and append matches to master list
found_matches.append(mtch.group(0))
print(found_matches)
# ['http://200.73.81.212/.CREDIT-UNION/update.php']
Это достаточно гибко, поэтому теперь, если у вас есть альтернативные окончания, чем update.php, вы можете просто включить их в названную группу захвата, разделив все альтернативные финальные совпадения на |, т.е.
(update\.php|remove\.php, ...)
Кроме того, ваш IP-адрес с именем группы захвата может принимать любое число 123.23.123.12, он не должен быть фиксированным числом повторяющихся номеров, за которым следуют шаблоны периодов. Теперь я считаю, что IP-адреса закрываются на 3 номера, поэтому вы можете привязать их вниз, чтобы убедиться, что вы соответствуете правильным типам чисел с фигурными скобками:
[0-9]{2, 3}\. # minimum of 2 numbers, maximum of 3
Хотя ответ @datawrestler работает по оригинальному вопросу, мне пришлось расширить его, чтобы уловить более широкую группу URL (я отредактировал вопрос). Этот URL-адрес, похоже, работает для задачи: r"""(https?://www\.[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)+(/[a-zA-Z0-9.@-]+){0,20})|\
(https?://[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)+(/[a-zA-Z0-9.@-]+){0,20})|\
(www.[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)+(/[a-zA-Z0-9.@-]+){0,20})"""
Три альтернативы: https?://www
, https://domain
, www.domain