url 正则表达式

url 正则表达式

我们在浏览器中输入链接时,通常会使用可点击的超链接,也就是 URL。URL 是统一资源定位符的缩写,是 web 上访问资源的方式。在很多情况下,我们可能想要用正则表达式去处理 URL,例如从 URL 中提取参数、验证 URL 是否符合要求等。那么,接下来就让我们来学习一下 URL 的正则表达式吧。

URL 构成

在学习 URL 的正则表达式之前,我们首先需要了解 URL 的组成部分。

一个 URL 的一般格式如下:

scheme://host:port/path?query#fragment
  • scheme:URL 的协议,比如 httphttpsfile 等。
  • host:服务器的地址,可以是域名或者 IP 地址。
  • port:服务器的端口号,一般默认使用 80 端口。如果是 HTTPS 协议,则默认使用 443 端口。
  • path:服务器上的文件路径,可以是绝对路径或相对路径。
  • query:URL 的参数,例如 ?name=jack&age=18
  • fragment:文档的片段,例如 #section1

URL 正则表达式

接下来我们来学习一下 URL 的正则表达式。

匹配 URL

如果我们想要匹配以 https://www.example.com 开头的 URL,可以使用如下正则表达式:

^https:\/\/www\.example\.com

其中,^ 表示匹配开头,\/ 表示转义后的 / 符号,\. 表示转义后的 . 符号。

匹配 HTTP 和 HTTPS

如果我们想要匹配 HTTP 或 HTTPS 的 URL,可以使用如下正则表达式:

^(http|https):\/\/

其中,() 表示匹配其中一个,| 表示或者的意思。

匹配域名

如果我们想要匹配域名,则需要先了解域名的规则。域名由多个部分组成,每个部分之间使用 . 分隔,例如 www.example.com

以下是一个匹配域名的正则表达式:

^(http|https):\/\/([a-zA-Z0-9]+\.)+[a-z]+$

在这个正则表达式中,[a-zA-Z0-9] 表示任意大小写字母或数字,+ 表示至少出现一次,() 表示一个整体,[]+ 表示至少出现一次。

匹配端口号

如果我们想要匹配某个端口号的 URL,可以使用如下正则表达式:

^(http|https):\/\/([a-zA-Z0-9]+\.)+[a-z]+(:[0-9]+)?$

其中,() 表示匹配一个整体,? 表示可选项,: 表示端口号之前的分隔符,[0-9]+ 表示一个或多个数字。

提取 URL 参数

如果我们想要从 URL 中提取参数,可以使用如下正则表达式:

?(.*)$

例如,我们想要从 https://www.example.com/?name=jack&age=18 中提取参数,可以使用下面这段代码:

import re

url = 'https://www.example.com/?name=jack&age=18'
pattern = r'\?(.*)$'

result = re.search(pattern, url)
print(result.group(1))

这段代码的运行结果为:

name=jack&age=18

结论

通过本文的学习,我们了解了什么是 URL,学习了 URL 的组成部分,并利用正则表达式对 URL 进行了匹配和处理。正则表达式在 URL 的处理、提取和验证方面都有广泛的应用,希望本文对您有所帮助。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程