2016-01-24 96 views
0

我想下载一个html源文件,然后搜索用户名和其他信息,然后在我的程序中显示它。 我对编程相当陌生,但对于像这样的东西(正则表达式)来说,这是一个直接的noob,所以我希望你能解释给我。使用正则表达式提取字符串

我用正则表达式从HTML源代码提取K/d比,我用这个代码之前:

string pattern = @"<span class=""kdratio"">\d+\.\d+"; 

但我不知道如何开始这一个...

这是源,它包含的信息行:

<section class="profile-header" profile="true" motto="user's motto" user="User" figure="hr-3322-45.hd-190-1.ch-3342-64-66.lg-285-64.sh-3068-82-66.ea-1404-64"> 

我只需要部分user="User"figure="x",我不能尝试任何事情,因为我重新盟友不知道如何开始,因为html行看起来与我的经历有很大的不同。

+0

'用户= “([^” ] *?)“figure =”([^“] *?)”'正则表达式可以工作(http://i.stack.imgur.com/i2Nkt.png)。但最好使用一个html解析器来提取这个'section'元素的属性'user'和'figure'的值,'class =“profile-header”'似乎是它的一个很好的唯一标识符。看看https://stackoverflow.com/questions/846994/how-to-use-html-agility-pack去了解如何使用HTMLAgility Pack来解析html,找到节点('

')和从中提取属性。 –

回答

0

通常用于解析HTML,正则表达式不是一个好的选择! HTML往往非常复杂,编写单一的正则表达式很难匹配所有的东西!请使用像Html Agility Pack这样的解析器。

3

正则表达式对匹配HTML不是一个好主意,除非它非常简单,单一,标记匹配。请参阅:RegEx match open tags except XHTML self-contained tags

我推荐使用HTML DOM解析库并使用XPath或CSS选择器来获取所需的信息。对于.NET,建议使用HtmlAgilityPack。对于CSS选择器,您需要Fizzler(HtmlAgilityPack的附加组件)。

在JavaScript(容易改写为C#和HtmlAgilityPack)将是这样的:

document.querySelector(
    "section[class=profile-header][profile=true][user=User]" 
).textContent 
+0

是的,这就是我所害怕的...许多人都建议HtmlAgilityPack,但对于我来说它一直是一个谜,它是如何使用它,有时间来找到它我猜。 – Remi