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

如何用正则表达式精准匹配SQL/Python文件中待删除列名?

用正则实现SQL/Python文件中列名的精确匹配

以下是修改后的完整代码,替换原in语句为正则匹配,实现列名的精确查找:

import glob
import re  # 新增导入正则模块

# 读取待删除列名列表
columns_to_delete_file = 'column_fields_to_delete.txt'

with open(columns_to_delete_file) as f:
    delete_columns_list = [line.strip() for line in f if line.strip()]  # 过滤空行

# 指定要扫描的文件路径
directories = [
    '/users/xx/sql/**/*.sql',
    '/users/xx/Python/**/*.py'
]

for directory in directories:
    for file in glob.glob(directory, recursive=True):
        try:
            with open(file, 'r', encoding='utf-8') as f:
                contents = f.read()
            upper_contents = contents.upper()  # 统一转大写,避免大小写不匹配
            exception_columns = []
            
            for column_name in delete_columns_list:
                # 构建正则模式:使用单词边界确保精确匹配,转义列名中的特殊字符
                column_upper = column_name.upper()
                pattern = rf'\b{re.escape(column_upper)}\b'
                # 检查是否存在匹配
                if re.search(pattern, upper_contents):
                    exception_columns.append(column_name)
            
            if exception_columns:
                print(f"{file} 文件包含待删除列:{exception_columns}\n")
        
        except Exception as e:
            # 可选:取消注释打印错误信息,方便排查问题
            # print(f"处理文件 {file} 时出错:{str(e)}")
            pass

关键修改说明:

  1. 导入正则模块:新增import re,用于正则匹配操作。
  2. 过滤空行:读取列名列表时过滤空行,避免无效匹配。
  3. 正则模式构建:
    • 使用re.escape()转义列名中的特殊字符(如减号、点号等),防止被正则解析为语法符号。
    • \b是单词边界,确保匹配的是完整列名,不会匹配类似user_id_abc或abc_user_id的子串。
    • 统一转大写处理,避免因大小写差异导致的漏匹配(比如SQL中列名可能写为User_ID)。
  4. 匹配逻辑:用re.search()替代原in语句,只要找到一次匹配就判定该文件包含目标列,效率更高。

适配场景说明

这个正则模式可以覆盖以下常见的列名出现场景:

  • SQL语句中:SELECT id, user_id FROM table、WHERE user_id = 1、UPDATE table SET user_id = 'test'
  • Python代码中:df['user_id']、df.user_id、columns = ['id', 'user_id']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 22:13:15