Python正则表达式匹配网址
正则表达式可以被用于匹配各种各样的文本,包括网址。在Python中,使用re模块可以使用正则表达式匹配网址。
匹配URL地址
下面是一个用于匹配URL地址的正则表达式:
import re
url_regex = r'https?://(?:[-\w.]|(?:%[\da-fA-F]{2}))+'
url_pattern = re.compile(url_regex)
# Test
text = 'Some text with a url: https://www.example.com/'
matches = url_pattern.findall(text)
print(matches) # ['https://www.example.com/']
这个正则表达式可以匹配HTTP和HTTPS协议的URL地址。它匹配的一般规则是:以协议(http或者https)开头,然后是以数字、字母、横线、点号组成的主机名,最后可以跟上路径和查询参数。
匹配IP地址
下面是一个用于匹配IP地址的正则表达式:
import re
ip_regex = r'\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b'
ip_pattern = re.compile(ip_regex)
# Test
text = 'Some text with an IP address: 192.168.1.1, and another one: 127.0.0.1'
matches = ip_pattern.findall(text)
print(matches) # ['192.168.1.1', '127.0.0.1']
正则表达式 \b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b
会匹配所有的IP地址。这个表达式的规则是:匹配一段由4个数字组成的字符串(每个数字之间以点号分隔),并且每个数字都在0到255之间。使用\b
可以匹配完整的IP地址,避免匹配到不必要的部分。
匹配电子邮件地址
下面是一个用于匹配电子邮件地址的正则表达式:
import re
email_regex = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
email_pattern = re.compile(email_regex)
# Test
text = 'Some text with an email address: foo@example.com, and another one: bar@sub.example.co.uk'
matches = email_pattern.findall(text)
print(matches) # ['foo@example.com', 'bar@sub.example.co.uk']
这个正则表达式可以匹配所有合法的电子邮件地址,包括用户名、域名和顶级域名。它匹配的一般规则是:以从A到Z(大小写不敏感)、数字、点号、下划线、加号或减号中任意一个字符开始,接着是一个 @ 符号,然后是一个域名(由字母、数字、点号或连字符组成),然后是一个顶级域名(由两个或两个以上的字母组成)。
匹配电话号码
下面是一个用于匹配电话号码的正则表达式:
import re
phone_regex = r'\b(?:\d{3}[-]\d{3}[-]\d{4}|\d{10})\b'
phone_pattern = re.compile(phone_regex)
# Test
text = 'Some text with a phone number: 123-456-7890, and another one: 8005551212'
matches = phone_pattern.findall(text)
print(matches) # ['123-456-7890', '8005551212']
正则表达式\b(?:\d{3}[-]\d{3}[-]\d{4}|\d{10})\b
可以匹配所有格式的电话号码,包括加上分隔符“-”和不加分隔符两种格式。它的一般规则是:以3个数字开头,接着是一个横线,然后是3个数字,再接着是另一个横线,最后是4个数字;或者是10个数字,不带任何分隔符。
匹配HTML标签
下面是一个用于匹配HTML标签的正则表达式:
import re
html_regex = r'<[^>]+>'
html_pattern = re.compile(html_regex)
# Test
text = '<html><head><title>Test Page</title></head><body><p>This is a test</p></body></html>'
matches = html_pattern.findall(text)
print(matches) # ['<html>', '<head>', '<title>', '</title>', '</head>', '<body>', '<p>', '</p>', '</body>', '</html>']
这个正则表达式可以匹配所有HTML标签,包括开始标签、结束标签和自闭合标签。它的规则是:以<
符号开头,接着是一个或多个由非>
符号组成的字符,最后以>
符号结尾。
结论
使用正则表达式可以轻松地匹配各种各样的文本,包括网址、IP地址、电子邮件地址、电话号码和HTML标签。Python的re模块提供了强大的正则表达式功能,可以使用简单的语法和方法来完成匹配操作。