我在athena中编写了一个sql,它使用regex\u extract从列中提取子字符串,它提取字符串,其中有“x10003”,并在空格出现时占用。例如来自 5570 - Site 811111 - X10003-10447-XXX-20443 (CAMP)
它提取 X10003-10447-XXX-20443
它可以很好地使用 REGEXP_EXTRACT(site, 'X10033.*?\w+-\d+')
在雅典娜。
现在我将其转换为sparksql,但它不能正常工作,我应用了不同的方法,但没有任何效果,例如我使用了expression: Regexp_extract("5570 - Site 811111 - X10003-10447-XXX-20443 (CAMP)", 'X10003([^\s]+)')
给了我 -10447-XXX-20443 (CAMP)
这不是我所需要的。
有人能告诉我我做错了什么吗?
3条答案
按热度按时间mrwjdhj31#
扩大捕获组:
m4pnthwp2#
你可以用
查看regex演示。
这个
(X10003.*?[A-Za-z0-9]-[0-9]+)
模式是id为1的捕获组X10003
-文字字符串.*?
-除换行符以外的零个或多个字符,尽可能少[A-Za-z0-9]
-字母数字字符-
-连字符[0-9]+
-一个或多个数字。piah890a3#
这有用吗?似乎需要两个反斜杠来转义反斜杠,而且还需要将要提取的组 Package 在括号中。
例如,