正则表达式匹配不工作
本文关键字:工作 正则表达式 | 更新日期: 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;