Regex for HTML <tr> tag

本文关键字:tr gt tag lt for HTML Regex | 更新日期: 2023-09-27 18:00:55

我有一个包含<tr>类的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个信息。这是对的吗?我希望你现在能理解我。

Regex for HTML <tr> tag

EDIT:在上一条评论中,您说:<tr ....> <tag> ... </tag> <tag2>...</tag2> </tr>,这是对原始问题的扩展。在这个阶段,我同意所有其他建议:您将需要一个dom解析器。

旧的编辑:最初您要求匹配<tr>标签的内容。规格发生了变化,所以这个答案包含了不断发展的版本。

对于普通<tr>标签:从中提取组1

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

或者对于<tr with stuff>:

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

或用于<tr stuff><td stuff>Grab Me</td>

(?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