正则表达式替换为捕获组

时间:2012-05-03 10:45:51

标签: .net regex replace

我希望使用.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+)?
)+

我可以用什么替代正则表达式来获得预期的输出?

2 个答案:

答案 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。周末好项目,嗯? : - )

相关问题