使用正则表达式从 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/([^/]+)

regex demo

详情

  • (?:^|/) - 字符串的开头或 /(如果 designers 始终以 / 开头,您可以只使用 /
  • designers/一个designers/子串
  • ([^/]+) - 捕获第 1 组(REGEXP_EXTRACT 函数将返回的内容):除 /.
  • 之外的一个或多个字符