理解为什么Regex不匹配

时间:2013-06-07 23:23:23

标签: c# regex

我得到了一个在C#中不匹配的正则表达式。

string auth = @"oauth_consumer_key=""0685bd9184jfhq22""";
string pattern = "oauth_consumer_key=\"(\\d+)%";
MatchCollection matches = Regex.Matches(auth, pattern);

我总是得到0场比赛。我试图从auth字符串中提取0685bd9184jfhq22字符串。

3 个答案:

答案 0 :(得分:1)

那里有\d,只有数字匹配,而且你的价值中有字母。

密钥本身的表达式可能是[0-9a-z]而不是\d

你错过了正则表达式中的结束语 - 你的引号应该是百分号。

答案 1 :(得分:1)

尝试:

"oauth_consumer_key=\"(.+)\""

得到结果:

matches[0].Groups[1].Value

答案 2 :(得分:1)

如果您想匹配整个auth字符串,请尝试以下操作:

string auth = @"oauth_consumer_key=""0685bd9184jfhq22""";
string pattern = "oauth_consumer_key=\"(.*)\"";
var match = Regex.Match(auth, pattern);
Console.WriteLine(match.Value);

如果您想提取0685bd9184jfhq22值,只需将pattern替换为:

string pattern = "(?<=oauth_consumer_key=\")(.*)(?=\")";