我有一个包含网站 URL 的数据库。我想从这些 URL 中提取域名。这里有两个(完全不同的)例子:
http://www.example.com -> example.com
example.co.uk/dir/index.html -> example.co.uk
为此,我使用正则表达式和 Oracle 提供的函数 REGEXP_SUBSTR 和 REGEXP_REPLACE。我正在使用 replace 将前面的 http[s]
和 www.
替换为空字符串(删除它)。然后我使用 substring 获取开头和第一个 /
之间的字符串,或者如果没有 /
整个字符串。我的代码如下所示:
REGEXP_SUBSTR(REGEXP_REPLACE(website_url, '^http[s]?://(www\.)?|^www\.', '', 1), '(.+?)(/|$)')
一切都按预期工作,除了我的正则表达式无法排除 /
:
example.com/dir/index.html -> example.com/
我想去掉 /
。我该怎么做?
最佳答案
使用这个:
WITH tab AS
(SELECT 'https://www.example.co.uk/dir/index.html' AS website_url
FROM dual)
SELECT REGEXP_SUBSTR(REGEXP_REPLACE(website_url, '^http[s]?://(www\.)?|^www\.', '', 1), '\w+(\.\w+)+')
FROM tab;
输出:
|REGEXP_SUBSTR(REGEXP_REPLACE(W|
--------------------------------
|example.co.uk |
关于sql - 从 Oracle SQL 中的 URL 获取域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21064080/