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

如何使用Python正则表达式提取URL中的page标识及对应页码

正则提取URL中page标识及页码的解决方案

你原有正则的问题在于将分隔符和页码放在同一个选择分支中,既无法准确分离出1-3位的页码,也不能适配page和页码之间不同类型分隔符的匹配逻辑。

适配所有变体的正则规则

如果需要同时捕获page标识和对应页码,使用如下规则:

(?<=[/?])(page)(?:[-=/])?(\d{1,3})(?=/|$)

规则说明:

  • (?<=[/?]):正向回顾后断言,限定匹配位置的前一位只能是路径分隔符/或者查询参数起始符?,避免匹配到URL其他位置包含page的无关内容
  • (page):第一捕获组,精准匹配你需要的page标识
  • (?:[-=/])?:非捕获组,匹配page和页码之间可能存在的分隔符(支持-、=、/三种),同时兼容没有分隔符直接跟数字的场景
  • (\d{1,3}):第二捕获组,精准匹配1-3位的有效页码
  • (?=/|$):正向先行断言,限定页码后面只能是结尾或者路径分隔符/,避免误匹配更长数字或其他无关字符

匹配效果验证

该规则可以100%覆盖你给出的所有URL变体,提取结果符合预期:

测试URL捕获page标识捕获页码
fghghdsfs/page4page4
fghghdsfs/page-4page4
sfgsfgsfg/page=4page4
hteheth/page-4/page4
dhdghgd/page=4/page4
dghdghdh/page/4/page4
dghdghdh/page/4page4
fghghdsfs?page4page4
dhdghd?page-4page4
dghdg?page-4/page4
eyeyt?page=4page4
etyetyet?page=4/page4
nvnndgnd?page/4/page4
dghdghdh/page/4page4

变体需求调整

如果你需要连前面的/或?也一起捕获,直接去掉回顾后断言即可:

([/?])(page)(?:[-=/])?(\d{1,3})(?=/|$)

此时第一捕获组为前缀分隔符,第二组为page标识,第三组为页码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:15:04