【问题标题】:Regex replace with capturing groups正则表达式替换为捕获组
【发布时间】:2012-05-03 10:45:51
【问题描述】:

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

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

【问题讨论】:

    标签: .net regex replace


    【解决方案1】:

    即使您使用 RegEx 进行这项工作,这也将是一场维护噩梦。

    我建议你在代码中写出一些注释良好的字符串操作。

    【讨论】:

    • 不情愿地认为你是对的。为此使用正则表达式会让人头疼。
    【解决方案2】:

    好吧,只是为了好玩,如果您手头碰巧有SQL Server 2012 feature pack,您可能会使用Microsoft.SqlServer.Management.SqlParser.Parser 来解析您现有的SQL 20xx 代码并生成等效的2005 代码。 You might even do so with PowerShell。不错的周末项目,嗯? :-)

    【讨论】:

    • 很好的答案!感谢您将我指向 Transact-SQL Language Service 以解析 TSQL。
    猜你喜欢
    • 2014-06-19
    • 2010-11-19
    • 2010-11-19
    • 2020-09-14
    • 2020-08-24
    • 2019-01-27
    • 1970-01-01
    • 1970-01-01
    • 2019-02-22
    相关资源
    最近更新 更多