Snowflake中REGEXP_LIKE使用\b单词边界返回False问题咨询
问题解决:Snowflake中REGEXP_LIKE使用\b单词边界返回False的原因
问题出在SQL字符串的转义规则上。在Snowflake的SQL语法中,反斜杠是转义字符,\b会被解析为退格字符(ASCII 8),而非正则表达式中的单词边界断言。你原语句里的\\b经过SQL解析后,实际传递给正则引擎的是单个\b(退格字符),自然无法匹配目标单词的边界。
正确写法
要在Snowflake的正则表达式中使用单词边界\b,需要在SQL字符串中用四个反斜杠来表示,这样SQL会将其解析为单个\b传递给正则引擎:
select regexp_like(lower('A path down to the street'), '\\\\bpath\\\\b');
执行该语句会返回TRUE,符合预期。
替代方案
Snowflake基于ICU正则引擎,也支持用\y表示单词边界(行为与\b一致),同样需要注意转义:
select regexp_like(lower('A path down to the street'), '\\\\ypath\\\\y');
内容的提问来源于stack exchange,提问作者Graleon3
相关产品推荐
相关产品推荐

