using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"(?:_T\(\""[^\""]+\""\).*?|L\""[^\""]+\"".*?)?(?<!#include )(?<!_T\(|L|\\)\""(.*?)\""(?<!\\\"")";
string input = @"""This is a MBCS string""; // ""This is a MBCS string"" match
_T(""This is maybe a unicode string""); // no match
L""This is a unicode string""; // no match
""These both"" + ""should match""; // ""These both"" and ""should match"" match
""This is a \""quoted\"" string""; // ""This is a \""quoted\"" string"" match
_T(""Maybe this"") + ""is a match""; // ""is this"" match but instead would match "") + ""
do_something(_T(""This doesn't match"")) + do_something(""but this does match""); // ""but this does match"" match but isntead it matches "")) + do_something(""";
foreach (Match m in Regex.Matches(input, pattern))
{
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