我想基于模式从冗长的字符串中提取子字符串。想知道获得它的最佳方法是什么?
http://abcdef?menu=xyz&source=push&push_id=1212239617294503480&message_id=7658a0a6-9d31-4c3c-9aa0-9169f24e2fdc
模式:'menu'
寻找以下子字符串:'xyz'
答案 0 :(得分:4)
如果您的示例准确地代表了您的最终目标,那么url_extract_parameter()
函数可能是比正则表达式更好的解决方案:
SELECT url_extract_parameter('http://abcdef?menu=xyz&source=push', 'menu');
-- returns 'xyz'
答案 1 :(得分:3)
在Presto DB中,您应该可以使用function regexp_extract()
,其格式支持捕获组:
REGEXP_EXTRACT(val, 'menu=([^&]+)', 1)
正则表达式细目:
menu= # litteral string 'menu='
( # beginning of capturing group number 1
[^&]+ # at least one character other than '&'
) # end of capturing group number 1
答案 2 :(得分:0)