正则表达式找不到与模式匹配的项

Regex doesn't find a match with a pattern

在 C# 项目中,Regex 对我来说表现得很奇怪。

我有这个方法:

string RegTest()
    {
        string HTML = "<input type=\"hidden\" name=\"authenticity_token\" value=\"d27956cca6b75db4d8dd502d0569dd246455131c\">";
        Regex AuthRegex = new Regex(@"name=""authenticity_token"" value=""([A-Ba-b0-9/-]+)""");
        string Auth = AuthRegex.Match(HTML).Value;
        return Auth;
    }

由于我完全不明白的原因,正则表达式找不到与此模式的任何匹配项。它只是 returns "".

我该如何解决这个问题?

问题是:

[A-Ba-b0-9/-]+

字符范围 (x-y) 基本上做的是获取介于两者之间的一组所有字符。换句话说,a-b = ab 之间的所有字母,也就是 ab 之间的所有字母。然而,

d27956cca6b75db4d8dd502d0569dd246455131c

看起来像一个十六进制。因此,您应该使用

[A-Fa-f0-9-]+

相反。