Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex SQL Server Management Studio/Visual Studio正则表达式错误?_Regex_Visual Studio_Ssms - Fatal编程技术网

Regex SQL Server Management Studio/Visual Studio正则表达式错误?

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

我经常在SQLServerManagementStudio 10.5编辑器中使用正则表达式搜索和替换来在使用前清理自动生成的SQL。下面描述的相同行为也发生在VisualStudio2010编辑器中

我有以下sql insert语句需要清理:

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]+))