📅  最后修改于: 2023-12-03 14:46:29.628000             🧑  作者: Mango
在日常编程中,我们经常会遇到需要检查字符串中是否包含 URL 的情况。使用 Python 编程语言,非常方便快捷地实现这个功能。
Python 中可以使用正则表达式(RegEx)匹配字符串中的 URL。下面是一个简单的 Python 脚本,用于检查字符串中是否包含 URL。
import re
def check_url(url):
regex = re.compile(
r'^https?://' # http:// or https://
r'(?:(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)|' # domain...
r'localhost|' # localhost...
r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})' # ...or ip
r'(?:/?|[/?]\S+)$', re.IGNORECASE)
return re.match(regex, url) is not None
# 用法示例
url1 = 'https://www.google.com'
url2 = 'www.my-blog.com'
url3 = 'https://localhost:8080'
url4 = 'ftp://my-file.com'
url5 = 'abc'
print(check_url(url1)) # True
print(check_url(url2)) # True
print(check_url(url3)) # True
print(check_url(url4)) # False
print(check_url(url5)) # False
以上代码使用正则表达式匹配 URL,可以处理多种情况,包括域名、IP 地址及协议等等。如果匹配成功,则返回 True,否则返回 False。
Python 还有第三方 Package,可以方便地实现 URL 的匹配检查。下面介绍几个比较常用的 Package。
tldextract 可以解析一个 URL 并从中提取出域名的 Top-Level Domain。该 Package 可以去除 URL 中的子域名、主机名及路径,只留下顶级域名,方便与其他文本处理结合使用。
import tldextract
url1 = 'https://www.google.com'
url2 = 'www.my-blog.com'
print(tldextract.extract(url1)) # ExtractResult(subdomain='www', domain='google', suffix='com')
print(tldextract.extract(url2)) # ExtractResult(subdomain='', domain='my-blog', suffix='com')
以上代码使用 tldextract 提取了 URL 中的域名信息,返回的是一个 ExtractResult 对象。
validators 可以帮助我们验证 URL 是否合法。该 Package 可以检查 URL 是否满足特定协议、是否包含路径及查询参数等等。
import validators
url1 = 'https://www.google.com'
url2 = 'www.my-blog.com'
url3 = 'https://localhost:8080'
url4 = 'ftp://my-file.com'
url5 = 'abc'
print(validators.url(url1)) # True
print(validators.url(url2)) # True
print(validators.url(url3)) # True
print(validators.url(url4)) # False
print(validators.url(url5)) # False
以上代码使用 validators 验证了 URL 是否合法,如果合法,则返回 True,否则返回 False。
Python 中检查字符串中的 URL 有多种方法。我们可以使用正则表达式匹配 URL,也可以使用第三方 Package(如 tldextract 和 validators)帮助我们解析和验证 URL。不同方法各有优劣,开发者可以根据具体需求进行选择。