蜂巢SQLregexp_extract(个数)_(个数)

Hive SQL regexp_extract (number)_(number)

我是 hiveSQL 的新手,我正在尝试从数据 df 的列 col_a 中提取值,格式如下: \\"id\\":\\"101_12345\\" 我只需要提取101_12345,但是下划线很难满足我的需要。我尝试使用 regexp_extract(col_a, '(\d+)[_](\d+)') 但只输出 101。 我能得到一些关于正则表达式的帮助吗?谢谢

简单的解决方案:您不需要两个括号。

这是一个可行的解决方案:'\d+[_]\d+'

当您将标记放入括号中时,正则表达式引擎会将其匹配组合在一起,与完整匹配分开。所以最终结果将包括完整的匹配,以及代表下划线前后的两个额外匹配。为避免这种情况,只需删除括号,因为您并不真正需要它们。

将来,如果您想将正则表达式组合在一起但不希望结果单独包含它,请使用 (?:) 给出的 non-capturing group

这是您的代码生成结果的演示,hosted at regex101.com