正则表达式匹配网址

正则表达式匹配网址

什么是正则表达式?

正则表达式是用于匹配文本的一种表达式语言。它使用应为常规字符和特殊字符的字符组成,特殊字符有不同的含义,用于指示匹配某些特定字符的方法。

在编程中,正则表达式经常用于字符串搜索,替换和验证。它可以用于各种编程语言,如JavaJavaScriptPython,PHP等等。

网址匹配的正则表达式

网址(URL)是Internet上的唯一标识符,因为在不同的网络资源之间提供链接是Web的基础。在编程中,需要匹配和确定URL,因此需要用正则表达式来管理。

下面是一个基本的网址正则表达式:

^((http[s]?|ftp):\/)?\/?([^:\/\s]+)((\/\w+)*\/)([\w\-\.]+[^#?\s]+)(.*)?(#[\w\-]+)?$

下面对上面的正则表达式逐一进行解释:

  1. (http[s]?|ftp):匹配http, https或ftp协议。
  2. :\/:匹配“:/”完整字符串。
  3. ?:在正则表达式中,“?”表示可选的元素。
  4. \/\/:匹配“//”完整字符串。
  5. [^:\/\s]+:匹配URL的主机名和端口号。
  6. (\/\w+)*:匹配URL的路径。
  7. ([\w\-\.]+[^#?\s]+):匹配URL的文件名。
  8. (.*)?:匹配URL的查询参数。
  9. #[\w\-]+:匹配URL的片段。

现在让我们看一些实际例子。

匹配Http URL

下面是一个有效的 HTTP URL 的正则表达式,可以匹配 HTTP 和 HTTPS 协议。

(http|https):\/\/([\w_-]+(?:(?:\.|\:)\w{2,})+)(?:\/[\w_\/\.]*(?:\?\S+)?)?

以下是该正则表达式的逐一解释:

  • (http|https):匹配 http 或 https 协议;
  • :\/\/:匹配://字符;
  • ([\w_-]+(?:(?:\.|\:)\w{2,})+):匹配域名;
  • (?:\/[\w_\/\.]*(?:\?\S+)?)?:匹配URL路径和查找字符串。

以下是一些示例:

import re

pattern = re.compile(r'(http|https):\/\/([\w_-]+(?:(?:\.|\:)\w{2,})+)(?:\/[\w_\/\.]*(?:\?\S+)?)?')

url = 'https://www.baidu.com'

if pattern.match(url):
  print('Url matched!')
else:
  print('Url not matched!')

以上代码将输出 Url matched!

匹配任何网址

如果您需要匹配任何网址,以下是一个结合了各种网址的正则表达式示例:

^(?:(http|https|ftp|smtp):\/\/)?(?:[a-z0-9-]+\.)+[a-z]{2,20}(?:(?:\/(?:[\w#!:.?+=&%@!\/-])*)+\/?)?$

以下是上面这个正则表达式的逐一解释:

  • (?:(http|https|ftp|smtp):\/\/)?:一个匹配http,https,ftp或smtp协议的可选组合。
  • (?:[a-z0-9-]+\.)+[a-z]{2,20}:匹配网址主体,且包含2至20个字母的域名。
  • (?:(?:\/(?:[\w#!:.?+=&%@!\/-])*)+\/?):匹配所有或无路径元素。
    继续看一些示例代码:
import re

pattern = re.compile(r'^(?:(http|https|ftp|smtp):\/\/)?(?:[a-z0-9-]+\.)+[a-z]{2,20}(?:(?:\/(?:[\w#!:.?+=&%@!\/-])*)+\/?)?$')

url = 'https://www.google.com'

if pattern.match(url):
  print('Url matched!')
else:
  print('Url not matched!')

以上代码将输出 Url matched!

匹配一个IP地址

有时需要从文本中提取IP地址。下面是IP地址的正则表达式:

b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b

以下是上面这个正则表达式的逐一解释:

  • \b:匹配一个单词边界。
  • \d{1,3}:匹配1到3位数字。
  • \.:匹配“.”。
  • ( \d {1,3} ):匹配1到3位数字,匹配IP地址的四个部分。
  • \b:匹配一个单词边界。

以下是一个示例:

import re

pattern = re.compile(r'\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b')

text = 'The IP address of this device is 192.168.0.1'

result = pattern.findall(text)

print(result)

以上代码将输出 ['192.168.0.1']

结论

在编程中,需要对URL进行匹配和确定。使用正则表达式,可以轻松地管理网址和从文本中提取IP地址。通过使用一些正则表达式和示例,可以更好地理解如何处理网址。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程