You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowflake regexp_like遇换行符返回False是否为预期行为?

Snowflake regexp_like遇换行符返回False是预期行为吗?

这是Snowflake的预期行为,原因和正则表达式的默认规则直接相关:

Snowflake的regexp_like函数默认使用的正则引擎中,.元字符不会匹配换行符(\n、\r)。所以你的正则.*keyword.*只会匹配换行符之前的内容,无法覆盖换行后的keyword,最终返回False。

解决方案

除了提前用replace移除换行符,还有更贴合正则逻辑的处理方式:

  1. 使用s修饰符(单行模式/DOTALL)
    该修饰符会让.匹配所有字符,包括换行符:

    select regexp_like('looking for a 
    keyword', '.*keyword.*', 'is')
    -> True
    

    这里的'is'组合了i(忽略大小写)和s(单行模式)两个修饰符。

  2. 用[\s\S]*替代.*
    [\s\S]表示匹配所有空白字符和非空白字符(自然包含换行),可以绕过默认的.限制:

    select regexp_like('looking for a 
    keyword', '[\s\S]*keyword.*', 'i')
    -> True
    

和ilike的差异说明

ilike是通配符匹配逻辑,%通配符默认会匹配任意字符(包括换行符),所以不会出现类似问题,这是两种匹配机制的本质区别。

针对你的数据场景

由于你的数据来自Beautiful Soup解析的网页,保留了\n和\r,可以根据实际需求选择:要么用上述正则方法兼容换行,要么提前用replace(col, '\n', '')/replace(col, '\r', '')清理换行符。

内容的提问来源于stack exchange,提问作者n3rd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 02:45:31