0
私はGRANT文を抽出するための正規表現を作成しようとしています。私はgrant文を抽出するために".*(grant\s+.*?to\s+\[?[A-Za-z_]+\]?)\s.*"
正規表現を使用しています文字列から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
それだけで私に最初のマッチを与える:I
サンプル文字列は以下の通りです。
C#コード私は、すべての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);
のために使用しています。
それをUser_grpするには、コードを使用する必要がありますあなたのパターンではなく、使用している正規表現エンジンに依存します。正規表現の実行に使用するコードを追加してください。ありがとう! – cxw
マッチの境界は何ですか? 'var res = Regex.Matches(input、@"(?mis)^(\ s +。*?を\ s + \ [?[A-Za-z _] +)?) ")'にしてみてください。 –