using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"^(?P<str_lit>(?P<begin_quote>(?P<single_quote>')|\"")(?:(?(single_quote)\""|')|\\[\""']|\\[^\r\n ]|[^\""'\\\r\n])*?(?P=begin_quote))$";
string input = @"""double-quoted string""
'single-quoted string'
""unexpected EOL
'unexpected EOL
""unclosed backslash escape: \""
""properly doubled backslash: \\""
""escaped ' quotes and backslash escapes \' are \"" \n allowed""
""\t\tindented code\r\n""
""invalid escape \%""
""'""
""space is not a valid backslash escape: \ ""
""or newline either: \
""hopefully there aren't any edge-cases I didn't think of""
""""oh, and single-line docstrings count as three string literals, so you would have to repeat the same expression multiple times to match it""""
""""and multi-line docstrings won't match even if you repeat the expression multiple times";
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