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

【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 re

def extract_links(text):
    # 正则表达式匹配URL
    pattern = r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+'
    # 查找所有匹配的URL
    links = 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.kler.cn/news/294237.html

相关文章:

  • 【Netty】netty中都是用了哪些设计模式
  • BIO、NIO、AIO 有什么区别?
  • 进程间通信-进程池
  • 《Cloud Native Data Center Networking》(云原生数据中心网络设计)读书笔记 -- 09部署OSPF
  • 前向代理和反向代理的区别是什么?
  • JWT详解:一种轻量级的身份验证和授权机制
  • 2024年AI芯片峰会——边缘端侧AI芯片专场
  • 力扣172.阶乘后的0
  • elasticsearch文档Delete By Query API(一)
  • 蚂蚁数科独立后首度公布业务进展和战略布局
  • 已经30岁了,想转行从头开始现实吗?什么样的工作算好工作?
  • 网页时装购物系统:Spring Boot框架的高效实现
  • 《Foundation 滑块》
  • Codeforces Round 971 (Div. 4) A~G2
  • 【网络安全】CSRF漏洞—CSRF基础漏洞防御
  • linux系统中,计算两个文件的相对路径
  • class 6: vue.js 3 组件化开发
  • SpringBoot学习(4)(yml配置信息书写和获取)(SpringEL表达式语言)
  • 零工市场小程序:自由职业者的日常工具
  • HarmonyOS开发实战( Beta5版)延迟加载lazy-import实践使用指导
  • 探索EasyCVR与AI技术深度融合:视频汇聚平台的新增长点
  • 华为 HCIP-Datacom H12-821 题库 (8)
  • 香港服务器机房托管:优化全球访问体验的最佳选择
  • laravel command 执行自定义命令 choice 以后使用info 中文乱码
  • 2024全国大学生数学建模竞赛B题完整论文讲解
  • prometheus删除指定metrics下收集的值
  • MES系统:现代工厂生产车间的科技与管理创新
  • GAN 干!!!!
  • Qt 去掉QDialog对话框的问号
  • 【GD32】外部存储器控制器(EXMC)驱动16位8080时序并口屏(GD32F470ZGT6)