Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用正则表达式查找reCaptcha ID_C#_Regex - Fatal编程技术网

C# 使用正则表达式查找reCaptcha ID

C# 使用正则表达式查找reCaptcha ID,c#,regex,C#,Regex,好的,我一直在尝试从我正在下载的web源中提取reCaptcha ID,我打算用Regex做这件事,用它包含的内容提取行,然后从那里提取ID(如果有意义的话) 我现在是这样做的: WebClient W = new WebClient(); W.Encoding = System.Text.Encoding.UTF8; string pattern = "recaptcha_challenge_field"; string Sour

好的,我一直在尝试从我正在下载的web源中提取reCaptcha ID,我打算用Regex做这件事,用它包含的内容提取行,然后从那里提取ID(如果有意义的话)

我现在是这样做的:

        WebClient W = new WebClient();
        W.Encoding = System.Text.Encoding.UTF8;
        string pattern = "recaptcha_challenge_field";
        string SourceCode = W.DownloadString("http://www.xtremetop100.com/in.php?COLLCC=4025385947&COLLCC=1765882190&site=1132330052");

        foreach (string Match in Regex.Split(SourceCode, Environment.NewLine))
        {
            if (Regex.IsMatch(Match, pattern, RegexOptions.IgnoreCase))
            {
                MessageBox.Show(Match);
            }
        }

问题是,它只显示了除了带有“模式”的行之外的整个页面源代码。我试着改变编码类型,因为我认为它会以一个大句子的形式返回源代码,但我想这不是答案。有人来帮忙吗?谢谢你。

首先,你的名字很糟糕! 局部变量的名称应该以小写字母开头,所以“sourceCode”、“match”。大号字母表示“匹配”是类而不是变量

第二,为什么只使用从正则表达式类拆分字符串来拆分新行?使用内置字符串方法:

foreach (string line in sourceCode.Split(new string[] { Environment.NewLine }, StringSplitOptions.None))
现在。。。如果您注意到,我更改了变量的名称,那么现在您的代码如下

if (Regex.IsMatch(line, pattern, RegexOptions.IgnoreCase))
{
    MessageBox.Show(line);
}
你们会看到很明显,代码做了你们想做的:若线条和模式匹配,那个么就显示整条线条

另一件事:你的正则表达式模式是什么?这更像是比较来检查是否匹配。尝试阅读更多关于regex的内容。您的模式应该更像
recaptcha\u challenge\u field=([0-9]+)
。我不太清楚,因为你发布的链接只包含“刷新”元标记


并尝试使用方法代替Regex.IsMatch。它为您提供了更多信息,不仅是字符串是否匹配您的模式,还提供了您捕获的组。

但它仍然为我返回了整个源代码。你呢?对我来说没有回报,因为我不知道你在找什么。页面为空,或充满html,但字段没有任何值。您是否将代码更改为使用
Regex.Match
?你是否改变了模式,使用了一些捕获组?如果是这样,则不应获得孔线。仅供参考:如果您创建了正确的图案,您将不必在第一个位置分割线。但首先尝试单行,这更容易学习如何生成好的正则表达式,只需尝试将模式设置为“