【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 代码示例

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]:这部分匹配字母或数字,|表示或,即匹配其中任何一个。
  • [$-_@.&+]:这部分匹配特定的符号,包括$、-、_、@、.、&和+。
  • [!*\\(\\),]:这部分匹配更多的符号,包括!、*、\、(、)和,。
  • (?:%[0-9a-fA-F][0-9a-fA-F]):这部分用于匹配URL编码的字符,如%20代表空格。[0-9a-fA-F]匹配十六进制数字。
  • +:这是一个量词,表示前面的模式可以出现一次或多次。 

三、总结

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

《AI—工程篇》

AI智能体研发之路-工程篇(一):Docker助力AI智能体开发提效

AI智能体研发之路-工程篇(二):Dify智能体开发平台一键部署

AI智能体研发之路-工程篇(三):大模型推理服务框架Ollama一键部署

AI智能体研发之路-工程篇(四):大模型推理服务框架Xinference一键部署

AI智能体研发之路-工程篇(五):大模型推理服务框架LocalAI一键部署

《AI-模型篇》

AI智能体研发之路-模型篇(一):大模型训练框架LLaMA-Factory在国内网络环境下的安装、部署及使用

AI智能体研发之路-模型篇(二):DeepSeek-V2-Chat 训练与推理实战

AI智能体研发之路-模型篇(三):中文大模型开、闭源之争

AI智能体研发之路-模型篇(四):一文入门pytorch开发

AI智能体研发之路-模型篇(五):pytorch vs tensorflow框架DNN网络结构源码级对比

AI智能体研发之路-模型篇(六):【机器学习】基于tensorflow实现你的第一个DNN网络

AI智能体研发之路-模型篇(七):【机器学习】基于YOLOv10实现你的第一个视觉AI大模型

AI智能体研发之路-模型篇(八):【机器学习】Qwen1.5-14B-Chat大模型训练与推理实战

相关推荐

  1. shell表达式---RE

    2024-06-15 06:50:10       40 阅读
  2. pythonre库 ,表达式模块

    2024-06-15 06:50:10       17 阅读
  3. 表达式之pythonre模块使用以及一些习题

    2024-06-15 06:50:10       14 阅读
  4. 表达式RE

    2024-06-15 06:50:10       36 阅读
  5. 表达式元字符使用

    2024-06-15 06:50:10       21 阅读
  6. C#表达式提取信息使用

    2024-06-15 06:50:10       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-15 06:50:10       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-15 06:50:10       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-15 06:50:10       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-15 06:50:10       20 阅读

热门阅读

  1. 人工智能中的哲学

    2024-06-15 06:50:10       6 阅读
  2. 安装xFormers时遇到的问题,以及正确的安装方式

    2024-06-15 06:50:10       7 阅读
  3. 8个常用的辅助函数!!

    2024-06-15 06:50:10       7 阅读
  4. Cargo

    2024-06-15 06:50:10       7 阅读
  5. Docker从容器打包镜像到本地保存与加载

    2024-06-15 06:50:10       8 阅读
  6. TensorFlow编程环境:构建深度学习的乐园

    2024-06-15 06:50:10       9 阅读
  7. 计算机网络(6) ICMP协议

    2024-06-15 06:50:10       7 阅读