Karan Gandhi
Karan Gandhi

Reputation: 1494

Regex Match Statement

I have following statement:

(( {  dbo.Document.MimeType_ID in (select ID from MimeType where Name ='PDF')}   Or  {  dbo.WorkflowItem.CurrentStateName not like 'On_Hold%'} )  And ( {  dbo.DocumentMetaData.Field_ID=74 And  dbo.DocumentMetaData.FieldValue Not like '%test%'}   And  {  dbo.Document.FileName='karan'} ))

I want to 4 statements between {}

eg

dbo.Document.MimeType_ID in (select ID from MimeType where Name ='PDF')
dbo.WorkflowItem.CurrentStateName not like 'On_Hold%'
dbo.DocumentMetaData.Field_ID=74 And  dbo.DocumentMetaData.FieldValue Not like '%test%'
dbo.Document.FileName='karan'

Upvotes: 0

Views: 61

Answers (1)

rock321987
rock321987

Reputation: 11032

This regex will work (if there is no nested pattern)

\{\s*([^}]+)\s*\}

C# Code

string input = "(( {  dbo.Document.MimeType_ID in (select ID from MimeType where Name ='PDF')}   Or  {  dbo.WorkflowItem.CurrentStateName not like 'On_Hold%'} )  And ( {  dbo.DocumentMetaData.Field_ID=74 And  dbo.DocumentMetaData.FieldValue Not like '%test%'}   And  {  dbo.Document.FileName='karan'} ))";
string pattern = "\\{\\s*([^}]+)\\s*\\}";
Regex rgx = new Regex(pattern);

Match match = rgx.Match(input);

while (match.Success)
 {
    Console.WriteLine(match.Groups[1].Value);
    match = match.NextMatch();
 }

Ideone Demo

Upvotes: 1

Related Questions