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

网址匹配正则表达式(python实现)

网址匹配正则表达式(python实现)

正则表达式部分如下:

pattern = re.compile(
    r'^(?:http|ftp)s?://'       # http:// or https:// or ftp:// or ftps://
    r'(?:\S+(?::\S*)?@)?'       # 可选的 用户:密码@ 部分
    r'(?:'                      # 开始匹配域名
    r'[A-Z0-9.-]+\.[A-Z]{2,6}'  # 规范的域名,如 example.com
    r'|'                        # 或者
    r'localhost'                # 本地 localhost
    r')'                        # 域名结束
    r'(?::\d{2,5})?'            # 可选的端口号,如 :8080
    r'(?:/?|[/?]\S+)$',         # 可选的路径和查询参数,如 /path 或 /path?query=1
    re.IGNORECASE               # 不区分大小写
)
分段解释
  • r'^(?:http|ftp)s?://':该部分匹配 URL 的协议部分,支持 http://https://ftp://ftps://。其中,s? 表示 s 是可选的,这使得该部分可以匹配带有或不带有 s 的 URL。

  • r'(?:\S+(?::\S*)?@)?':这个部分用于匹配可选的用户信息,即 用户:密码@,这是用于带有身份验证的 URL 的常见格式。? 表示这一部分是可选的,不一定会出现在 URL 中。

  • r'(?:[A-Z0-9.-]+\.[A-Z]{2,6}|localhost)':该部分匹配域名:

    • [A-Z0-9.-]+\.[A-Z]{2,6}:匹配像 example.com 这样的域名,.com 的后缀部分可以是 2 到 6 个字母(如 .com.org.net 等)。
    • localhost:专门处理 localhost 的情况,这是在本地开发时常用的 URL。
  • r'(?::\d{2,5})?':这个部分用于匹配可选的端口号(例如 :8080),其中端口号的位数可以是 2 到 5 位。该部分也是可选的。

  • r'(?:/?|[/?]\S+)$':这个部分匹配 URL 的路径或查询参数部分,可能为空,或者可以是类似 /path/path?query=1 的格式。

  • re.IGNORECASE:这是正则表达式的一个标志,它指定正则表达式在匹配时不区分大小写。

这个正则表达式涵盖了协议、用户信息、域名、端口号、路径等各个 URL 的组成部分,能够处理大多数常见的 URL 格式。


http://www.kler.cn/news/313494.html

相关文章:

  • SaaS 架构:益处及挑战
  • 安谋科技发布全新自研“玲珑”多媒体处理器
  • macOS 中搭建 Flutter 开发环境
  • 微软发布Windows Agent Arena 为生成式AI代理提供基准测试
  • 动手学习RAG: 大模型向量模型微调 intfloat/e5-mistral-7b-instruct
  • [网络层]-IP协议相关特性
  • 记忆化搜索专题——算法简介力扣实战应用
  • JavaScript 与 Java 的继承有何区别?-----原型继承,单继承有何联系?
  • 微信小程序/uniapp 程序分包处理,小程序性能优化
  • 错题集锦之C语言
  • NumPy库学习之argmax函数
  • C++【类和对象】(一)
  • 数据结构--图
  • k8s的基础
  • YOLOv8改进,YOLOv8替换主干网络为VanillaNet( CVPR 2023 华为提出的全新轻量化架构),大幅度涨点
  • Remix在SPA模式下,出现ErrorBoundary错误页加载Ant Design组件报错,不能加载样式的问题
  • 使用注意力机制可以让你的模型更加灵活,但是需要额外的计算资源。rnn lstm bilstm attension
  • 【论文阅读】PERCEIVER-ACTOR: A Multi-Task Transformer for Robotic Manipulation
  • 开关磁阻电机(SRM)系统的matlab性能仿真与分析
  • python知识点100篇系列(17)-替换requests的python库httpx
  • Python学习
  • yolo自动化项目实例解析(四)ui页面整理1 (1.85)
  • git merge如何忽略部分路径
  • sqli-lab靶场学习(四)——Less11-14(post方法)
  • 微信小程序中的实时通讯:TCP/UDP 协议实现详解
  • Closure 是个数据结构
  • 如何在 Ubuntu 上安装 OpenSSH Server ?
  • DataFrame生成excel后为什么多了一行数字
  • 计算机的编程
  • 华为OD机试 - 信号强度(Python/JS/C/C++ 2024 E卷 100分)