【发布时间】:2013-06-13 13:57:26
【问题描述】:
我正在尝试编写一个正则表达式,它将一些样板 SQL 代码重新格式化为一个更简洁的版本。这是一个例子。
我有:
SELECT
[Person].[Name]
[Person].[Address],
[Sales].[TotalAmount]
我想要:
SELECT
[Name] = [Person].[Name],
[Address] = [Person].[Address],
[TotalAmount] = [Sales].[TotalAmount]
我可以写一个表达式把字段名移到赋值语句的左边,没问题。棘手的部分是正确的间距——有没有办法在替换中使用匹配的长度?另外,要使用最长匹配的长度吗?这样 "[Name]" 后跟 length("TotalAmount") - length("Name") = 7 个空格,"[Address]" 后跟 length("TotalAmount") - length("Address") = 4 个空格,等等?
我不确定这对于正则表达式是否可行,但我想我会把它扔在那里,希望有一些正则表达式大师知道如何做到这一点。
【问题讨论】:
-
什么语言/环境下的正则表达式?
-
对不起,SQL Server Management Studio,我相信它使用与 Visual Studio 相同的方言。
-
是的,您必须在工具中进行一些杂耍。单独的正则表达式无法让您做到这一点(您已经达到了正则表达式的确切限制 - 状态“计数”)。
-
这就是我开始的想法,是的......我不会编写解析器来清理我的 SQL。