2016-10-03 5 views
0
select 
regexp_substr(uri, 'http://([^/]*)') as domainname, 
regexp_substr(uri, '[^"http://[a-zA-Z0-9]*"].*') as path, 
uri from http where uri; 

これは私がすでに試したものです。しかし、その道は働いていません。 (ホストは十分postgresでregexpを使ってパスとホストを得るにはどうすればいいですか

PSという証拠を欺くものではなく、私のテストのために:。?。、/最後件まで行く必要なしマーク件までコンテンツを持っているパスのためとしての十分な

編集:例

http://assets.adobedtm.com 01:私は

+0

SQL文がどちらか---バグがある 'uri'は、文字列またはブール値ではなく、両方であること。明快な質問や、イラストレーションのサンプルなど、必要なものをさらに詳細に記述してください。 –

+0

ありがとう@LaurenzAlbe、 – dinesh707

+0

の例で更新しました ''^(?!http:// [a-zA-Z0-9] *)。*''を使用しようとしたと思います'http:// [a-zA-Z0-9] *'パターンで始まるものより) 。私はあなたの環境で否定的な先読みを使用することができるかどうかはわかりません。いずれにせよ、 '[^" http:// [a-zA-Z0-9] * "]'は '' ''、 'h''、' t'以外の任意の1つのcharにマッチする文字クラスです。 、期待どおりに動作するとは思われません –

答えて

0
SELECT x[1] AS host, x[2] AS path 
FROM (SELECT regexp_matches(
       'http://assets.adobedtm.com/a/b/c/041.js', 
       '^(\w*://[^/]*)/(.*)/[^/]*$') 
    ) x(x); 

      host   | path 
----------------------------+------- 
http://assets.adobedtm.com | a/b/c 
(1 row) 
関連する問題