[40分]c#求问正则分析字符串

kxloveh 2012-11-25 11:06:32
字符串:
<tr bgcolor="#ffffff">
<td valign="center" align="middle" height="29"><img height="5" src="/images/icon_1.jpg" width="3" /></td>
<td align="left">  <a href="/html/ywgk/yydt/1057.html" target="_blank">2012年省医学会普外科分会学术年会在咸召开</a></td>
<td>2012-11-19</td>
</tr>

<tr bgcolor="#ffffff">
<td valign="center" align="middle" height="29"><img height="5" src="/images/icon_1.jpg" width="3" /></td>
<td align="left">  <a href="/html/ywgk/yydt/1056.html" target="_blank">我院开展2012年新职工岗前培训</a></td>
<td>2012-11-16</td>
</tr>

<tr bgcolor="#ffffff">
<td valign="center" align="middle" height="29"><img height="5" src="/images/icon_1.jpg" width="3" /></td>
<td align="left">  <a href="/html/ywgk/yydt/1055.html" target="_blank">同济托管谱新篇 平安医院促和谐</a></td>
<td>2012-11-16</td>
</tr>
可否用正则获得每个tr中的地址、标题、和时间,如第一个tr获得:
/html/ywgk/yydt/1057.html
2012年省医学会普外科分会学术年会在咸召开
2012-11-16

先谢谢各位了
...全文
150 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

    string str = File.ReadAllText("D:\\1.txt", Encoding.Default);
            var ary = Regex.Matches(str, @"<tr[\s\S]*?<a.*?href=([""']?)([^""'>]+)\1[^>]*>(((?!</a>)[\s\S])+)</a>[\s\S]*?<td[^>]*>(\d{4}\-\d{2}\-\d{2})").Cast<Match>().Select(t =>
                new
                {
                    href = t.Groups[2].Value,
                    neirong = t.Groups[3].Value,
                    time = t.Groups[5].Value
                }).ToArray();
kxloveh 2012-11-25
  • 打赏
  • 举报
回复
谢谢了,感谢各位,结贴给分
  • 打赏
  • 举报
回复
引用 10 楼 kxLoveH 的回复:
可以了,谢谢 授人以鱼不如授人以渔,请问两位大神如何学习正则的,推荐点资料呗,不胜感激
blog
kxloveh 2012-11-25
  • 打赏
  • 举报
回复
可以了,谢谢 授人以鱼不如授人以渔,请问两位大神如何学习正则的,推荐点资料呗,不胜感激
  • 打赏
  • 举报
回复
@"<tr[^>]*?bgcolor=[""']#ffffff[""'][\s\S]*?<a.*?href=([""']?)([^""'>]+)\1[^>]*>(((?!</a>)[\s\S])+)</a>[\s\S]*?<td[^>]*>(\d{4}\-\d{2}\-\d{2})"
kxloveh 2012-11-25
  • 打赏
  • 举报
回复
引用 6 楼 hjywyj 的回复:
using System.Linq
谢谢,可以了,但是可否再加个过滤,就是只找<tr bgcolor="#ffffff"> 的地址和标题,因为还有的tr是别的颜色,谢谢了
EnForGrass 2012-11-25
  • 打赏
  • 举报
回复
(?is)<tr\s*bgcolor="#ffffff">.*?<a\s*href=(["'])?([^"']*?)\1[^>]*?>(.*?)</a>.*?<td>(\d{4}-\d{2}-\d{2})</td>\s*</tr>

string  html="yourHtml";
foreach(Match m in Regex.Matches(html,@"(?is)<tr\s*bgcolor=""#ffffff"">.*?<a\s*href=([""'])?([^""']*?)\1[^>]*?>(.*?)</a>.*?<td>(\d{4}-\d{2}-\d{2})</td>\s*</tr>
"))
{
   Console.WriteLine(m.Groups[2].Value);
   Console.WriteLine(m.Groups[3].Value);
   Console.WriteLine(m.Groups[4].Value);
}
  • 打赏
  • 举报
回复
using System.Linq
kxloveh 2012-11-25
  • 打赏
  • 举报
回复
需要引用什么程序集吗
kxloveh 2012-11-25
  • 打赏
  • 举报
回复
引用 3 楼 hjywyj 的回复:
版本太低
哪有,我用的4.5啊
  • 打赏
  • 举报
回复
版本太低
kxloveh 2012-11-25
  • 打赏
  • 举报
回复
引用 1 楼 hjywyj 的回复:
C# code? 123456789 string str = File.ReadAllText("D:\\1.txt", Encoding.Default); var ary = Regex.Matches(str, @"<tr[\s\S]*?<a.*?href=([""']?)([^""'>]+)\1[^>]*>(((?!</a>)[\s\S……
报错了: 错误 1 “System.Text.RegularExpressions.MatchCollection”不包含“Cast”的定义,并且找不到可接受类型为“System.Text.RegularExpressions.MatchCollection”的第一个参数的扩展方法“Cast”(是否缺少 using 指令或程序集引用?) D:\学习区\C#\获取动态\GetNews\Program.cs 14 155 GetNews

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧