0

基本上,我有一个这样的字符串:

<table><tr class="even"><td></td><td></td></tr><tr class="odd"><td></td><td></td></tr></table> 

我想使用 Regex.Matches (c#) 获取每个表行

我的正则表达式模式是什么?

我尝试了以下方法,但我认为这可能是非常错误的:

"<tr"(.*)"</tr>" 
[<][t][r](.*)[<][/][t][r][>]" 

但即使

[t][r].*[t][r]

给出 0 个匹配项。

任何想法?

非常感谢!

4

4 回答 4

2
\<tr[\s\S]*?\/tr\>

.?* :所有字符,在第一次匹配时停止。

\s\S :所有字符,甚至是新行。

我使用 RAD 软件正则表达式设计器来创建和测试 REGEX 表达式。这是一个很棒的工具!

于 2013-11-11T17:22:22.880 回答
0

尝试这个:

var s = @"<table><tr class=""even""><td></td><td></td></tr><tr class=""odd""><td></td><td></td></tr></table>";
Regex.Matches(s, @"(<tr .*?</tr>)", RegexOptions.Singleline)
于 2013-11-11T17:29:38.430 回答
0

考虑以下正则表达式...

(?<=\<tr.*?\>).*?(?=\</tr\>)
于 2013-11-11T17:43:25.883 回答
0
 var str = "<table><tr class=\"even\"><td></td><td></td></tr><tr class=\"odd\"><td></td><td></td></tr></table>";
 string[] trs = Regex.Matches(str, @"<tr[^>]*>(?<content>.*)</tr>", RegexOptions.Multiline)
             .Cast<Match>()
             .Select(t => t.Groups["content"].Value)
             .ToArray();

“trs”数组是你的结果,包含<td></td><td></td>两次。

编辑:这个正则表达式不能丢失 a </tr>(在任何浏览器中都可以正常显示)。这可以使用负前瞻来解决

于 2013-11-11T17:34:40.220 回答