📜  正则表达式提取有效的 http 或 https (1)

📅  最后修改于: 2023-12-03 15:10:58.191000             🧑  作者: Mango

正则表达式提取有效的 http 或 https

正则表达式是一种用来匹配字符串的强大工具,它可以让我们更方便地从文本数据中筛选出自己需要的内容。在许多场景下,我们可能需要提取出有效的 http 或 https 地址,以方便对这些地址进行进一步的处理或记录。接下来,就让我们一起来学习如何使用正则表达式提取有效的 http 或 https 吧!

1. 什么是 http 和 https?

在学习如何提取有效的 http 或 https 之前,我们首先需要了解一下这两个概念。

HTTP(Hypertext Transfer Protocol,超文本传输协议)是一种用于传输超媒体(如 HTML 文件)的协议,它是由 Web 服务器和客户机(如浏览器)之间交换数据的标准方式。

HTTPS(HTTP Secure,安全的 HTTP)是一个基于 HTTP 协议实现的网络安全协议,它通过 SSL/TLS 协议来建立加密连接,从而保证数据的安全性和完整性。

2. 如何提取 http 或 https 地址?

对于一个网站或者一个文本文件中的内容,我们可能需要提取其中有效的 http 或 https 地址。下面是一个常见的例子:

text = "Here are some valid URLs: http://www.google.com, https://www.baidu.com, http://youtube.com, and https://www.qq.com."

其中包含了4个有效的 URL,我们可以使用正则表达式来提取这些地址。针对这个问题,我们可以使用如下的正则表达式:

import re

text = "Here are some valid URLs: http://www.google.com, https://www.baidu.com, http://youtube.com, and https://www.qq.com."

regex = r'https?://(?:[-\w.]|(?:%[\da-fA-F]{2}))+'

urls = re.findall(regex, text)

print(urls)

这里,我们使用了一个正则表达式来匹配所有的 http 或 https 地址。其中,r 表示这是一个原始字符串(不处理反斜杆等特殊字符),\s 表示匹配空格,? 表示匹配 0 次或 1 次,[] 表示匹配字符集中的任意一个字符,() 表示分组,而 /w 代表“字母数字字符”,/d 代表“数字字符”。

正则表达式的核心是这个:https?://(?:[-\w.]|(?:%[\da-fA-F]{2}))+。这个表达式可以分为以下几部分:

  • https?://:匹配 http 或 https 开头的 URL。
  • (?:[-\w.]|(?:%[\da-fA-F]{2}))+:匹配 URL 中间的部分,包含数字、字母、下划线、句号、减号和百分号编码格式。其中 (?: ) 表示非捕获分组.

整个表达式的意思是:匹配 http 或 https 开头的字符串,后面跟着任意数量的非空白字符和某些 URL 中所允许的字符。这样,我们就能够提取出所有有效的 http 和 https 地址了。

在执行这个脚本之后,会返回如下的输出信息:

['http://www.google.com', 'https://www.baidu.com', 'http://youtube.com', 'https://www.qq.com']

我们可以看到,这个正则表达式确实可以很好地匹配出有效的 http 和 https 地址了。

3. 总结

通过本文的阅读,我们学习了如何使用正则表达式提取有效的 http 或 https 地址。虽然正则表达式有时会比较复杂,但是我们只要掌握了一些基本的规则和语法,就可以轻松应对各种匹配需求。希望本文可以对大家的学习能够有所帮助。