当前位置: 首页 > news >正文

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

【python】python指南(三):使用正则表达式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库分离内容中的文本和链接,希望可以帮助到您。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 11. GIS三维建模工程师岗位职责、技术要求和常见面试题
  • 军事目标无人机视角检测数据集 3500张 坦克 带标注voc
  • 从“游戏科学”到玄机科技:《黑神话:悟空》的视角打开动漫宇宙
  • 最新车型库大全|阿里云实现调用API接口
  • 【工具】使用 Jackson 实现优雅的 JSON 格式化输出
  • 【重学 MySQL】十六、算术运算符的使用
  • 如何利用ChatGPT提升学术论文讨论部分的撰写质量和效率
  • Ansible 自动化运维项目
  • 【C++二分查找】1760. 袋子里最少数目的球
  • select、poll、epoll的区别
  • 组合模式composite
  • MySql约束练习
  • 5.3.数据结构-c/c++二叉树代码
  • C语言-第八章:指针进阶
  • 保研 比赛 利器: 用AI比赛助手降维打击数学建模
  • 【Amaple教程】5. 插件
  • Brief introduction of how to 'Call, Apply and Bind'
  • Java方法详解
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • leetcode-27. Remove Element
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • nginx 负载服务器优化
  • Python_网络编程
  • Rancher-k8s加速安装文档
  • React-生命周期杂记
  • scrapy学习之路4(itemloder的使用)
  • unity如何实现一个固定宽度的orthagraphic相机
  • 阿里研究院入选中国企业智库系统影响力榜
  • 测试如何在敏捷团队中工作?
  • 构造函数(constructor)与原型链(prototype)关系
  • 开发基于以太坊智能合约的DApp
  • Android开发者必备:推荐一款助力开发的开源APP
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • 积累各种好的链接
  • ​【经验分享】微机原理、指令判断、判断指令是否正确判断指令是否正确​
  • # 计算机视觉入门
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • $NOIp2018$劝退记
  • (Charles)如何抓取手机http的报文
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (佳作)两轮平衡小车(原理图、PCB、程序源码、BOM等)
  • (四)activit5.23.0修复跟踪高亮显示BUG
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (原)Matlab的svmtrain和svmclassify
  • (转)http-server应用
  • (转)linux下的时间函数使用
  • **python多态
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .Net插件开发开源框架
  • .NET连接数据库方式