Regex 如果字符串包含列表中的单词,则从字符串中提取单词
如果字符串包含列表中的单词,我将尝试从字符串中提取单词 例如,有字符串“RR_SM_Brand_A_Additive_Clean_jun2020”, 名单上有品牌A、品牌B、品牌C等 我使用以下正则表达式:Regex 如果字符串包含列表中的单词,则从字符串中提取单词,regex,google-bigquery,Regex,Google Bigquery,如果字符串包含列表中的单词,我将尝试从字符串中提取单词 例如,有字符串“RR_SM_Brand_A_Additive_Clean_jun2020”, 名单上有品牌A、品牌B、品牌C等 我使用以下正则表达式: /^([\s\S]*?)(Brand_A|Brand_B|Brand_C)([\s\S]*?)$.*/m 演示: 它发现了品牌A,但也有其他一些群体。当我在GoogleBigQuery中运行相应的查询时,我收到一个错误:这个查询没有返回任何结果 将第一个和最后一个括号替换为(?:)集合,而
/^([\s\S]*?)(Brand_A|Brand_B|Brand_C)([\s\S]*?)$.*/m
演示:
它发现了品牌A,但也有其他一些群体。当我在GoogleBigQuery中运行相应的查询时,我收到一个错误:这个查询没有返回任何结果
将第一个和最后一个括号替换为
(?:)
集合,而不是()
这将阻止括号实际返回捕获的组,使它们仅分组,而不是捕获
SELECT distinct utm_campaign,
REGEXP_EXTRACT(utm_campaign, r'/^([\s\S]*?)(Lysol|Airwick|Finish)([\s\S]*?)$.*/m')
FROM `project.dataset.table`
WHERE utm_campaign = "RR_SM_Brand_A_Additive_Clean_jun2020"
/^(?:[\s\S]*?)(Brand_A|Brand_B|Brand_C)(?:[\s\S]*?)$.*/m