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

如何结合JSON Path与正则表达式提取非C开头工号的sys_id?

提取非C开头employee_number对应的sys_id

一、JSON Path 正确写法与正则结合

你的测试JSON外层是items数组,之前的表达式存在两个问题:一是未正确定位到items数组,二是正则匹配逻辑不符合需求(你写的是匹配全数字,但需求是只要不以C开头即可)。

有效JSON Path表达式

$.items[?(@.employee_number =~ /^[^C].*/)].sys_id

正则使用说明

  • JSON Path中正则需用/包裹,语法为=~ /正则规则/,而非单引号
  • ^[^C]匹配字符串开头不是"C"的情况(区分大小写,若要忽略大小写可加i标志:/^[^C].*/i)
  • .*匹配后续任意长度的任意字符,覆盖所有非C开头的场景

如果工具对正向匹配支持不佳,也可以用反向排除逻辑:

$.items[?(!(@.employee_number =~ /^C.*/))].sys_id

二、XPath实现方式

若用XPath处理,需先将JSON转为XML(多数工具支持自动转换),转换后的XML结构大致如下:

<root>
  <items>
    <item>
      <sys_updated_on>2021-01-15 15:04:04</sys_updated_on>
      <sys_id>60eaa1dc47870d9132f624846d434a</sys_id>
      <employee_number>C89</employee_number>
    </item>
    <item>
      <sys_updated_on>2017-12-08 09:26:49</sys_updated_on>
      <sys_id>c57058e8db8689ca52c4be13961974</sys_id>
      <employee_number>983</employee_number>
    </item>
    <item>
      <sys_updated_on>2016-04-08 13:25:00</sys_updated_on>
      <sys_id>fd413e848716119096ca2d0ebb358e</sys_id>
      <employee_number>565</employee_number>
    </item>
  </items>
</root>

对应的XPath表达式:

//item[not(starts-with(employee_number, 'C'))]/sys_id/text()

逻辑解释

  • //item 选中所有item节点
  • not(starts-with(employee_number, 'C')) 过滤掉employee_number以"C"开头的item
  • /sys_id/text() 提取符合条件的item的sys_id文本内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 03:50:26