C# 阅读\“;内“内”&引用;作为字符串标记
我在编译器设计项目中使用C#正则表达式 我正在使用词法分析器,我必须根据我设置的规则标记代码 我将字符串定义为C# 阅读\“;内“内”&引用;作为字符串标记,c#,regex,C#,Regex,我在编译器设计项目中使用C#正则表达式 我正在使用词法分析器,我必须根据我设置的规则标记代码 我将字符串定义为[\”*?\“],双引号定义为[\”] 当我输入“Hi”时,它被读取为字符串标记 但是当我输入“\”时,它会生成“\”的字符串和“的双引号 我希望它被读取为字符串标记 换句话说,我想正确解析包含转义双引号的字符串。我相信您想要的模式是: "(?:[^"]|\")*" 这将匹配引号内的任何非引号字符或斜杠引号对。例如: var input = @"1 2 3 ""Hello \""Wor
[\”*?\“]
,双引号定义为[\”]
当我输入“Hi”
时,它被读取为字符串标记
但是当我输入“\”
时,它会生成“\”
的字符串和“
的双引号
我希望它被读取为字符串标记
换句话说,我想正确解析包含转义双引号的字符串。我相信您想要的模式是:
"(?:[^"]|\")*"
这将匹配引号内的任何非引号字符或斜杠引号对。例如:
var input = @"1 2 3 ""Hello \""Word\""!""";
var match = Regex.Match(input, @"""(?:[^""]|\"")*""");
Console.WriteLine(match.Value); // "Hello \"Word\"!"
请尝试打印您输入的每个字符的ASCII代码。反斜杠将产生不同的效果,具体取决于您的输入是在命令行上、通过GUI还是从文件中 您不情愿的匹配者可能将
\
本身视为一个字符,而不是“
的修饰符