我正在用正则表达式做一些实验,我不知道为什么正则表达式不匹配。
字符串行是文件中的一行。应匹配的一行是
["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}应该是一个有两位数的数字,其余的是相同的。但是正则表达式并不匹配。
出了什么问题?
答案 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);
如果你不想使用逐字字符串,你需要使用两个反斜杠来转义每个正则表达式元字符(第一个转义第二个)。