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

如何使用正则提取第二个name ID的对应值作为首个捕获组

正则提取第二个name ID取值的解决方案

直接使用如下正则即可将第二个name ID的取值放入第一个捕获组:

[\s\S]*?name ID:[\s\S]*?name ID:\s*([^\n\r]+)

正则逻辑说明

  • [\s\S]*?:非贪婪匹配任意字符(包含换行符),用于跳过不需要的前缀内容
  • 第一个name ID::定位到第一个姓名标识位,后续继续用[\s\S]*?跳过第一个姓名的内容以及中间的其他文本,直到命中第二个name ID:
  • 第二个name ID:\s*:定位到第二个姓名标识位,同时匹配标识后紧跟的任意空白字符(空格、制表符等)
  • ([^\n\r]+):第一个捕获组,匹配所有非换行、非回车的字符,刚好取到当前行的姓名值,示例中即可得到john

如果你的正则引擎支持单行模式(dotall模式,即.可以匹配换行符),也可以简化为如下写法,开启dotall模式后即可生效:

.*?name ID:.*?name ID:\s*([^\n\r]+)

原有写法问题说明

你之前使用的name ID: \s(.*?)\s默认从文本开头从左到右匹配第一个符合规则的片段,因此只会返回第一个name ID的取值andy,没有跳过第一个匹配项的逻辑,自然无法获取到第二个姓名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 02:24:07