为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
一只名叫tom的猫 2023-09-24 10:54:52
我试图使用正则表达式从某些文本中获取匹配项,但代码无法产生任何结果。正文包含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.'有解决办法吗?
查看完整描述

1 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

您可能会array使用

var array = Regex.Matches(text, "\"https://www\\.localhost\\.com/en/account\\?dwcont=([^\"]+)")
    .Cast<Match>()
    .Select(x => x.Groups[1].Value);

然后,使用获取第一个匹配项

text2 = array.FirstOrDefault();

请注意,您需要在正则表达式模式中转义文字.和符号,并且由于您使用的是常规字符串文字,因此您应该使用双反斜杠来创建正则表达式转义。?

您收到Index was outside the bounds of the array错误是因为您的正则表达式无法提取任何匹配项并array[0]尝试访问null值。


查看完整回答
反对 回复 2023-09-24
  • 1 回答
  • 0 关注
  • 91 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信