正则表达式匹配不工作

本文关键字:工作 正则表达式 | 更新日期: 2023-09-27 18:09:01

我正在做一个非常简单的任务:解析一个网站,寻找

<tbody>this is what important for me</tbody>`

和返回,但我就是不能使它工作。当我这样做的时候:

Regex.Matches(webData, @"<tbody>(.*?)</tbody>")

它给我没有结果。然而,这给了我两个结果:

Regex.Matches(webData, @"tbody")

但是这个

Regex.Matches(webData, @"tbody(.*?)tbody")

没有给我任何东西(所以我认为转义不是问题)。我在这个页面上找到了关于(.*?)的信息,我认为它会很容易使用,但我就是不能解决它。

正则表达式匹配不工作

不建议使用regex解析html

regex用于有规律出现的模式。html的格式不规则(xhtml除外)。例如,html文件是有效的,即使你的没有closing tag !

使用html解析器,如htmllagilitypack

您可以使用此代码通过HtmlAgilityPack检索所有body的内容

HtmlDocument doc = new HtmlDocument();
doc.Load(yourStream);
var tbodyList= doc.DocumentNode.SelectNodes("//tBody")
                  .Select(p => p.InnerText)
                  .ToList();

tbodyList包含了整个文档中所有的tbody值!

使用真正的html解析器如htmllagilitypack来解析网页

string html = "<tbody>this is what important for me</tbody>";
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
var text = doc.DocumentNode.Descendants("tbody").First().InnerText;

我也推荐htmllagilitypack。

也可以使用XPath (http://www.w3schools.com/xpath/)

在I4V示例中:

var text = doc.DocumentNode.SelectSingleNode("//tbody").InnerText;