C#,Regex,ASCII转义字符 - 不匹配

时间:2017-11-16 21:45:53

标签: c# regex ascii

string pat12 = @"\e\[36m(.+)";
line2parse = "[36mA Rocky Landing";
if (Regex.Match(line2parse,pat12).Success)
{
    Console.WriteLine("ROOM NAME: "+Regex.Match(line2parse,pat12).Groups[1].ToString().Trim());
}

注意:您无法在[我的变量“line2parse”中的[36]之前看到ESC序列,但它在那里。如果我想让它显示在Notepad ++中,我会按住ALT并在小键盘上键入“027”。然后它在Notepad ++中显示为ESC。在C#控制台中,它显示为左箭头。具有讽刺意味的是,我可以做“ALT + 27”并且它在Notepad ++中显示左箭头(但是如果我添加0,它会显示ESC而不是箭头)

我正在进行许多Regex匹配,所以问题不在于我的Regex变量或类似的东西。尽管它在这个网站上工作,我仍然无法正确匹配:http://regexstorm.net/tester

在那个站点,这是模式:“\ e [36m(。+)”(没有引号),这是输入:[36mA Rocky Landing(再次你看不到逃脱的事情)。然后它告诉我1美元将是“落基山脉”,但在我的实际代码中,它不匹配。

我做错了什么?

我查看了其他一些类似的帖子,根据他们所说的内容,我相信这应该有效。我甚至尝试[^ \ x00- \ x7F]作为我的逃生字符捕获它仍然不匹配。

1 个答案:

答案 0 :(得分:1)

为什么你认为\e是转义字符的转义序列?您需要改为使用\x1b

string pat12 = @"\x1b\[36m(.+)";