当前位置: 代码迷 >> ASP.NET >> 求救,正则表达式:要求不匹配\r\n的有关问题,不简单
  详细解决方案

求救,正则表达式:要求不匹配\r\n的有关问题,不简单

热度:6793   发布时间:2013-02-26 00:00:00.0
求救,正则表达式:要求不匹配\r\n的问题,不简单。
<img   src= '/img.gif '   alt= '置顶 '> &nbsp; <a   ref= 'ID=6911 '   title= '标题:工标题年
作者:王某
时间:2007-04-27
target= '_blank '> 工标题年 </a>

****问题描述:在“作者:王某”这个的后面有一个\r\n,同样在:时间:2007-04-27的后面也有一个\r\n,因为整个a标记要一起用正则来获取里面的相关内容。

我是如下写的:title= '标题:(? <Title> \w+[^\\r]*)(\\s.*?)作者:(? <Author> \w+[^\\r]*)(\\s.*?)时间:(? <UpdateDate> \w+[^\\r]*)
这样得到的结果是:
Title   =   "作者:王某\r\n "     Author   =   "时间:2007-04-27\r\n "

没有得到我想要得到的:Title   =   "作者:王某 "

*********请问怎么不匹配   \r或\n   ?**********

我尝试过:把 "\\r "   换成:   \S   、\r   都不行,请大家指教!!!

------解决方案--------------------------------------------------------
mark
------解决方案--------------------------------------------------------
试一下
title= '标题:(? <Title> \w+[^\r]*)(\s.*?)作者:(? <Author> \w+[^\r]*)(\s.*?)时间:(? <UpdateDate> \w+[^\r]*)

结果为:
title= '标题:工标题年作者:王某时间:2007-04-27target= '_blank '> 工标题年 </a>
------解决方案--------------------------------------------------------
UP
------解决方案--------------------------------------------------------
lxcnn(过客) 的答案很合理啊,被 LZ 说晕晕的了
------解决方案--------------------------------------------------------
这么长,也不知道你看不看到
正则:(? <=作者:).+ 可以获得作者,同理可获得一行只要后半行的所有信息(把前面3个字改一下就行了)
------解决方案--------------------------------------------------------
那要看你是用哪种方式取得html代码的了,这是我的测试代码

string PageUrl = textBox1.Text;
System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(PageUrl);
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1) Web-Sniffer/1.0.24 ";
System.Net.WebResponse response = request.GetResponse();
System.IO.Stream resStream = response.GetResponseStream();
System.IO.StreamReader sr = new System.IO.StreamReader(resStream, System.Text.Encoding.Default);
string htmlCode = sr.ReadToEnd();
resStream.Close();
sr.Close();

MatchCollection mc = Regex.Matches(htmlCode, @ " <a\s+[\s\S]*?title= '(? <Title> 文章标题:.*?)\r\n(? <Author> 文章作者:.*?)\r\n\s*(? <UpdateDate> 更新时间:.*?)\r\n\s*[\s\S]*? '[\s\S]*?> ", RegexOptions.IgnoreCase);
foreach (Match m in mc)
{
richTextBox2.Text += m.Groups[ "Title "].Value + "\n ";
richTextBox2.Text += m.Groups[ "Author "].Value + "\n ";
richTextBox2.Text += m.Groups[ "UpdateDate "].Value + "\n\n ";
}

输出多少条没数,下面是部分输出结果
文章标题:银河证券--工商银行(601398)2007年一季报点评
文章作者:银河证券
更新时间:2007-4-27 16:13:36

文章标题:银河证券--厦工股份(600815)公司经营步入上升通道
文章作者:银河证券
更新时间:2007-4-27 16:12:58

文章标题:西南证券--电气设备行业重点公司2006年年报综述
文章作者:西南证券
更新时间:2007-4-27 16:12:27