Postgres正则表达式匹配 - 匹配一个字符或什么都不匹配

时间:2013-07-27 00:20:42

标签: regex postgresql

我正在尝试使用正则表达式在Postgres中获取域名。

当我这样做时:

select substring('http://yahoo.com' from 'http://(.+?)/|');

返回空字符串。 我希望它返回http://yahoo.com

如果我执行以下操作,它会起作用,但并非所有网址都以尾部斜杠结尾。

select substring('http://yahoo.com/' from 'http://(.+?)/|');

2 个答案:

答案 0 :(得分:2)

你可以写:

select substring('http://yahoo.com' from 'http://[^/]+/?');

将匹配http://,加上域名(/以外的所有字符),加上尾随/(如果有)。

(免责声明:未经测试。)

答案 1 :(得分:-1)

select substring('http://yahoo.com' from 'http://(.+?)/?|');

请注意最后?后的/,表示它是可选的。