我试图对我的源代码(C ++)进行预处理,并且我试图找到与该模式匹配的字符串:
MACRO(L"TextW")
OR
MACRO("TestA")
但是我的正则表达式在使用时会返回不同的东西(与上面的例子相反):
MACRO(L"")
OR
MACRO("")
预处理正在c#中完成 正在使用的正则表达式是
Regex.Match(text,"MACRO\\(*(L?)(\"?)(.*?[^\\\\])(\"?)*\\)");
但是当处理宏的空形式时,正则表达式返回Grouping [3] =" \""和分组[4] =""而不是返回:分组[3] =""和分组[4] =" \""
提前致谢。
答案 0 :(得分:1)
您可以使用负面反馈来处理这样的输入(MACRO(L"Text A\" ")
)。
此外,您使用?
符号在正则表达式中几乎所有内容都是可选的。在这里,我只是让L
是可选的。
试试这个:
string text = "MACRO(L\"TestA \\\"B\")";
Match match = Regex.Match(text, "MACRO\\(L?\"(.*?)(?<!\\\\)\"\\)");
if (match.Success)
{
Console.WriteLine(match.Groups[0].Value);
Console.WriteLine(match.Groups[1].Value);
}