You need to enable JavaScript to run this app. 获取第n次出现sortname后对应人名的正则表达式实现
优惠活动
大模型
产品
解决方案
定价
更多

获取第n次出现sortname后对应人名的正则表达式实现

提取第N次sortname后对应人名的正则实现

所有从维基百科API获取的州长列表wikitext中,姓名条目格式完全统一为sortname|名|姓,不存在管道符嵌套的歧义结构,可按以下规则实现提取:

  • 基础匹配单元:针对单条sortname姓名的匹配规则可写为sortname\|([^|]+)\|([^}|]+)
    • 捕获组1对应姓名里的名,捕获组2对应姓,二者拼接即为完整人名
    • 匹配终止逻辑设置为遇到管道符、右大括号}就停止,避免把模板外的无关文本匹配进来
  • 定位第n次出现的条目(以查询德克萨斯州对应的第43次出现场景为例)
    • 单次硬匹配写法:用非捕获重复块跳过前n-1次的sortname条目,对应n=43的完整正则为
      (?:.*?sortname\|[^|]+\|[^}|]+){42}.*?sortname\|([^|]+)\|([^}|]+)
      规则逻辑:前面的非捕获块会循环匹配跳过前42条sortname记录,最后捕获组直接取出第43条对应的名和姓,输出拼接后即可得到目标人名
    • 批量场景优化写法:如果需要频繁切换查询的n值,不需要反复修改正则的重复次数,可先全局匹配所有符合sortname格式的条目存入列表,直接按下标取第n-1位(列表索引从0开始)的条目拆分管道符拼接即可,效率更高且不容易因为文本错位匹配出错

注意事项

  • 所有跨文本的间隔匹配一定要用非贪婪匹配.*?,不要用贪婪匹配.*,否则容易把跨章节的无关sortname文本也算进重复计数里,导致定位偏移
  • 这套写法兼容绝大多数主流正则引擎,不需要开启特殊的多行匹配模式,只要基础的非捕获组、非贪婪匹配支持就能运行,对Regex基础薄弱的使用者非常友好

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 13:36:08