这个正则表达式出了什么问题

时间:2017-01-14 03:28:26

标签: c# regex

我正在用正则表达式做一些实验,我不知道为什么正则表达式不匹配。

字符串行是文件中的一行。应匹配的一行是

["boxusers:settings/user[boxuser11]/name"] = "username", 

boxuser的数量和值可能不同,所以我试图找到一个正则表达式

我的代码是:

string user;
string patternUser = "[\"boxusers:settings/user[boxuser\\d{2,}]/name\"] = \"";
if (Regex.Match(line,patternUser).Success)
   user = Regex.Replace(Regex.Replace(line, patternUser, String.Empty), ",*", String.Empty);

所以我认为\ d {2,0}应该是一个有两位数的数字,其余的是相同的。但是正则表达式并不匹配。

出了什么问题?

1 个答案:

答案 0 :(得分:2)

方括号在正则表达式中具有特殊意义。你需要用反斜杠来逃避它们。

var line = @"[""boxusers:settings/user[boxuser11]/name""] = ""username"", ";
string patternUser = @"\[""boxusers:settings/user\[boxuser\d{2,}\]/name""\] = """;
Console.WriteLine(Regex.Match(line, patternUser).Success);

如果你不想使用逐字字符串,你需要使用两个反斜杠来转义每个正则表达式元字符(第一个转义第二个)。