You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python正则匹配特定URL模式(仅排除p1.g.com、p2.g.com)

正则匹配解决方案

核心需求

匹配p#.g.com格式URL,#为纯数字组合,仅排除p1.g.com、p2.g.com两种场景,其余所有长度的数字组合都要命中,包括首位为1/2的多位数(如p11.g.com、p23.g.com)。

原有方案问题

  1. r"(?P<url>p([^1,2])\.g\.com)":仅支持匹配单个非1/2字符,无法覆盖两位数及以上的数字场景
  2. r"(?P<url>p([^1,2])\d+\.g\.com)":强制要求数字首位不能为1/2,误排除了所有首位为1/2的多位数

正确正则表达式

子串匹配版本

r"(?P<url>p(?!1(?!\d)|2(?!\d))\d+\.g\.com)"

全匹配版本(仅当整个字符串完全符合格式时命中)

r"^(?P<url>p(?!1(?!\d)|2(?!\d))\d+\.g\.com)$"

逻辑说明

  • 核心通过负向前瞻断言(?!1(?!\d)|2(?!\d))实现精准排除:仅过滤「p后紧跟单独的1且无后续数字」、「p后紧跟单独的2且无后续数字」的场景,不会限制多位数的首位取值
  • \d+匹配1位及以上任意纯数字,支持无上限的数字长度
  • 保留了url命名捕获组,可直接提取匹配到的完整URL

验证结果

  • 命中示例:p3.g.com、p11.g.com、p29.g.com、p9999.g.com
  • 排除示例:p1.g.com、p2.g.com

内容的提问来源于stack exchange,提问作者Bruce Banner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 22:24:03