如何在JavaScript、Python、SQL中用正则提取括号内指定键对应的字符串
需求说明
现有待处理的字符串数据如下:
{"ABC":"Hello"},{"DEF":"World"},{"GHI":"!!!"}
需要编写兼容JavaScript、Python、SQL中REGEXP_EXTRACT函数的正则表达式,实现根据指定键(如ABC、GHI)提取对应大括号内的取值,匹配ABC时返回Hello,匹配GHI时返回!!!。
原有实现问题
之前尝试使用正则{"DEF":"(.*?)"}进行匹配,最终得到的结果为{"ABC":"Hello"},World,{"GHI":"!!!"},不符合预期。
问题根源在于多数正则提取函数默认从整个字符串的匹配结果中取捕获组内容,如果正则没有覆盖完整字符串,返回结果会携带前后未匹配的片段。
最终解决方案
只需要在原有正则的前后添加.*匹配字符串前后的其余内容即可,以提取ABC对应的值为例,正则写法如下:
.*{"ABC":"(.*?)"}.*
匹配后取第一个捕获组的内容,即可正确得到目标值Hello。
如果要提取其他键对应的值,只需要把正则中的ABC替换为目标键名即可。
内容的提问来源于stack exchange,提问作者Furqon Aji Yudhistira
相关产品推荐
相关产品推荐

