如何从SQL存储过程中提取完整的EXEC查询语句?
提取T-SQL存储过程中的完整EXEC语句
我需要从T-SQL存储过程中提取所有完整的EXEC查询语句,示例存储过程如下:
USE [test] ALTER PROC [dbo].[USP_TEST] @idx int AS EXEC USP_TEST_BY_IDX @idx print("TEST") EXEC USP_TEST_CHECK
期望得到包含所有EXEC语句的数组,比如:
['EXEC USP_TEST_BY_IDX @idx', 'EXEC USP_TEST_CHECK']
目前我用以下JavaScript脚本只能提取到exec关键字,无法获取整行内容:
let str = document.getElementById("procedure").innerText; str.match(/exec/gmi);
请问该如何修改正则表达式来提取完整的EXEC语句行?
你可以修改正则表达式,匹配以EXEC(不区分大小写)开头,直到行尾的所有内容,同时忽略行首的空白字符。修改后的代码如下:
let str = document.getElementById("procedure").innerText; const execStatements = str.match(/^\s*exec\s+.+/gmi); console.log(execStatements);
正则表达式说明:
^:匹配行的开始位置\s*:匹配行首任意数量的空白字符(包括空格、制表符)exec:匹配EXEC关键字,i标志实现不区分大小写匹配\s+:匹配EXEC后面至少一个空白字符.+:匹配后续任意非换行字符,直到行尾g:全局匹配所有符合条件的行m:启用多行模式,让^和$能匹配每行的开头和结尾
执行后就能得到包含所有完整单行EXEC语句的数组,完全符合需求。
内容的提问来源于stack exchange,提问作者buzzy
相关产品推荐
相关产品推荐

