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

如何用正则匹配行数≥1000的SQL存储过程定义(排除内部关键词干扰)

解决匹配至少1000行SQL存储过程的正则问题

你的核心问题在于原正则会贪婪地包含中间出现的CREATE PROCEDURE关键词,导致匹配范围超出目标存储过程。下面是修正后的方案,能精准匹配满足行数要求的存储过程:

修正后的正则表达式

(?si)CREATE PROCEDURE(?:(?!CREATE PROCEDURE).*\n){999,}(?=CREATE PROCEDURE|\Z)

详细解释

  • (?si):启用两个关键模式:
    • s(DOTALL):让.匹配包括换行符在内的所有字符
    • i(CASE_INSENSITIVE):忽略大小写,兼容create procedure这类小写写法
  • CREATE PROCEDURE:精准匹配存储过程的起始标识
  • (?:(?!CREATE PROCEDURE).*\n){999,}:非捕获组,重复至少999次:
    • (?!CREATE PROCEDURE):负向前瞻,确保当前行开头不是另一个存储过程的起始,完美避免误包含中间的存储过程
    • .*\n:匹配当前整行内容(包括换行符)
    • 用999是因为起始行已经算第1行,加上999行就达到至少1000行的要求
  • (?=CREATE PROCEDURE|\Z):正向前瞻,匹配结束边界:
    • CREATE PROCEDURE:下一个存储过程的起始
    • \Z:文件末尾(EOF)

使用说明

这个正则在支持PCRE语法的工具/环境中都能正常工作(比如常见的文本编辑器、正则测试工具)。它会精准捕获所有行数≥1000的存储过程,完全不会把中间的其他存储过程包含进来。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:29:41