我有大量存储过程,我已将其编写到单个文件中。我现在需要删除这个大文件中的所有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来进行实际编辑。
答案 0 :(得分:1)
可能是正则表达式 (?&LT = BEGIN)| *(= EN \ d?)
(\ n)。这应该为每个程序正文返回一个匹配
答案 1 :(得分:0)
这个正则表达似乎有用。
\bGO(.*?)AS\b
基本上它与所有DDL代码匹配,但
除外 BEGIN
,END
和USE
语句
然后我用空字符串替换了所有匹配的文本。关键是使用?
告诉正则表达式引擎“懒惰”而不是“贪婪”的匹配。这允许匹配在遇到AS
关键字后停止。
RegexBuddy对我来说是一个很大的帮助。