hive SQL RegEx组

bq3bfh9z  于 2023-10-18  发布在  Hive
关注(0)|答案(1)|浏览(142)

我在让regexp_extract与Hive一起工作时遇到了问题。问题似乎围绕着分组。我基本上是从/字符之间的URL中提取信息,我想选择的不是第一个匹配,而是第N个匹配。
URL可能看起来像:

https://stackoverflow.com/questions/dghahjsg/ahfgajhfg/shjagdhjasg/text/regex-match-all-characters-between-two-strings

我想提取text部分。
例如,我正在尝试:

regexp_extract(cs.context_page_url, '(\/.?\/)', 5)
gzszwxb4

gzszwxb41#

您可以使用use split(),它也是基于regex的。
演示

select split(str, '/+')[6] 
from
(select 'https://stackoverflow.com/questions/dghahjsg/ahfgajhfg/shjagdhjasg/text/regex-match-all-characters-between-two-strings' str
)s

返回:

_c0
----
text

/也不是正则表达式中的特殊字符,不需要转义
/+表示一个或多个/
如果删除+,则text的位置将是第7位,因为https:后有两个斜杠,数组索引从0开始

相关问题