基本上,我有一个这样的字符串:
<table><tr class="even"><td></td><td></td></tr><tr class="odd"><td></td><td></td></tr></table>
我想使用Regex.Matches(c#)
获取每个tablerow我的正则表达式是什么?
我尝试了以下但我认为这可能是错误的:
"<tr"(.*)"</tr>"
[<][t][r](.*)[<][/][t][r][>]"
但即便
[t][r].*[t][r]
给出0场比赛。
有什么想法吗?
非常感谢!
答案 0 :(得分:2)
\<tr[\s\S]*?\/tr\>
。?*:所有角色,在第一场比赛时停止。
\ s \ S:所有字符,甚至是新行。
我使用RAD Software Regular Expression Designer来创建和测试REGEX表达式。这是一个很棒的工具!
答案 1 :(得分: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)
答案 2 :(得分: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>
两次。
编辑:此正则表达式无法修复</tr>
(在任何浏览器中都能正常显示)。这可以使用negative lookahead
答案 3 :(得分:0)
考虑以下Regex ......
(?<=\<tr.*?\>).*?(?=\</tr\>)