博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用C#和正则表达式截取html代码
阅读量:5784 次
发布时间:2019-06-18

本文共 3964 字,大约阅读时间需要 13 分钟。

【IT168技术文档】如何使用C#和正则表达式截取html代码呢,如何处理html代码中的\r\n这样的字符呢,下面我们来一起研究一下,先从截取目标开始。

一、代码说明

 1.以下html表示收到的3个组的信息,如果含有"unread.gif"表示未读消息,否则表示已读信息。

 2.截取未读消息和已读消息的条数和theUrl

 3.要将未读信息和已读信息分开放入两个组里。

 <div class="dxx_of" id="message1" οnmοuseοver="msgOnmouseover(1)" οnmοuseοut="msgOnmouseout(1)" />

 <div class="dxx1" style="padding:15px 10px;"><img src="http://www.microsoft.com/i2/unread.gif" width="14" height="10" title="" /></div>

 <div class="dxx2">

 <table class="aa" border="0" cellpadding="0" cellspacing="0" >

 <colgroup>

 <col width="463" />

 </colgroup>

 <tbody>

 <tr basestyle="oRowLine2">

 <td valign="top" οnclick="javascript:document.location='thUrl';" >

 wa

 <div><span class='c9'>共6条会话</span><a href="thUrl" class="sl">+展开</a></span></div>

 <span class="c9"></span>

 </td>

 </tr>

 </tbody>

 </table>

 </div>

 <div class="c"></div>

 </div>

 <div class="dxx_of" id="message2" οnmοuseοver="msgOnmouseover(2)" οnmοuseοut="msgOnmouseout(2)" />

 <div class="dxx1" style="padding:15px 10px;"></div>

 <div class="dxx2">

 <table class="aa" border="0" cellpadding="0" cellspacing="0" >

 <colgroup>

 <col width="463" />

 </colgroup>

 <tbody>

 <tr basestyle="oRowLine2">

 <td valign="top" οnclick="javascript:document.location='thUrl';" >

 wa

 <div><span class='c9'>共3条会话</span><a href="thUrl1" class="sl">+展开</a></span></div>

 <span class="c9"></span>

 </td>

 </tr>

 </tbody>

 </table>

 </div>

 <div class="c"></div>

 </div>

 <div class="dxx_of" id="message3" οnmοuseοver="msgOnmouseover(3)" οnmοuseοut="msgOnmouseout(3)" />

 <div class="dxx1" style="padding:15px 10px;"></div>

 <div class="dxx2">

 同上很多html内容

 </div>

 <div class="c"></div>

 </div>

二、官方样例

 用C#和正则表达式如何对上例的代码进行截取呢,我们来看看微软官方发布的样例。

 示例

 System.Text.RegularExpressions.RegexOptions 。

 C#

 class TestRegularExpressions

 {

 static void Main()

 {

 string[] sentences =

 {

 "cow over the moon",

 "Betsy the Cow",

 "cowering in the corner",

 "no match here"

 };

 string sPattern = "cow";

 foreach (string s in sentences)

 {

 System.Console.Write("{0,24}", s);

 if (System.Text.RegularExpressions.Regex.IsMatch(s, sPattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase))

 {

 System.Console.WriteLine(" (match for '{0}' found)", sPattern);

 }

 else

 {

 System.Console.WriteLine();

 }

 }

 // Keep the console window open in debug mode.

 System.Console.WriteLine("Press any key to exit.");

 System.Console.ReadKey();

 }

 }

 /* Output:

 cow over the moon (match for 'cow' found)

 Betsy the Cow (match for 'cow' found)

 cowering in the corner (match for 'cow' found)

 no match here

 */

 以上代码是一个控制台应用程序,用于对数组中的字符串执行简单的不区分大小写的搜索。给定要搜索的字符串和包含搜索模式的字符串后,静态方法 Regex.IsMatch 将执行搜索。使用第三个参数指示忽略大小写。

 实际可以使用以下代码来匹配。

Regex regex = new Regex("<div class=\"dxx_of\" id=\".+/>.+(?<htmlCode>.+).+<div class=\"c\"></div>");

 MatchCollection matchs = regex.Matches(resultHtml);

 if(maths.Count>0)

 strig html = matchs[0].Groups["htmlCode"].Value;

  但是正则的"."只能匹配不含\n的任何字符,可是HTML代码中有很多\r\n。

三、如何处理特殊字符

 如果不重要可以用string Replace方法将 \r\n替换掉,下面这个方法可以有效的将其分为3个组。

 C#

 class TestRegularExpressionValidation

 {

 static void Main()

 {

 string[] numbers =

 {

 "123-456-7890",

 "444-234-22450",

 "690-203-6578",

 "146-893-232",

 "146-839-2322",

 "4007-295-1111",

 "407-295-1111",

 "407-2-5555",

 };

 string sPattern = "^\d{3}-\d{3}-\d{4}$";

 foreach (string s in numbers)

 {

 System.Console.Write("{0,14}", s);

 if (System.Text.RegularExpressions.Regex.IsMatch(s, sPattern))

 {

 System.Console.WriteLine(" - valid");

 }

 else

 {

 System.Console.WriteLine(" - invalid");

 }

 }

 // Keep the console window open in debug mode.

 System.Console.WriteLine("Press any key to exit.");

 System.Console.ReadKey();

 }

 }

 /* Output:

 123-456-7890 - valid

 444-234-22450 - invalid

 690-203-6578 - valid

 146-893-232 - invalid

 146-839-2322 - valid

 4007-295-1111 - invalid

 407-295-1111 - valid

 407-2-5555 - invalid

 */

 以上代码是一个控制台应用程序,此程序使用正则表达式验证数组中每个字符串的格式。验证要求每个字符串具有电话号码的形式,即用短划线将数字分成三组,前两组各包含三个数字,第三组包含四个数字。这是使用正则表达式 ^\d{3}-\d{3}-\d{4}$ 完成的。

转载地址:http://htvyx.baihongyu.com/

你可能感兴趣的文章
【JAVA集合框架一 】java集合框架官方介绍 Collections Framework Overview 集合框架总览 翻译 javase8 集合官方文档中文版...
查看>>
SpringMVC使用注解配置bean
查看>>
BZOJ1202 [HNOI2005]狡猾的商人
查看>>
改变Silverlight插件的下载url
查看>>
BZOJ 2002 LCT板子题
查看>>
python - 接口自动化测试 - contants - 常量封装
查看>>
asp.net easyui 动态绑定下拉框
查看>>
“小程序”初探
查看>>
angularjs结合plupload实现文件上传
查看>>
招商银行的企业网银如何完成银企对账
查看>>
windows下的进程注入
查看>>
抽象工厂,工厂方法和简单工厂的对比
查看>>
Zookeeper
查看>>
apache配置
查看>>
树dp...吧 ZOJ 3949
查看>>
如何查看Linux操作系统版本
查看>>
js函数中参数的传递
查看>>
(2)javascript的基本语法、数据结构、变量
查看>>
软件业的“敏捷流程”(转载)
查看>>
Java判断素数
查看>>