使用正则表达式从 URL 中提取某个元素
Extract a certain element from URL using regular expressions
我需要使用正则表达式提取以下 URL 中 "designer" 之后的第一个元素 ("adidas-originals")。
xxx/en-ca/men/designers/adidas-originals/shorts
这需要在 Google Big Query API(标准 SQL)中完成。为此,我尝试了几种方法来获得想要的值,但都没有成功。以下是我迄今为止找到的最佳解决方案,但显然不是正确的解决方案,因为它 returns "/adidas-originals/shorts".
REGEXP_EXTRACT(hits.page.pagePath, r'designers([^\n]*)')
谢谢!
[^\n]*
匹配除换行符、LF 以外的 0 个或多个字符,难怪它匹配得太多了。
您需要一个模式来匹配下一个 /
,因此您可以使用
designers/([^/]+)
或更精确:
(?:^|/)designers/([^/]+)
详情
(?:^|/)
- 字符串的开头或 /
(如果 designers
始终以 /
开头,您可以只使用 /
)
designers/
一个designers/
子串
([^/]+)
- 捕获第 1 组(REGEXP_EXTRACT
函数将返回的内容):除 /
. 之外的一个或多个字符
我需要使用正则表达式提取以下 URL 中 "designer" 之后的第一个元素 ("adidas-originals")。
xxx/en-ca/men/designers/adidas-originals/shorts
这需要在 Google Big Query API(标准 SQL)中完成。为此,我尝试了几种方法来获得想要的值,但都没有成功。以下是我迄今为止找到的最佳解决方案,但显然不是正确的解决方案,因为它 returns "/adidas-originals/shorts".
REGEXP_EXTRACT(hits.page.pagePath, r'designers([^\n]*)')
谢谢!
[^\n]*
匹配除换行符、LF 以外的 0 个或多个字符,难怪它匹配得太多了。
您需要一个模式来匹配下一个 /
,因此您可以使用
designers/([^/]+)
或更精确:
(?:^|/)designers/([^/]+)
详情
(?:^|/)
- 字符串的开头或/
(如果designers
始终以/
开头,您可以只使用/
)designers/
一个designers/
子串([^/]+)
- 捕获第 1 组(REGEXP_EXTRACT
函数将返回的内容):除/
. 之外的一个或多个字符