繁体   English   中英

如何从字符串(C#)获取正则表达式中的每个tablerow?

[英]How to get each tablerow in regex from a string (C#)?

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

<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场比赛。

任何想法?

非常感谢!

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

。?*:所有角色,在第一场比赛时停止。

\\ s \\ S:所有角色,甚至是新线条。

我使用RAD Software Regular Expression Designer来创建和测试REGEX表达式。 这是一个很棒的工具!

尝试这个:

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)
 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> (在任何浏览器中都能正常显示)。 这可以使用负前瞻来解决

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

(?<=\<tr.*?\>).*?(?=\</tr\>)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM