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

如何编写正则仅匹配成对单/双引号内的@格式SQL变量

解决方案

修正后的正则表达式

你原来的正则仅能匹配成对引号,只需在引号内容规则中加入@变量的匹配逻辑即可,支持跨行场景的正则如下:

(["'])[^"']*?@\w+.*?\1
  • 规则说明:匹配成对的单/双引号,且引号内部至少存在1个@开头后跟字母/数字/下划线的变量(即你提到的@varname格式)
  • 如果需要兼容SQL中常见的转义引号场景(比如''代表单引号本身),可以调整为如下规则:
(["'])(?:[^"'\\]|\\.|'')*?@\w+(?:[^"'\\]|\\.|'')*?\1

不同系统下批量获取符合条件文件名的方法

Linux / macOS 环境(使用grep)

执行以下命令即可递归扫描指定目录下所有.sql文件,直接输出符合条件的文件路径:

grep -rzoPl '(["'\''])[^"'\'']*?@\w+.*?\1' --include="*.sql" /path/to/your/sql/dir

参数说明:

  • -r:递归扫描目标目录
  • -z:将文件内容按NULL符分隔,支持跨行匹配
  • -P:启用Perl兼容正则语法
  • -l:仅输出匹配成功的文件名,不输出具体匹配内容

Windows 环境(使用PowerShell)

执行以下PowerShell脚本即可:

# 替换为你的SQL文件根目录
$rootPath = "C:\path\to\your\sql\dir"
Get-ChildItem -Path $rootPath -Recurse -Filter "*.sql" | ForEach-Object {
    $content = Get-Content $_.FullName -Raw
    if ($content -match '(["''])[^"'']*?@\w+.*?\1') {
        # 输出符合条件的文件完整路径
        $_.FullName
    }
}

自定义调整说明

如果你的@varname变量名支持除字母、数字、下划线之外的特殊字符,把正则中的\w+替换为对应的字符范围即可,比如支持$符号的话改为[a-zA-Z0-9_$]+。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:09:02