c#正则表达式查找MACRO(" texttw& quot;)或MACRO(" textta& qu

本文关键字:quot MACRO qu textta 正则表达式 查找 texttw | 更新日期: 2023-09-27 17:50:22

我正试图对我的源代码(c++)做预处理,我正试图找到匹配模式的字符串:

MACRO(L"TextW")

MACRO("TestA")

但是我的regex返回一些不同的东西,当被喂食(与上面的例子相反):

MACRO(L"")

MACRO("")

预处理是用c#完成的使用的正则表达式是

Regex.Match(text,"MACRO''(*(L?)('"?)(.*?[^''''])('"?)*'')");

但是当处理宏的空形式时,regex返回Grouping[3] = "'"和Grouping[4] = "而不是返回:Grouping[3] = "和Grouping[4] = "'"

c#正则表达式查找MACRO(" texttw& quot;)或MACRO(" textta& qu

您可以使用负向后看处理这样的输入(MACRO(L"Text A'" "))。

此外,您使用?符号使regex中的几乎所有内容都是可选的。这里我只是让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);
}