C# 如何从字符串中获取两个标记之间的值

C# 如何从字符串中获取两个标记之间的值,c#,html,parsing,C#,Html,Parsing,我试图从网页中获取数据。我已将网页下载到字符串变量中 我想知道如何在两个标记之间获取值。我已经包含了下载字符串的一个片段,我想要的值是895 M4中的平均租金要求: £;897 pcm M4中出租的物业数量: 一个代码示例会很好。私有无效按钮1\u单击(对象发送者,事件参数e) private void button1_Click(object sender, EventArgs e) { string input = @"<strong class=""price

我试图从网页中获取数据。我已将网页下载到字符串变量中

我想知道如何在两个标记之间获取值。我已经包含了下载字符串的一个片段,我想要的值是
895


M4中的平均租金要求:
£;897 pcm
M4中出租的物业数量:
一个代码示例会很好。

私有无效按钮1\u单击(对象发送者,事件参数e)
private void button1_Click(object sender, EventArgs e)
{
    string input = @"<strong class=""price big"">&pound;895 pcm</strong><br>";

    MatchCollection mc = Regex.Matches(input, ">&pound;\d{0-5} pcm");

    foreach (Match m in mc)
    {
        Add To List  Convert.ToInt32(m);
    } 
}
{ 字符串输入=@“£;895 pcm
”; MatchCollection mc=Regex.Matches(输入“>£;\d{0-5}pcm”); foreach(在mc中匹配m) { 添加到列表转换为32(m); } }
这实际上很容易使用解析HTML

第一步是添加对
HtmlAgilityPack
库的引用。然后可以开始解析HTML:

const string Html = "<strong>Avg. price:</strong> <strong class=\"price big\">&pound;895 pcm</strong><br><strong>this is the price of zed headphones</strong>";

var doc = new HtmlDocument();
doc.LoadHtml(Html);
现在,我们的最后一步是从节点的
InnerText
属性中检索实际数字。最好的方法可能是使用正则表达式,如果我们假设所需的数字是节点内部文本中的唯一数字,那么正则表达式可能非常简单:

var priceMatch = Regex.Match(priceNode.InnerText, @"(\d+)");

Console.WriteLine(priceMatch); // Will output 895

假设您的字符串值被称为“source”,并且所有提取都被格式化为示例

var value = Regex.Replace(source, @"\D", string.Empty);

这个字符串总是一样的吗?它总是以英镑开始吗;并且是3个字符?搜索:“HTML敏捷包”;meh,我将为您节省一些时间:,是的,值周围的标记永远不会仅更改值,但值可以是任意数量的字符。。我可以说1-99999“HTML敏捷包”看起来不错,但没有文档,只有一个例子是没有用的,尽管它缺乏文档,但使用起来非常简单。如果你遇到问题,你可以随时询问,当然我们在这里。这不会起作用,因为值总是不同的。。。将带有正则表达式的HTML召唤受污染的灵魂进入活人的领域并不总是895@这是我回答的重点。。。还有Fedor,我知道它很难看,但是如果它是一个维护的个人程序,并且你记住它很容易被破坏,那么这样做没有错。我现在明白了:D但我得到了这个错误“错误1无法识别的转义序列C:\Development\Lets Rent\Lets Rent\Account\Default TestingPage.aspx.cs 79 57 Lets Rent”表达式中的d被下划线为hanks,但它从未起作用:错误“Lets Rent.dll中发生'System.NullReferenceException'类型的异常,但未在用户代码中处理”其他信息:对象引用未设置为对象的实例。“它一定不能找到node@ChrisDevine那么你的HTML实际上必须与你发布的内容不同。我的示例使用的正是您发布的HTML。你能再检查一下HTML是否真的是一样的吗?有一整页的HTML只是一个小片段。。。它是否仍然有效。我会编辑成真正的html现在我也尝试了你复制的确切代码,它只是给了我一个超过符号作为输出我很抱歉你的示例代码没有工作,但它没有工作时,html页面从互联网上抓取
var value = Regex.Replace(source, @"\D", string.Empty);