0
我正在嘗試創建一個提取GRANT語句的正則表達式。下面我從字符串中提取GRANT語句的正則表達式
樣品字符串給出:
USE MarketWorkFlowDb
GO
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[DeleteLkpDataSp]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[DeleteLkpDataSp]
GO
CREATE PROCEDURE [dbo].[DeleteLkpDataSp]
@pType VARCHAR (50), --function/role/region
@pFieldId INT, --id which is deleted
@pRequestTypeId INT=0
AS
BEGIN
IF (@pFieldId >0)
BEGIN
IF @pType='Function'
BEGIN
UPDATE LkpCategoryTb
SET IsDeleted=1, LastUpdatedBy='Admin', LastUpdatedDate=GETDATE()
WHERE [email protected] AND RequestTypeId = @pRequestTypeId
END
ELSE IF @pType='Role'
BEGIN
UPDATE LkpRoleTb
SET IsDeleted=1, LastUpdatedBy='Admin', LastUpdatedDate=GETDATE()
WHERE [email protected] AND RequestTypeId = @pRequestTypeId
END
ELSE IF @pType='Region'
BEGIN
UPDATE LkpRegionTb
SET IsDeleted=1, LastUpdatedBy='Admin', LastUpdatedDate=GETDATE()
WHERE [email protected] AND RequestTypeId = @pRequestTypeId
-------------------------Updates Approver Manager Table--------------------------------
UPDATE RegionalPeopleTb
SET IsDeleted =1, LastUpdatedBy='Admin', LastUpdatedDate =GETDATE() where RegionId= @pFieldId and RequestTypeId= @pRequestTypeId
END
END
END
GO
GRANT EXECUTE
ON [dbo].[DeleteLkpDataSp] TO User_grp WITH GRANT OPTION
GRANT EXECUTE
ON [dbo].[DeleteLkpDataSp] TO User_grp
GO
我使用正則表達式".*(grant\s+.*?to\s+\[?[A-Za-z_]+\]?)\s.*"
提取GRANT語句,但它只是給我的第一場比賽。
我使用這個
input = File.ReadAllText(@"c:\MarketWorkFlowDB3.0\DatabaseObjects\StoredProcedures\DeleteLkpDataSp.sql");
input = Regex.Replace(input, "\r\n", @"\s");
Match match = Regex.Match(input, @".*(grant\s+.*?to\s+\[?[A-Za-z_]+\]?)\s.*",
RegexOptions.IgnoreCase);
我怎樣才能得到所有的GRANT語句C#代碼。
這實際上不依賴於你的模式,而是依賴於你正在使用的正則表達式引擎。請添加您用來運行正則表達式的代碼。謝謝! – cxw
比賽的界限是什麼?嘗試'var res = Regex.Matches(input,@「(?mis)^(grant \ s +。*?to \ s + \ [?[A-Za-z _] +]?)」)'。 –