Ich versuche, eine Regex zum Extrahieren von GRANT-Anweisung zu erstellen. IchRegex zum Extrahieren von GRANT-Anweisungen aus Zeichenfolge
Beispiel Zeichenfolge ist unten angegeben:
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 ".*(grant\s+.*?to\s+\[?[A-Za-z_]+\]?)\s.*"
Regex bin mit der GRANT-Anweisung zu extrahieren, aber es gibt mir nur das erste Spiel.
C# -Code ich verwende für dieses
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);
Wie ich alle GRANT-Anweisungen zu erhalten.
, die tatsächlich TO User_grp hängt nicht von Ihrem Muster ab, sondern von der von Ihnen verwendeten Regex-Engine. Fügen Sie den Code hinzu, mit dem Sie die Regex ausführen. Vielen Dank! – cxw
Was sind die Grenzen für das Spiel? Probieren Sie 'var res = Regex.Matches (Eingabe, @" (? Mis)^(grant \ s +. *? Bis \ s + \ [? [A-Za-z _] +]?) ")'. –