此问题已在此处有答案:
Reference - What does this regex mean?(1个答案)
2天前关闭。
我看到一个SO答案here,它有SQL从Redshift中的URL提取域。我对Regex非常陌生。有没有可能一步一步地理解答案?
REPLACE(REGEXP_SUBSTR(url,'//[^/\\\,=@\\+]+\\.[^/:;,\\\\\(\\)]+'),'//','')
到目前为止,我所理解的是^意味着匹配字符串的开头和方括号[]之间的任何内容都是一个字符集,但我想理解这个正则表达式的输入和输出。
1条答案
按热度按时间vyswwuz21#
当然!让我们一步一步地分解正则表达式:
正则表达式的这一部分用于提取url字符串的一部分。它搜索以//开头,后跟一个或多个不是
/, \, ,, =, @, +, :, ;, (, ),
或点(.)的字符的模式。[^...]
结构表示一个求反字符类,表示任何不在方括号内的字符。例如,给定输入https://www.example.com/path,此表达式将匹配//www.example.com。
正则表达式的这一部分用于将matchedString(上一步的输出)中的//子字符串替换为空字符串。它有效地从URL的提取部分中删除//。
继续前面的例子,输出将是www.example.com,因为//被替换为空字符串。
因此,当此正则表达式应用于URL时,它会提取域名(不包括任何协议或路径)并删除任何前导//(如果存在)。