我需要使用正则表达式提取以下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]*)')
谢谢!
答案 0 :(得分:3)
[^\n]*
匹配0个或多个字符,而不是换行符LF,因此也就不足为奇了。
您需要一种模式来匹配下一个/
,因此您可以使用
designers/([^/]+)
或更准确地说:
(?:^|/)designers/([^/]+)
请参见regex demo
详细信息
(?:^|/)
-字符串开头或/
(如果/
始终以designers
开头,则可以使用/
)designers/
和designers/
子字符串([^/]+)
-捕获组1(正是REGEXP_EXTRACT
函数将返回的内容):/
以外的一个或多个字符。