用于提取域的 re2 正则表达式
re2 Regex for extracting domain
在 Google 表格中,我试图从 URL 中提取域名,这些 URL 可能有(也可能没有)http://
、https://
和一个子域(无论是 www.
或类似 mail.
的其他东西)。例如:
- http://www.google.com -> google.com
- mail.yahoo.com -> yahoo.com
- www.my-site.org -> 我的-site.org
Google Sheets 使用 the re2 syntax 作为正则表达式。到目前为止我能做的最好的是:
http[s]?://www.([[:alpha:]]*.[[:alpha:]]*)
此正则表达式不适用于我遇到的三个主要场景:
- 当“http(s)”不存在时,我无法弄清楚如何让子域(www.、mail.)也被识别为可选
- 当域名包含非字母数字字符时,例如破折号
- 当顶级域有多个级别时,例如 .co.uk
谨慎使用点字符 .
可以帮助您获得所需的内容。
这里的匹配是利用两个点 \.
的存在完成的,并用点 .
:
收集组内的所有内容
([^\.]+\.)?(.*\.[^\.]+)
- 第 1 组将匹配前缀
- 组 2 将匹配域
或者如果您愿意,您可以使用以下方法专门检测后缀和域名:
([^\.]+\.)?(.*)\.([^\.]+)
- 第 1 组将匹配前缀
- 第2组将匹配域名
- 第 3 组将匹配后缀
此正则表达式是否符合您要查找的内容?
使用:
=INDEX(IFERROR(REGEXEXTRACT(A1:A, "^(?:https?:\/\/)?(?:ftp:\/\/)?(?:www\.)?([^\/]+)")))
在 Google 表格中,我试图从 URL 中提取域名,这些 URL 可能有(也可能没有)http://
、https://
和一个子域(无论是 www.
或类似 mail.
的其他东西)。例如:
- http://www.google.com -> google.com
- mail.yahoo.com -> yahoo.com
- www.my-site.org -> 我的-site.org
Google Sheets 使用 the re2 syntax 作为正则表达式。到目前为止我能做的最好的是:
http[s]?://www.([[:alpha:]]*.[[:alpha:]]*)
此正则表达式不适用于我遇到的三个主要场景:
- 当“http(s)”不存在时,我无法弄清楚如何让子域(www.、mail.)也被识别为可选
- 当域名包含非字母数字字符时,例如破折号
- 当顶级域有多个级别时,例如 .co.uk
谨慎使用点字符 .
可以帮助您获得所需的内容。
这里的匹配是利用两个点 \.
的存在完成的,并用点 .
:
([^\.]+\.)?(.*\.[^\.]+)
- 第 1 组将匹配前缀
- 组 2 将匹配域
或者如果您愿意,您可以使用以下方法专门检测后缀和域名:
([^\.]+\.)?(.*)\.([^\.]+)
- 第 1 组将匹配前缀
- 第2组将匹配域名
- 第 3 组将匹配后缀
此正则表达式是否符合您要查找的内容?
使用:
=INDEX(IFERROR(REGEXEXTRACT(A1:A, "^(?:https?:\/\/)?(?:ftp:\/\/)?(?:www\.)?([^\/]+)")))