查询删除前缀并删除重复项

时间:2015-05-05 13:48:05

标签: regex postgresql

我有一张表格如下:

    uri               | country
----------------------+--------
http://www.A.com      |   NL
http://www.A.com/sub  |   NL
https://www.B.com     |   NL
http://C.com          |   DL

我需要一个选择查询(包括正则表达式)来显示没有uri的不同行。

Desired outcome:
    www.A.com      NL
    www.B.com      NL
    C.com          DL

我尝试了this

select distinct substring(uri from '(https?://([^/]*/){1,2})'),country from list;

但正则表达式无法处理简单的域名,如:www.A.com 它仅适用于www.A.com/sub

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

原因是因为([^/]*/)这部分正则表达式要求您的文字以/结尾。看看您期望的结果,我认为您应该将正则表达式更改为https?://([^/]*).*

答案 1 :(得分:1)

您可以通过以下方式完成:

select distinct substring(uri from '.*://([^/]*)' ),country from list;