使用正则表达式从URL中提取特定元素

时间:2018-07-22 13:40:26

标签: google-bigquery nsregularexpression standard-sql

我需要使用正则表达式提取以下URL中“设计器”之后的第一个元素(“ adidas-originals”)。

xxx/en-ca/men/designers/adidas-originals/shorts

这需要在Google Big Query API(标准SQL)中完成。为此,我尝试了几种方法来获得期望的价值而没有成功。以下是我到目前为止找到的最佳解决方案,显然它不是正确的解决方案,因为它返回“ / adidas-originals / shorts”。

REGEXP_EXTRACT(hits.page.pagePath, r'designers([^\n]*)')

谢谢!

1 个答案:

答案 0 :(得分:3)

[^\n]*匹配0个或多个字符,而不是换行符LF,因此也就不足为奇了。

您需要一种模式来匹配下一个/,因此您可以使用

designers/([^/]+)

或更准确地说:

(?:^|/)designers/([^/]+)

请参见regex demo

详细信息

  • (?:^|/)-字符串开头或/(如果/始终以designers开头,则可以使用/
  • designers/designers/子字符串
  • ([^/]+)-捕获组1(正是REGEXP_EXTRACT函数将返回的内容):/以外的一个或多个字符。
相关问题