输入链接中的非可选协议 - py regex |要求

问题描述

问题是: 检查输入的链接是否有效,可选链接可以同时输入为 https://stackoverflow.com/ 和 stackoverflow.com。

我试图解决

input_url = str(input("Enter url: ")
result = re.findall(r'(http[s]?://)?\S+',input_url)

返回错误 - Invalid URL '': No schema supplied. Perhaps you meant http://?

没有 urllib 或其他东西,它必须只是正则表达式

完整代码

import re,requests
from collections import Counter
from prettytable import prettytable

url_input = str(input("Enter url: "))

url_checked = re.findall(r'(http[s]?://)?\S+',url_input)[0] # берем первый элемент

response = requests.get(str(url_checked)) # запрос на введенную ссылку

result = re.findall( r"\"(?:http[s]?://)?([^:/\s\"]+)/?[^\"]*\"",response.text) # фильтрация ссылок

result.sort() # sorting by alphabet 

# link - https://stackoverflow.com/

pt = prettytable(field_names = ["word","counter"])
pt.add_rows(list(Counter(result).most_common()))
print(pt)

解决方法

您的正则表达式似乎过于简单,无法可靠地验证 URL。我建议您使用 here 中的那个。