我一直在四处寻找答案,但我几乎无法将手指放在上面。
我想在第n个正斜杠之后和URL中的下一个正斜杠之前选择值。
所以,例如:在以下网址中... https://stackoverflow.com/foo/bar/thisValue/more/text/我想返回thisValue(在第五个正斜杠之后)。
任何想法都会受到赞赏。
答案 0 :(得分:2)
您可以跳过正则表达式并使用split_part
:
在
string
上拆分delimiter
并返回给定字段(从1开始计算)。
例如:
=> select split_part('http://stackoverflow.com/foo/bar/thisValue/more/text/', '/', 6);
split_part
------------
thisValue
不要忘记http://
中双倍斜杠引起的空白部分。
答案 1 :(得分:1)
目前接受的解决方案对我不起作用。这样做:
SELECT substring('http://stackoverflow.com/foo/bar/thisValue/more/text/'
,'^http://(?:[^/]*/){3}([^/]+)')
说明:
^ .. anchor left
(?: .. non-capturing parenthesis
[^/]* .. 0-n character being not "/"
{3} .. last element 3 times
([^/]+) .. 1-n characters not "/", this time in capturing parenthesis
答案 2 :(得分:0)
http:\/\/([^\/]+\/){n}([^\/]+).*$
你的例子中n = 3