使用正则表达式从网站抓取链接时出错

我试图使用正则表达式从某些文本中获取匹配项,但代码无法产生任何结果。


正文包含


action="https://www.localhost.com/en/account?dwcont=C338711466"

我的代码是


HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("https://www.localhost.com/en/account");

httpWebRequest.Method = "GET";

httpWebRequest.CookieContainer = this.cookieJar;

string text2;

using (StreamReader streamReader = new StreamReader(httpWebRequest.GetResponse().GetResponseStream()))

{

   string text = streamReader.ReadToEnd().Trim().ToString();

   string[] array = (from Match match in Regex.Matches(text, "\"https://www.localhost.com/en/account?dwcont=(.+?)\"")

                     select match.Groups[1].Value).ToArray<string>();

   text2 = array[0];

}


MessageBox.Show(text2);

我在数组中收到错误:


System.IndexOutOfRangeException: 'Index was outside the bounds of the array.'

有解决办法吗?


一只名叫tom的猫
浏览 92回答 1
1回答

慕无忌1623718

您可能会array使用var&nbsp;array&nbsp;=&nbsp;Regex.Matches(text,&nbsp;"\"https://www\\.localhost\\.com/en/account\\?dwcont=([^\"]+)") &nbsp;&nbsp;&nbsp;&nbsp;.Cast<Match>() &nbsp;&nbsp;&nbsp;&nbsp;.Select(x&nbsp;=>&nbsp;x.Groups[1].Value);然后,使用获取第一个匹配项text2&nbsp;=&nbsp;array.FirstOrDefault();请注意,您需要在正则表达式模式中转义文字.和符号,并且由于您使用的是常规字符串文字,因此您应该使用双反斜杠来创建正则表达式转义。?您收到Index was outside the bounds of the array错误是因为您的正则表达式无法提取任何匹配项并array[0]尝试访问null值。
打开App,查看更多内容
随时随地看视频慕课网APP