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]作为我的逃生字符捕获它仍然不匹配。
答案 0 :(得分:1)
为什么你认为\e
是转义字符的转义序列?您需要改为使用\x1b
。
string pat12 = @"\x1b\[36m(.+)";