Я довольно часто использую поиск и замену регулярных выражений в редакторе SQL Server Management Studio 10.5 для очистки автоматически сгенерированного sql перед использованием.То же поведение, описанное ниже, происходит и в редакторе Visual Studio 2010.
У меня есть следующий SQL-оператор вставки, который я хотел бы очистить:
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,>)
Чтобы изменить предложение values, у меня есть два следующих регулярных выражения:
,[^,]*,\>
\<
Оба заменяются пустой строкой для удаления нежелательного текста.Первая убирает запятую, тип, вторую запятую и конечную угловую скобку.Второй снимает начальную угловую скобку.Оба работают должным образом.
Однако, если я объединю регулярные выражения в одно выражение, чтобы ускорить обработку текста, они выделят другой текст:
(,[^,]*,\>|\<)
Первое выражение выбирает ожидаемый текст.Однако второе выражение получает как первую угловую скобку, так и предыдущую запятую.Это дефект в движке регулярных выражений или я чего-то не понимаю?