我希望使用.NET正则表达式重构代码。目的是拆分声明和赋值(为了与SQL 2005向后兼容)。
示例输入:
DECLARE @clientCode char(10), @city nvarchar(100) = '', @country char(2) = 'US',
@clientId int
期望的输出:
DECLARE @clientCode char(10), @city nvarchar(100), @country char(2),
@clientId int
SELECT @city = '', @country = 'us'
这是我到目前为止匹配输入的内容:
DECLARE\s+
(
,?
(@\w+\s+)
(\(.+\))?
(\=\s+\w+)?
)+
我可以用什么替代正则表达式来获得预期的输出?
答案 0 :(得分:1)
即使你使用RegEx
,这也是一个维护噩梦。
我建议你在代码中写出一些评论很好的字符串操作。
答案 1 :(得分:1)
好吧,只是为了它的乐趣,如果您碰巧有SQL Server 2012 feature pack,您可以使用Microsoft.SqlServer.Management.SqlParser.Parser来解析现有的SQL 20xx代码并生成等效的2005代码。 You might even do so with PowerShell。周末好项目,嗯? : - )