我是hiveSQL新手,我试图从col_a列中提取一个值,它是以这种格式显示的:\\\"id\\\":\\\"101_12345\\\",我只需要提取101_12345,但是下划线很难满足我的需求。我尝试使用regexp_extract(col_a, '(\\d+)[_](\\d+)'),但只输出101。能帮我处理一下regexp吗?谢谢
发布于 2022-05-12 23:19:03
简单的解决方案:您不需要这两个括号。
下面是一个可行的解决方案:'\\d+[_]\\d+'
当您将标记放入括号中时,regex引擎将将其匹配组合在一起,与完全匹配的分开。因此,最终结果将包括完全匹配,以及两个额外的匹配,分别表示下划线之前和之后的匹配。为了避免这种情况,只需去掉括号,因为您并不真正需要它们。
将来,如果希望将正则表达式组合在一起,但不希望结果单独包含,请使用(?:)提供的(?:)。
下面是代码结果的演示,托管于regex101.com
https://stackoverflow.com/questions/72222812
复制相似问题