C#、正则表达式、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落基地(同样你看不到逃生的东西)。然后它告诉我1美元将是"落基地",但在我的实际代码中,它不匹配。

我做错了什么?

我看过很多其他类似的帖子,根据他们的说法,我认为这应该有效。我甚至尝试了[^\x00-\x7F]作为我的转义符捕获,但它仍然不匹配。

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

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

最新更新