HTML <tr> 标签的正则表达式 [重复]

Posted

技术标签:

【中文标题】HTML <tr> 标签的正则表达式 [重复]【英文标题】:Regex for HTML <tr> tag [duplicate] 【发布时间】:2014-06-16 02:25:12 【问题描述】:

我有一个带有 &lt;tr&gt; 类的 html 页面,我需要捕获这些标签之间的文本。

我试过Regex

(?i)<tr[^>]*?>([^<]*)</tr> 

但它不起作用。

这是我所有的 C# 代码:

string patternPost = @"(?i)<tr[^>]*?>([^<]*)</tr>";
MatchCollection m1 = Regex.Matches(html, patternPost, RegexOptions.Multiline);
foreach (Match m in m1)
    
        MessageBox.Show(m.Groups[1].Value);
    

您可以在此处找到 HTML 页面的示例:http://pastebin.com/ewN5NZis

你可以看到 2 个块,我需要为每个块存储三个不同的列表中的三个信息:

List 1: Title1, Title2
List 2: John, Antony
List 3: 29/04/14, 28/04/14

使用我的第一个正则表达式,我想首先尝试捕获所有块并跳过无用信息,例如与 tr 不同的标签,然后我想尝试使用 3 个不同的正则表达式为每个块捕获 3 个信息。 这是正确的吗?我希望你现在能理解我。

【问题讨论】:

NOOOOOOOOOOOOOOOoooooooooooooo 为什么不使用XmlDocument 类? 根据@Jonesy 的链接,这是一个BAD IDEA 请定义不起作用。对于所有反对者来说,正则表达式比看起来更强大,read this。好的,对于即将到来的新手正则表达式审阅者来说,它可能无法维护,但是嘿,只需添加带有 x 修饰符的 cmets :) 很惊讶你是第一个用 C# 编写网络抓取工具的人......我似乎记得过去看到过类似的问题 - 也许你可以尝试搜索它:) 请注意 问题包含阅读 HTML 的大部分可能方法(包括一些关于 RegEx 和 HtmlAgilityPack 链接的理论),因此请确保在最上面的答案之前阅读它。 【参考方案1】:

编辑:在您最后的评论中,您说:&lt;tr ....&gt; &lt;tag&gt; ... &lt;/tag&gt; &lt;tag2&gt;...&lt;/tag2&gt; &lt;/tr&gt; 这是对原始问题的扩展。在这个阶段,我同意所有其他建议:您将需要一个 dom 解析器。

旧版编辑:最初您要求匹配 &lt;tr&gt; 标记的内容。规格已更改,因此此答案包含不断发展的版本。

对于普通的 &lt;tr&gt; 标签:从

中提取组 1
(?i)<tr>([^<]*)</tr>

&lt;tr with stuff&gt;

(?i)<tr[^>]*>([^<]*)</tr>

&lt;tr stuff&gt;&lt;td stuff&gt;Grab Me&lt;/td&gt;

(?i)<tr[^>]*?>\s*<td[^>]*?>(.*)</td

这是一个代码示例:

using System;
using System.Text.RegularExpressions;
class Program 
static void Main() 

string s1 = "<tr stuff><td stuff>Grab Me</td>";
var r = new Regex("(?i)<tr[^>]*?>\\s*<td[^>]*?>(.*)</td");
string capture = r.Match(s1).Groups[1].Value;
Console.WriteLine(capture);
Console.WriteLine("\nPress Any Key to Exit.");
Console.ReadKey();
 // END Main
 // END Program

输出:Grab Me

【讨论】:

不,我认为问题在于 标签中有很多其他标签,所以我的代码不起作用.. @user3579313 请参阅我刚刚添加的解决方案的第二部分。 :) 等于我在第一篇文章中的代码 :) @user3579313 请给我一个不匹配的完整标签示例。 @user3579313 请查看我刚刚为您的新规范添加的“Grab Me”正则表达式。

以上是关于HTML <tr> 标签的正则表达式 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

常用正则表达式爬取网页信息及HTML分析总结

C#正则表达式解析HTML [重复]

正则表达式替换以删除 html 标记之间的空格

用于解析 HTML 表格的正则表达式?

正确使用正则表达式提取单词

如何从数组中删除所有 html 标签?