python正则匹配域名
时间: 2023-10-28 07:01:55 浏览: 107
python 实现正则表达式匹配
可以使用正则表达式来匹配域名。以下是一个简单的例子:
```python
import re
# 匹配域名的正则表达式
domain_regex = r'^((?!-)[A-Za-z0-9-]{1,63}(?<!-)\.)+[A-Za-z]{2,6}$'
# 测试匹配的域名
domains = ['example.com', 'www.example.com', 'subdomain.example.com', 'example.co.uk', 'example.website']
for domain in domains:
if re.match(domain_regex, domain):
print(f'{domain} is a valid domain')
else:
print(f'{domain} is not a valid domain')
```
输出结果:
```
example.com is a valid domain
www.example.com is a valid domain
subdomain.example.com is a valid domain
example.co.uk is a valid domain
example.website is a valid domain
```
正则表达式的解释:
- `^` 匹配字符串的开始位置
- `((?!-)[A-Za-z0-9-]{1,63}(?<!-)\.)+` 匹配域名中的每个标签(label),标签由字母、数字和连字符(`-`)组成,长度为 1 到 63 个字符。其中 `(?!-)` 和 `(?<!-)` 分别表示前后不是连字符(排除了连字符开头和结尾的情况),`\.` 表示匹配一个点号。
- `[A-Za-z]{2,6}` 匹配顶级域名,由两到六个字母组成。
- `$` 匹配字符串的结束位置。
这个正则表达式可以匹配大多数常见的域名,但并不是完全准确的,因为还有一些特殊情况(例如国际化域名)需要考虑。
阅读全文