听起来您正在寻找通过Public Suffix List项目提供的信息.
"公共后缀"是指互联网用户可以直接注册名称的公共后缀.公共后缀的一些示例是".com",".co.uk"和"pvt.k12.wy.us".公共后缀列表是所有已知公共后缀的列表.
没有单一的正则表达式可以合理地匹配公共后缀列表.您需要实现代码以使用公共后缀列表,或者找到已经执行此操作的现有库.
根据您上面的评论,我将重新解释这个问题 - 我们将创建一个与它们匹配的函数,并应用该函数来过滤域名列表,而不是创建一个与它们匹配的正则表达式包括一级域名,例如 google.com、amazon.co.uk。
首先,我们需要一份 TLD 列表。正如 Greg 提到的,公共后缀列表是一个很好的起点。假设您已将列表解析为名为 的 python 数组suffixes。如果这不是您喜欢的,请发表评论,我可以添加一些代码来完成它。
suffixes = parse_suffix_list("suffix_list.txt")
Run Code Online (Sandbox Code Playgroud)
现在我们需要代码来识别给定的域名是否与模式 some-name.suffix 匹配:
def is_domain(d):
for suffix in suffixes:
if d.endswith(suffix):
# Get the base domain name without suffix
base_name = d[0:-(suffix.length + 1)]
# If it contains '.', it's a subdomain.
if not base_name.contains('.'):
return true
# If we get here, no matches were found
return false
Run Code Online (Sandbox Code Playgroud)