【问题标题】:Regex line after string字符串后的正则表达式行
【发布时间】:2015-08-22 01:17:31
【问题描述】:

我想从 youtube 视频链接中提取观看次数。

string youtubelink = richTextBox1.Text;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(youtubelink);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string data = reader.ReadToEnd();
Regex views = new Regex("watch-view-count\">" + @"\d+\s\d+");
Match v = views.Match(data);
richTextBox1.Text = Regex.Replace(v.ToString(),"watch-view-count\">", "");

但我的问题是 "@"\d+\s\d+");"例如,当视频有更多观看次数时,他们将不会显示,因为此代码仅显示 xxx xxx 次观看(同样的工作方式相反,如果我再添加一行并且视频的观看次数将减少,他们也不会显示) 正则表达式有什么技巧可以防止这种情况发生吗?谢谢。

【问题讨论】:

  • 我强烈建议不要使用屏幕抓取,而是使用use the YouTube API
  • +1 对 Uwe 的建议,无论如何,我会避免使用 HTML 的正则表达式并使用 HTML 解析器,例如 HTML Agility Pack

标签: c# regex


【解决方案1】:

怎么样

(\d+\s)*\d+

在你的代码中是

Regex views = new Regex("watch-view-count\">" + @"(\d+\s)*\d+");

将表达式\d+\s 封装到括号中可以指定该组可以在一行中出现多少次。可以肯定的是,视频至少有 \d+ 观看次数。

【讨论】:

    猜你喜欢
    • 2019-11-09
    • 1970-01-01
    • 2019-08-06
    • 1970-01-01
    • 1970-01-01
    • 2016-02-09
    • 2020-05-05
    相关资源
    最近更新 更多