【python】python指南(三):使用正则表达式re提取文本中的http链接

server/2024/9/25 3:20:36/
aidu_pl">

pythonpythonrehttp_0">【pythonpython指南(三):使用正则表达式re提取文本中的http链接

在这里插入图片描述

一、引言

对于算法工程师来说,语言从来都不是关键,关键是快速学习以及解决问题的能力。大学的时候参加ACM/ICPC一直使用的是C语言,实习的时候做一个算法策略后台用的是php,毕业后做策略算法开发,因为要用spark,所以写了scala,后来用基于storm开发实时策略,用的java。至于python,从日常用hive做数据策略用python写udf,到基于tensorflow深度学习框架写python版的模型网络,再到现在实用pytorch做大模型。眼看着在语言纷争中,python的应用越来越广,开一个单独的专栏用于记录python中常用到的技巧,算是做笔记,没事翻出来看看。

本文重点介绍如何使用python正则表达式re提取一段内容中的链接。

二、参数解析器(ArgumentParser)

2.1 概述
我们日常处理的文本中,有很多内容和链接混合在一起的情况,有时需要我们提取链接,获取链接内的内容,有时希望把链接去掉,今天看一段分离内容和链接的代码。
2.2 代码示例

代码语言:javascript

复制

import redef extract_links(text):# 正则表达式匹配URLpattern = r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+'# 查找所有匹配的URLlinks = re.findall(pattern, text)text_blocks = re.split(pattern, text)combined_text = ''.join(text_blocks)return links,combined_text# 测试函数
text = "这是一个https://hhhh.org段网络上的内容,https://www.example.org里面偷偷卖了一个卖货的链接"
print(extract_links(text))

这里重点看一下正则表达式部分,主要思路是先将http://链接头分离出来,接着枚举所有链接可能出现的字母、数字、常用符号、特殊符号、空格、十六进制数字等,最后用+表示以上字符可以出现一次或多次,具体如下:

  • http[s]?😕/:这部分匹配URL的协议部分,即http://或https://。s?表示s是可选的,即可以有也可以没有。
  • (?:…):这是一个非捕获分组,意味着它不会捕获匹配的文本,只用于分组表达式以应用量词或其他操作。
  • [a-zA-Z]|[0-9]:这部分匹配字母或数字,|表示或,即匹配其中任何一个。
  • [Misplaced &
  • [!\(\),]:这部分匹配更多的符号,包括!、、\、(、)和,。
  • (?:%[0-9a-fA-F][0-9a-fA-F]):这部分用于匹配URL编码的字符,如%20代表空格。[0-9a-fA-F]匹配十六进制数字。
  • +:这是一个量词,表示前面的模式可以出现一次或多次。

三、总结

本文以一个简单的python脚本演示如何通过正则表达式re库分离内容中的文本和链接,希望可以帮助到您。


http://www.ppmy.cn/server/115291.html

相关文章

C++与QML的数据交互

C与QML的数据交互 1、使用结构体2、使用json2、使用QVariantList、QVarianMap3、使用QObject类和Q_PROPERTY双向绑定 1、使用结构体 在C中声明并注册一个结构体 struct Data {Q_GADGETQ_PROPERTY(int32_t can_id MEMBER can_id)Q_PROPERTY(int32_t heatlid_kp MEMBER heatlid…

区块链--代币之外的应用

数字货币是区块链技术的首次应用,但这可以说并没有真正发挥其潜力。比特币的发明首次引入了区块链的概念,但是直到 2013 年,区块链技术的真正潜力才得以展现,并在除加密货币之外的许多不同行业中得到应用。从那时起,人…

C#使用handle实现获取占用指定文件或文件夹的进程(Locksmith功能)

前言:很多时候,一些不知道啥进程,把你的文件给占用了,然后就没办法删掉或者做其他操作。如果使用Locksmith功能,就可以实现快速锁定是哪个进程在搞事情,把对应进程干掉就可以了。下面内容演示C#使用几行代码…

stable diffusion 反推提示词插件 tagger 的安装,很详细

stable diffusion 反推提示词插件 tagger 的安装,很详细 一、前言二、下载1、方式一2、方式二 一、前言 最近想下载 stable diffusion 反推提示词插件 tagger ,也是好一番折腾,这里做个记录。 在安装之前确保能正常访问 github &#xff0c…

5G毫米波阵列天线仿真——CDF计算(方法一)

累计分布函数(CDF)在统计学上是一个由0增长到1的曲线。5G中CDF被3GPP标准推荐使用,5G 天线阵的有效全向辐射功率EIRP的CDF函数被用来评价设备的质量和性能。由于EIRP是在某一个方向角theta, phi上的辐射功率,幅值由天线增益与激励…

算法练习小技巧之有序集合--套路详细解析带例题(leetcode)

前言: 本文详细讲解Python中的有序集合SortedList和C中的有序集合multiset的用法,配合leetcode的例题来展示实际的用处。(本人水平不够,还无法讲解有序集合的实现方法,只会用) 觉得有帮助或者写的不错可以点个赞,后面也有几道我找…

【机器学习】随机性近似和MCMC方法的基本概念以及转移概率常见的设计思想

引言 随机性近似(Stochastic Approximation)是一种统计方法,用于估计数学模型中的参数,特别是当这些参数随时间变化或者依赖于未观测到的随机变量时。这种方法通常用于解决那些无法直接通过解析方法求解的问题,尤其是在…

【opencv】内存自动管理的解释说明

原文 Automatic Memory Management OpenCV handles all the memory automatically. First of all, std::vector, cv::Mat, and other data structures used by the functions and methods have destructors that deallocate the underlying memory buffers when needed. This…