我需要从url中检索一些单词:
WebViewActivity - https://google.com/search/?term=iphone_5s&utm_source=google&utm_campaign=search_bar&utm_content=search_submit
返回我想要的:
search/iphone_5s
但是我很困惑,还不太了解如何使用regexp_substr来获取数据。
我正在尝试使用此查询
regexp_substr(web_url, '\google.com/([^}]+)\/', 1,1,null,1)
仅在我尝试时返回“搜索”字词
regexp_substr(web_url, '\google.com/([^}]+)\&', 1,1,null,1)
事实证明,我得到所有单词,直到最后一个'&'
答案 0 :(得分:3)
您可以使用REGEXP_REPLACE
来匹配整个字符串,但要捕获两个子字符串,并用对捕获组值的两个反向引用来替换:
REGEXP_REPLACE(
'WebViewActivity - https://google.com/search/?term=iphone_5s&utm_source=google&utm_campaign=search_bar&utm_content=search_submit',
'.*//google\.com/([^/]+/).*[?&]term=([^&]+).*',
'\1\2')
请参见regex demo和online Oracle demo。
模式详细信息
.*
-尽可能多的零个或多个除换行符以外的字符//google\.com/
-一个//google.com/
子字符串([^/]+/)
-捕获组1:除/
以外的一个或多个字符,然后是/
.*
-尽可能多的零个或多个除换行符以外的字符[?&]term=
-?
或&
和一个term=
子字符串([^&]+)
-捕获第2组:&
以外的一个或多个字符.*
-尽可能多的零个或多个除换行符以外的字符 注意:要使用此方法并在未找到匹配项的情况下得到空结果,请在正则表达式模式末尾附加|.+
。