using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"^(?>(?:""[^""\n]*""|[^;""\n]+)*)""?[^"";\n]*(;.*)";
string input = @"Peekaboo ; A comment starts with a semicolon and continues until the EOL
...unless the semicolon is surrounded by unescaped dquotes ""Don’t do it ; here"" ;but match me; once
Im not surrounded ""so pay attention to me"" ; ""peekaboo""
Im not surrounded ""so pay attention"" to;me"" ; ""peekaboo""
Im not surrounded ""so pay attention to me ; peekaboo
Dquote escapes a dquote so ""dont pay attention to ""me;here"" buster"" do it ; here
Don’t pay attention to """"me;here"""" but do ""it;here""
and ""dont do ""it;here"""" either ;peekaboo
but ""pay attention to ""it;here"" ;not here though
Simon said ""I like goats"" then he added ""and sheep;"" ;a good comment is ""here
Simon said ""I like goats"" then he added ""and sheep;"" dont do it here
Simon said ""I like goats;""peekaboo
Simon said ""I like goats;""peekaboo";
RegexOptions options = RegexOptions.Multiline;
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