繁体   English   中英

Hive SQL regexp_extract (number)_(number)

[英]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

这是您的代码生成的演示,托管在 regex101.com

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM