正则表达式从存储过程中删除DDL语言

时间:2014-04-28 13:43:24

标签: regex tsql stored-procedures

我有大量存储过程,我已将其编写到单个文件中。我现在需要删除这个大文件中的所有DDL语言,这样我就可以将该文件作为一个脚本运行。

我的想法是使用正则表达式来匹配DDL代码并将其删除。所以我想匹配和文本...

GO
/****** Object:  StoredProcedure [dbo].[XXXXXX]    Script Date: 4/25/2014 2:06:03 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE Procedure [dbo].[XXXXXX]  
    (@Client int = Null)

AS
BEGIN

和replace是一个空字符串。我将如何匹配文本的开头和结尾,然后删除其间的所有内容?此外,是否可以有几个不同的“匹配”,以便可以删除不同的部分?我打算使用支持常规表达的高级文本编辑器,如Notepad ++,EditPad或UltraEdit来进行实际编辑。

2 个答案:

答案 0 :(得分:1)

可能是正则表达式     (?&LT = BEGIN)| *(= EN \ d?)

(\ n)。

这应该为每个程序正文返回一个匹配

答案 1 :(得分:0)

这个正则表达似乎有用。

\bGO(.*?)AS\b

基本上它与所有DDL代码匹配,但

除外

BEGINENDUSE语句

然后我用空字符串替换了所有匹配的文本。关键是使用?告诉正则表达式引擎“懒惰”而不是“贪婪”的匹配。这允许匹配在遇到AS关键字后停止。

RegexBuddy对我来说是一个很大的帮助。