regex 如何从URL中提取域的正则表达式构造[重复]

qlckcl4x  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(119)

此问题已在此处有答案

Reference - What does this regex mean?(1个答案)
2天前关闭。
我看到一个SO答案here,它有SQL从Redshift中的URL提取域。我对Regex非常陌生。有没有可能一步一步地理解答案?

REPLACE(REGEXP_SUBSTR(url,'//[^/\\\,=@\\+]+\\.[^/:;,\\\\\(\\)]+'),'//','')

到目前为止,我所理解的是^意味着匹配字符串的开头和方括号[]之间的任何内容都是一个字符集,但我想理解这个正则表达式的输入和输出。

vyswwuz2

vyswwuz21#

当然!让我们一步一步地分解正则表达式:

REGEXP_SUBSTR(url,'//[^/\\\,=@\\+]+\\.[^/:;,\\\\\(\\)]+')

正则表达式的这一部分用于提取url字符串的一部分。它搜索以//开头,后跟一个或多个不是/, \, ,, =, @, +, :, ;, (, ),或点(.)的字符的模式。[^...]结构表示一个求反字符类,表示任何不在方括号内的字符。
例如,给定输入https://www.example.com/path,此表达式将匹配//www.example.com。

REPLACE(matchedString, '//', '')

正则表达式的这一部分用于将matchedString(上一步的输出)中的//子字符串替换为空字符串。它有效地从URL的提取部分中删除//。
继续前面的例子,输出将是www.example.com,因为//被替换为空字符串。
因此,当此正则表达式应用于URL时,它会提取域名(不包括任何协议或路径)并删除任何前导//(如果存在)。

相关问题