使用Regex查询逗号分隔数据,匹配指定abc值提取对应字段值
正则表达式编写方案
通用匹配逻辑
所有场景的正则都遵循相同的逻辑:先锁定行首abc等于指定值的行,跳过中间任意数量的其他键值对,最终捕获目标字段的取值,不要求键值对顺序固定。
分场景正则示例
- 场景1:abc取值为6时提取ghi字段值
正则:^abc=6(?:,[^=]+=[^,]+)*,ghi=([^,]+)
提取第1个捕获组的内容,即可得到结果52158789。 - 场景2:abc取值为6时提取jkl字段值
正则:^abc=6(?:,[^=]+=[^,]+)*,jkl=([^,]+)
提取第1个捕获组的内容,即可得到结果985214526。 - 场景3:abc取值为2时提取jkl字段值
正则:^abc=2(?:,[^=]+=[^,]+)*,jkl=([^,]+)
提取第1个捕获组的内容,即可得到结果852146。
补充说明
如果你的正则引擎支持正向零宽后视断言,可以直接匹配目标值,无需额外提取捕获组,以abc=6提取ghi值为例,正则写法如下:(?<=^abc=6(?:,[^=]+=[^,]+)*,ghi=)[^,]+
这个正则直接匹配到的结果就是目标值。
内容的提问来源于stack exchange,提问作者GreatOrdinary
相关产品推荐
相关产品推荐

