using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"<!ELEMENT\s+
((?'elname'\S+)\s+)
((?'rank'\d+)\s+)?
(?'tagOmit'
(?'start'[-oO])\s+
(?'end'[-oO])\s+
)?
(?'content'
(?'keyword'(ANY|EMPTY|CDATA|RDATA))|
(?'contentGrp' \(.*\)[*+?]?)
)
(?'exceptions'
(\s+\-(?'exclusion'\(.+\)))?
(\s+\+(?'inclusion'\(.+\)))?
)
\s*>";
string input = @"<!ELEMENT FTNOTE - - ((PARA | PARA-EFF-GROUP | PARA-EFF-CHOICE | TABLE | UN-LIST | NOTE | TABLE-EFF-GROUP | TABLE-EFF-CHOICE)+)
-(FTNOTE | NOTE | TABLE | GROUND-TEST | CORRECTIVE-ACTION)>
<!ELEMENT ENTRY - - (WARNING | CAUTION | NOTE | (PARA | UN-LIST | PARA-EFF-GROUP | PARA-EFF-CHOICE)*)
-(ENTRY | GRAPHIC-COLLECTION)
+(INFOMARK | FTNOTE-REF)>
<!ELEMENT COLSPEC - o EMPTY>
<!ELEMENT TGROUP - - (COLSPEC+, THEAD?, TBODY)>
<!ELEMENT TABLE - - (TITLE?, TGROUP, FTNOTE*)
-(TABLE | TABLE-NO-TITLE | GROUND-TEST | CORRECTIVE-ACTION)
+(INFOMARK | INCLUDED-SUBDOC | INCLUDED-SOURCE-DATA | EFF-NONE)>";
RegexOptions options = RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace;
foreach (Match m in Regex.Matches(input, pattern, options))
{
Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
}
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for C#, please visit: https://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex(v=vs.110).aspx