Regex SQL Server Management Studio/Visual Studio正则表达式错误?
我经常在SQLServerManagementStudio 10.5编辑器中使用正则表达式搜索和替换来在使用前清理自动生成的SQL。下面描述的相同行为也发生在VisualStudio2010编辑器中 我有以下sql insert语句需要清理:Regex SQL Server Management Studio/Visual Studio正则表达式错误?,regex,visual-studio,ssms,Regex,Visual Studio,Ssms,我经常在SQLServerManagementStudio 10.5编辑器中使用正则表达式搜索和替换来在使用前清理自动生成的SQL。下面描述的相同行为也发生在VisualStudio2010编辑器中 我有以下sql insert语句需要清理: INSERT INTO [lttadev].[dbo].[GameInst] ([GameInstId] ,[GameSetId] ,[UserInfoId] ,[Ga
INSERT INTO [lttadev].[dbo].[GameInst]
([GameInstId]
,[GameSetId]
,[UserInfoId]
,[GameLevelId]
,[CreatedOn]
,[CreatedBy]
,[ModifiedOn]
,[ModifiedBy])
VALUES
(<GameInstId, uniqueidentifier,>
,<GameSetId, uniqueidentifier,>
,<UserInfoId, uniqueidentifier,>
,<GameLevelId, uniqueidentifier,>
,<CreatedOn, datetime,>
,<CreatedBy, uniqueidentifier,>
,<ModifiedOn, datetime,>
,<ModifiedBy, uniqueidentifier,>)
插入[lttadev].[dbo].[GameInst]
([GameInstId]
,[GameSetId]
,[UserInfoId]
,[GameLevelId]
,[CreatedOn]
,[CreatedBy]
,[ModifiedOn]
,[ModifiedBy])
价值观
(
,
,
,
,
,
,
,)
要更改values子句,我有以下两个正则表达式:
,[^,]*,\>
\<
,[^,]*,\>
\<
两者都被一个空字符串替换以删除不需要的文本。第一个去掉逗号、类型、第二个逗号和最后一个尖括号。第二个去掉了初始的角括号。两种方法都能如期工作
但是,如果我将正则表达式加入到单个表达式中以加快文本处理,它们会选择不同的文本:
(,[^,]*,\>|\<)
(,[^,]*,\>\尝试将第一个备选方案用括号括起来:
(,[^,]*,\>)|\<
但在该页面的其他地方有各种例子,其中|
与括号一起使用,而括号在另一个正则表达式引擎中是不必要的(尽管无害的):
(("[^"]*")|('[^']*'))
(- [a-z][1-3])|(- [0-9][a-z])
(([0-9]+.[0-9]*)|([0-9]*.[0-9]+)|([0-9]+))
因此,我猜测|
可能具有相当高的优先级-低于海绵式
或泥式
的简单字符串内串联,但高于更复杂的串联,如“[^”]*”
。(当然,最后一句话是由一个人写的,他没有注意到
有一个特殊的含义,所以这可能是有道理的。)
因为我没有Visual Studio,所以无法进一步测试。您认为您在这里使用的正则表达式方言是什么?VS和SSM有自己的特殊方言:我的印象是两者都使用相同的方言。工作表达式在Visual Studio和SSM中都有效。非工作表达式在Visual Studio和SSM中都失败Studio和SSMS。我指的是与.NET不同的方言。Re:“但是第二个表达式得到了第一个尖括号和前面的逗号”:你怎么知道是第二个表达式做到了这一点?顺便问一下,你试过(,[^,]*,\>)|\
(("[^"]*")|('[^']*'))
(- [a-z][1-3])|(- [0-9][a-z])
(([0-9]+.[0-9]*)|([0-9]*.[0-9]+)|([0-9]+))