正则表达式从 URL 中删除 www
Regex remove www from URL
我希望有人能帮忙,这让我发疯!
我正在尝试修改 Logstash Grok 过滤器以解析域名。
目前正则表达式是:
\b(?:[0-9A-Za-z][0-9A-Za-z-]{0,62})(?:\.(?:[0-9A-Za-z][0-9A-Za-z-]{0,62}))*(\.?|\b)
并正确分隔域但是,我需要添加额外的检查以删除 www.
.
这是我到目前为止的想法:
\b(?:[0-9A-Za-z][0-9A-Za-z-]{0,62})(^(?<!www$).*$?:\.(?:[0-9A-Za-z][0-9A-Za-z-]{0,62}))*(\.?|\b)
我似乎只能保留域的 www.
部分,而不是域本身。
我需要实现的示例:
www.whosebug.com
应该是 whosebug.com
.
我需要专门删除 www.
而不是整个子域。
提前致谢!
更新
预期输出的输入示例(以 post 为例):
在它的当前状态:
returns www.whosebug.com
我需要的是 return whosebug.com
您可以在第一个 \b
之后添加 (?!www\.)
和 (?!http:\/\/www\.)
否定前瞻以排除匹配 www.
或 http://www.
:
\b(?!www\.)(?!http:\/\/www\.)(?:[0-9A-Za-z][0-9A-Za-z-]{0,62})(?:\.(?:[0-9A-Za-z][0-9A-Za-z-]{0,62}))*(?:\.?|\b)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
您可以添加更多负面前瞻以排除 https://
或 ftp
/ftps
链接。
备选方案:
\b(?!(?:https?|ftps?):\/\/)(?!www\.)(?:[0-9A-Za-z][0-9A-Za-z-]{0,62})(?:\.(?:[0-9A-Za-z][0-9A-Za-z-]{0,62}))*(?:\.?|\b)
(?!(?:https?|ftps?):\/\/)
和 (?!www\.)
前瞻只会让您跳过协议和 URL 的 www
部分。
如果 url 以 www
开头,这将匹配 www
之后的部分。
(?!www\.)\b(?:(?!-)[0-9A-Za-z]{1,63})(?:\.(?:(?!-)[0-9A-Za-z-]{1,63}))*(\.?|\b)
我也通过在子域中对 -
使用负面展望来简化你的正则表达式的其余部分。
我希望有人能帮忙,这让我发疯!
我正在尝试修改 Logstash Grok 过滤器以解析域名。
目前正则表达式是:
\b(?:[0-9A-Za-z][0-9A-Za-z-]{0,62})(?:\.(?:[0-9A-Za-z][0-9A-Za-z-]{0,62}))*(\.?|\b)
并正确分隔域但是,我需要添加额外的检查以删除 www.
.
这是我到目前为止的想法:
\b(?:[0-9A-Za-z][0-9A-Za-z-]{0,62})(^(?<!www$).*$?:\.(?:[0-9A-Za-z][0-9A-Za-z-]{0,62}))*(\.?|\b)
我似乎只能保留域的 www.
部分,而不是域本身。
我需要实现的示例:
www.whosebug.com
应该是 whosebug.com
.
我需要专门删除 www.
而不是整个子域。
提前致谢!
更新
预期输出的输入示例(以 post 为例):
在它的当前状态:
www.whosebug.com
我需要的是 return whosebug.com
您可以在第一个 \b
之后添加 (?!www\.)
和 (?!http:\/\/www\.)
否定前瞻以排除匹配 www.
或 http://www.
:
\b(?!www\.)(?!http:\/\/www\.)(?:[0-9A-Za-z][0-9A-Za-z-]{0,62})(?:\.(?:[0-9A-Za-z][0-9A-Za-z-]{0,62}))*(?:\.?|\b)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
您可以添加更多负面前瞻以排除 https://
或 ftp
/ftps
链接。
备选方案:
\b(?!(?:https?|ftps?):\/\/)(?!www\.)(?:[0-9A-Za-z][0-9A-Za-z-]{0,62})(?:\.(?:[0-9A-Za-z][0-9A-Za-z-]{0,62}))*(?:\.?|\b)
(?!(?:https?|ftps?):\/\/)
和 (?!www\.)
前瞻只会让您跳过协议和 URL 的 www
部分。
如果 url 以 www
开头,这将匹配 www
之后的部分。
(?!www\.)\b(?:(?!-)[0-9A-Za-z]{1,63})(?:\.(?:(?!-)[0-9A-Za-z-]{1,63}))*(\.?|\b)
我也通过在子域中对 -
使用负面展望来简化你的正则表达式的其余部分。