如何用正则表达式匹配指定TABLE类文件并排除特定文件?
适配Snowflake REGEX_SUBSTR的正则表达式方案
直接匹配目标文件的正则(推荐)
使用以下正则表达式可精确匹配TABLE.csv.gz及所有以TABLE_SP开头的.csv.gz文件,同时自动排除TABLE_REMARK.csv.gz:
^(TABLE\.csv\.gz|TABLE_SP.*\.csv\.gz)$
正则规则说明:
^:锚定文件名起始位置,避免部分匹配TABLE\.csv\.gz:精确匹配TABLE.csv.gz(正则中.需转义,否则会匹配任意字符)|:逻辑或操作符,匹配左右任意一种模式TABLE_SP.*\.csv\.gz:匹配所有以TABLE_SP开头、以.csv.gz结尾的文件,.*表示中间可包含任意字符(包括空字符)$:锚定文件名结束位置,确保整个文件名完全符合规则
Snowflake SQL使用示例
在REGEX_SUBSTR中使用时,需遵循SQL字符串转义规则(\需写为\\):
SELECT file_name, REGEX_SUBSTR(file_name, '^(TABLE\\.csv\\.gz|TABLE_SP.*\\.csv\\.gz)$') AS matched_file FROM your_file_table;
更严谨的排除版正则(可选)
若需明确强制排除TABLE_REMARK.csv.gz(防止后续新增类似命名文件干扰),可使用带负向预查的版本:
^(?!TABLE_REMARK\.csv\.gz$)(TABLE\.csv\.gz|TABLE_SP.*\.csv\.gz)$
额外说明:
(?!TABLE_REMARK\.csv\.gz$):负向预查,确保当前位置后不是完整的TABLE_REMARK.csv.gz字符串,从逻辑上强制排除该文件- 其余规则与推荐版本一致,保持对目标文件的匹配逻辑
内容的提问来源于stack exchange,提问作者Dhananjay Singh
相关产品推荐
相关产品推荐

