Regex 如果字符串包含列表中的单词,则从字符串中提取单词

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中运行相应的查询时,我收到一个错误:这个查询没有返回任何结果 将第一个和最后一个括号替换为(?:)集合,而

如果字符串包含列表中的单词,我将尝试从字符串中提取单词

例如,有字符串“RR_SM_Brand_A_Additive_Clean_jun2020”, 名单上有品牌A、品牌B、品牌C等

我使用以下正则表达式:

/^([\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