私は周りを見回していて、ほとんど答えにたどり着きましたが、私はそれに指を置くことができません。
URLのn番目のスラッシュの後、次のスラッシュの前に値を選択したいと思います。
したがって、たとえば、次のURLで... https://stackoverflow.com/foo/bar/thisValue/more/text/ thisValueを返したい(5番目のスラッシュの後)。
任意のアイデアをいただければ幸いです。
私は周りを見回していて、ほとんど答えにたどり着きましたが、私はそれに指を置くことができません。
URLのn番目のスラッシュの後、次のスラッシュの前に値を選択したいと思います。
したがって、たとえば、次のURLで... https://stackoverflow.com/foo/bar/thisValue/more/text/ thisValueを返したい(5番目のスラッシュの後)。
任意のアイデアをいただければ幸いです。
正規表現をスキップして使用できますsplit_part
:
指定されたフィールドを分割
string
しdelimiter
て返します (1 から数えます)。
例えば:
=> select split_part('http://stackoverflow.com/foo/bar/thisValue/more/text/', '/', 6);
split_part
------------
thisValue
の二重スラッシュによる空の部分を忘れないでくださいhttp://
。
現在受け入れられている解決策は私にとってはうまくいきませんでした。これは次のことを行います。
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
http:\/\/([^\/]+\/){n}([^\/]+).*$
あなたの例では n=3