问题描述
https://www.example.com/page-1/product-x?utm-source=google
目标:我只想提取网址的域名部分:
我正在使用以下公式:
=REGEXEXTRACT(A1;"^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?([^:\/\n?]+)")
当testing it时,正则表达式可以正常工作:
https://www.example.com/
但是在Google表格中,它显示为:
example.com
- 为什么相同正则表达式的结果不一样?
- 如何在Google表格中更正它?
解决方法
您可以通过删除捕获组(例如,([^:\/\n?]+)
=> [^:\/\n?]+
)或将捕获组转换为非捕获组(即([^:\/\n?]+)
=>来修复模式。 (?:[^:\/\n?]+)
)
=REGEXEXTRACT(A1;"^(?:https?://)?(?:[^@\n]+@)?(?:www\.)?[^:/\n?]+")
=REGEXEXTRACT(A1;"^(?:https?://)?(?:[^@\n]+@)?(?:www\.)?(?:[^:/\n?]+)")
注意:
- 如果正则表达式包含捕获组,则
REGEXEXTRACT
返回捕获的值 - 如果正则表达式中没有捕获组,则该函数仅返回整个匹配值。
请注意,由于RE2正则表达式是借助Google表格中的字符串文字定义的,因此您无需在RE2正则表达式中转义/
。
模式可以简化为^(?:https?://)?[^:/\n?]+
,可以匹配http://
或https://
,然后匹配/
,换行符或{{ 1}}。