Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 阅读\“;内“内”&引用;作为字符串标记_C#_Regex - Fatal编程技术网

C# 阅读\“;内“内”&引用;作为字符串标记

C# 阅读\“;内“内”&引用;作为字符串标记,c#,regex,C#,Regex,我在编译器设计项目中使用C#正则表达式 我正在使用词法分析器,我必须根据我设置的规则标记代码 我将字符串定义为[\”*?\“],双引号定义为[\”] 当我输入“Hi”时,它被读取为字符串标记 但是当我输入“\”时,它会生成“\”的字符串和“的双引号 我希望它被读取为字符串标记 换句话说,我想正确解析包含转义双引号的字符串。我相信您想要的模式是: "(?:[^"]|\")*" 这将匹配引号内的任何非引号字符或斜杠引号对。例如: var input = @"1 2 3 ""Hello \""Wor

我在编译器设计项目中使用C#正则表达式

我正在使用词法分析器,我必须根据我设置的规则标记代码

我将字符串定义为
[\”*?\“]
,双引号定义为
[\”]

当我输入
“Hi”
时,它被读取为字符串标记

但是当我输入
“\”
时,它会生成
“\”
的字符串和
的双引号

我希望它被读取为字符串标记


换句话说,我想正确解析包含转义双引号的字符串。

我相信您想要的模式是:

"(?:[^"]|\")*"
这将匹配引号内的任何非引号字符或斜杠引号对。例如:

var input = @"1 2 3 ""Hello \""Word\""!""";
var match = Regex.Match(input, @"""(?:[^""]|\"")*""");

Console.WriteLine(match.Value); // "Hello \"Word\"!"

请尝试打印您输入的每个字符的ASCII代码。反斜杠将产生不同的效果,具体取决于您的输入是在命令行上、通过GUI还是从文件中

您不情愿的匹配者可能将
\
本身视为一个字符,而不是
的修饰符