我正在尝试使用MySQL函数REGEXP_SUBSTR从URL中提取主机名。
我得到的最接近的RegEx如下:
(?:\w+\.)?(\w+\.\w+)
这相对来说是可行的,但问题是捕获的主机名是分组。
假设我们试图匹配https://www.w3schools.com/home,上面的正则表达式将返回:
www.w3schools.comw3schools.comREGEXP_SUBSTR似乎只减去在“完全匹配”中找到的内容,因此上面的解决方案结果不正确。如何修改上面的模式,以便将主机名包含在完全匹配中,而不是在组中?
发布于 2021-01-24 22:17:28
假设MySQL是版本8,请使用
REGEXP_SUBSTR(column, '\\w+\\.\\w+(?=/|$)')请参阅证明
解释
--------------------------------------------------------------------------------
\w+ word characters (a-z, A-Z, 0-9, _) (1 or
more times (matching the most amount
possible))
--------------------------------------------------------------------------------
\. '.'
--------------------------------------------------------------------------------
\w+ word characters (a-z, A-Z, 0-9, _) (1 or
more times (matching the most amount
possible))
--------------------------------------------------------------------------------
(?= look ahead to see if there is:
--------------------------------------------------------------------------------
/ '/'
--------------------------------------------------------------------------------
| OR
--------------------------------------------------------------------------------
$ before an optional \n, and the end of
the string
--------------------------------------------------------------------------------
) end of look-aheadhttps://stackoverflow.com/questions/65751897
复制相似问题