1

私は周りを見回していて、ほとんど答えにたどり着きましたが、私はそれに指を置くことができません。

URLのn番目のスラッシュの後、次のスラッシュの前に値を選択したいと思います。

したがって、たとえば、次のURLで... https://stackoverflow.com/foo/bar/thisValue/more/text/ thisValueを返したい(5番目のスラッシュの後)。

任意のアイデアをいただければ幸いです。

4

3 に答える 3

2

正規表現をスキップして使用できますsplit_part

指定されたフィールドを分割stringdelimiterて返します (1 から数えます)。

例えば:

=> select split_part('http://stackoverflow.com/foo/bar/thisValue/more/text/', '/', 6);
 split_part 
------------
 thisValue

の二重スラッシュによる空の部分を忘れないでくださいhttp://

于 2012-12-28T04:28:16.390 に答える
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

詳細はマニュアルをご覧ください。

于 2012-12-28T08:46:11.543 に答える
0
http:\/\/([^\/]+\/){n}([^\/]+).*$

あなたの例では n=3

于 2012-12-28T03:59:16.760 に答える