没有合适的资源?快使用搜索试试~ 我知道了~
Asp分析网页源代码.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 119 浏览量
2022-06-23
11:12:54
上传
评论
收藏 519KB DOC 举报
温馨提示
试读
64页
Asp分析网页源代码.doc
资源推荐
资源详情
资源评论
正则表达式在网络编程中的运用
[前言:]在我们编写 程序时,经常会判断一个字符串的有效性,如;一个串是否是数字、是否是有效的 地址等等。
如果不使用正则表达式,那么判断的程序会很长,并且容易出错,如果使用正则表达式,这些判断就是一件很轻松的工作了。本文全
面介绍正则表达式的慨念、格式。并以在 、 中的应用实例增加读者的感性认识。正则表达式的应用很广需要大家在学习和
实践中不断的总结。
正则表达式简介
简单的说,正则表达 式是一种可以 用于模式匹配 和替换的强有 力的工具。在 网络编程中应 用广泛,如 脚本语言或 是
、 这样的客户端脚本语言都提供了对正则表达式的支持。由此可见,正则表达式已经超出了某种语言或某个系
统的局限,成为人们广为接受的概念和功能。 正则表达式可以让用户通过使用一系列的特殊字符构建匹配模式,然后把匹配模式与
数据文件、程序输入以及 页面的表单输入等目标对象进行比较,根据比较对象中是否包含匹配模式,执行相应的程序。 举例
来说,正则表达式的一个最为普遍的应用就是用于验证用户在线输入的邮件地址的格式是否正确,如果通过正则表达式验证用户邮件
地址的格式正确,用户所填写的表单信息将会被正常处理;反之,如果用户输入的邮件地址与正则表达的模式不匹配,将会弹出提示
信息,要求用户重新输入正确的邮件地址。由此可见正则表达式在 应用的逻辑判断中具有举足轻重的作用。在后面我们会举例
详细介绍。 正则表达式形式一般如:,其中位于定界符之间的部分就是将要在目标对象中进行匹配的模式。用户只要把希
望查找匹配对象的模式内容放入定界符之间即可。为了能够使用户更加灵活的定制模式内容,正则表达式提供了专门的元字符。
所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象
中的出现模式。较为常用的元字符包括: ,,以及,或者 和等等。为了能够方便用户更加灵活的设定匹
配模式,正则表达式允许使用者在匹配模式中利用!"界定匹配于某一个范围的字符而不局限于具体的字符。 除了我们以上的元字符之
外,正则表达式中还具有另外一种较为独特的专用字符,即定位符。定位符用于规定匹配模式在目标对象中的出现位置。较为常用的
定位符包括: #$%$&$以及 。 如果我们希望在正则表达式中实现类似编程逻辑中的或运算,在多个不同的模式中任选
一个进行匹配的话,可以使用管道符 '。例如: 正则表达式中还有一个较为常用的运算符,即否定符 !#"。与我们前文所提到的
定位符 #$不同,否定符 !#"规定目标对象中不能存在模式中所规定的字符串。一般来说,当#出现在 !"内时就被视做否定运
算符;而当#位于!"之外,或没有!"时,则应当被视做定位符。
最后,当用户需要在正则表达式的模式中加入元字符,并查找其匹配对象时,可以使用转义符。例如:(),该正则表达式将会
与目标对象中的()而非()等相匹配。正则表达式的语法规则和标记现在我们正式进入则表达式的学习,我会根据实例结合讲
解正则表达式的用法,看完后你就会觉得写 * 代码如此简单了,只要你一步一步的跟着我学 看完本文章后你就成为 * 高手了。
激动人心的就是你能写出自已的 * 标签来了,再也不用到别人那里去拷贝现成的代码和模板了。 还好 +,- 给我们提供
了正则表达式对象,只要你的服务器安装了 .+,/,就可以运行了,字符描述: #符号匹配字符串的开头。例如: #&
与&$/01匹配,而不与/01$&匹配%符号匹配字符串的结尾。例如: &% 与/01$&匹配,而不与&$/01匹配。
注意:如果同时使用#符号和%符号,将进行精确匹配。例如: #&% 只与&匹配 符号匹配 - 个或多个前面
的字符。例如: & 可以匹配& 、&& 、 &&& 等 符号匹配至少一个前面的字符。例如: & 可以匹
配 && 、 &&& 等 , 但 不 匹 配 & 。 符 号 匹 配 - 个 或 2 个 前 面 的 字 符 。 例 如 : & 可 以 且 只 能 匹
配&、&&、&和&&,符号匹配除换行符以外的任何字符。例如: 3,4 匹配除换行符以外的所有字符串 /'0
匹配/或0。例如: &'/01 可匹配 &或 /01,而&3'/401匹配 &01和&/015匹配恰好 5 次(5 为非负
整数)前面的字符。例如: 6 可以匹配,但不匹配5匹配至少 5 次(5 为非负整数)前面的字符。例如:
7 匹配、等,但不匹配和。 注意:2等价于 -等价于 5匹配至少
个,至多 5 个前面的字符。例如: 27 只匹配、和。 注意:-2等价于 !/01"表示一个字符集,匹
配括号中字符的其中之一。例如: !&" 匹配、&和!#/01"表示一个否定的字符集。匹配不在此括号中的任何字符。
例如: !#&" 可以匹配除、&和之外的任何字符!81"表示某个范围内的字符,匹配指定区间内的任何字符。例如:
!81" 匹配从到1之间的任何一个小写字母字符!#85"表示某个范围之外的字符,匹配不在指定范围内的字符。例如:
!85" 匹配除从到5之间的任何字符符号是转义操作符。例如: 5 换行符 9 分页符 回车 制表符
垂直制表符 匹配 匹配 任何白字符,包括空格、制表符、分页符等。等价于!$95"
任何非空白的字符。等价于#95" 任何单词字符,包括字母和下划线。等价于!8:81-8;<" 任何非单词
字符。等价于!#8:81-8;<" & 匹配单词的结尾。例如: & 匹配单词等,但不匹配0、5等
匹配单词的开头。例如: 匹配单词0等,但不匹配等 匹配一个数字字符,等价于!-8;"。例如:
&/01 匹配&6/01、&=/01等,
但不匹配 &/01、&8/01等 > 匹配一个非数 字字符,等价于 !#-8;" 。例如: &>/01 匹
配&/01、&8/01等,
但不匹配&6/01、&=/01等 ?*@ 匹配 ?*@ 个(其中 ?*@ 为一个正整数),引用回到记住的匹配。例如:
3,42 匹配两个连续相同的字符。 ?*@ 匹配 5(其中 5 为一个小于 6+A 的八进制换码值)。例如:
-22 匹配制表符 /?*@ 匹配 ?*@(其中 ?*@ 为一个小于 6+A 的十六进制换码值)。例如: /=2 匹配字
符
应用实例 在对正则表达式有了较为全面的了解之后,就可以在 ,,以及 等程式中使用正则表达式了。下面以
语言为例,使用验证用户在线输入的邮件地址以及网址的格式是否正确。$提供了 B34或 B34资料处理函数实现字串
比对剖析的模式匹配操作 B34函数的使用格式如下: B$35$5B4$其中,5 代表正则表达式的模式;而
5B 则是执行查找替换操作的目标对象如 地址值。本函式以 5$的规则来剖析比对字串 5B,找到则传回值为
C。函式 B34与 B34的区别就是前者区分大小写,后者与大小写无关。使用 编写的程序代码如下: <)$
$9$3B3#3!81-8;<8"4D3!81:-8;<8"43,!81-8;<8"4!81"67%%44$
$)$您的 8@$通过初步检查!E$
$$
$)$不是合法的 8@$地址,请重新输入!E$
$> 这个例子是可对使用者输入的 8@$作简单的检查,检查使用者的 8@$字串是否有 D$字元,在 D$字元前有小写英文字
母、数字或下<,在 D$之后有数节字串,最后的小数点后只能有二个或三个小写英文字母。如 &D,,5
)<6--2DFF5 ,5 就可以通过检查,而 ? ;;D6+7,3出现大写字母4和 5 ;;D6+7,53最后的小数点后只能超
过 7 个英文字母4就不能通过检查。 我们通过调用自定义正规则判别函式也可以进行检查操作如下面的网址检验函式G$9C55
90&$3%&4$
C5$3B$3#3!<-8;818",43!-8;818",4!81"67%$%&44E$
$我们知道 程式的运行必须有服务器支持,如果您在自己的主页上想实现以上功能$嵌入式脚本语言 或许是好的选
择。 中带有一个功能强大的 HB/34对象,可以用来进行正则表达式的匹配操作。其中的 34方法可以检验目标对
象中是否包含匹配模式,并相应的返回 C 或 9。只须在 (@I 文档的<)>区域添加一段 代码。
< 5BCBJ2,6>
9C55$903&K4$
$$J$&K,,CE$
$5$J$#3!818:-8;<8"4D3!818:-8;<8"43,!818:-8;<8"4E$
LB$J$5,34E$
93LB4$
3您的 8@$通过初步检查!4E$
C5$CE$
$
3不是合法的 8@$地址,请重新输入!4E$
C5$9E$
$
<>
然后在网页中输入信息的表单域<9>标签区域内中加入一行如下代码:
<5C&JC5$903)4E> 当按下提交按钮后,首先运行 9034函式,进行匹配识别,如果满足
条件则发送表单信息到目标页面,否则返回错误信息。 事实上,正则表达式的功能远非本文提到的这一点,下次,给大家介绍一种
使用正则表达式从任意指定网页中析取任意种类文本信息(如网页中所有的图片文件名)的技巧。 源文件中 B 标签的
析取 上篇,我们介绍了正则表达式的概念及其在网络编程中使用正则表达式验证用户在线输入的邮件地址以及网址的格式是否正确
的应用实例,今天介绍一种从指定网页源文件中析取 B 标签的的编程技巧,即从网页源文件中,解析出所有的插图文件名(包
括 图 片 路 径 ) 也 就 是 标 签 < B$J,,,,,,&,KB > 中 的 文 件 名 ,,,,,,&,KB3 有 的 可 能 是 B9 格 式 4 。 编 程 环 境 :
)$9$5;F。 首先$用文本编辑器新建一个 类型的文件:&HM9B,)7。为了方便讲解,我
们打算是在浏览器表单域中输入需要析取 B 标签的网页的 *HI(或本机文档),提交后执行析取操作,所以在该文件中,我们
要建立一个用于输入网址的表单,举例如下: <9$5J$&HM9B,)7$)J>
输入网址<5C$0J/$5JN5><&>
<5C$0JC&$5JC&$CJ提交>
<9> 输入正确的网址,提交后表单信息被送到 &HM9B,)7 页面,由于表单本身就在该页面,所以相当于
被送到自身页面,下面我们需要编写析取处理的 代码,紧接着表单代码段后写入如下代码:<)
9$3%N5OJ4
%9$J$953%N5$4E$NG若输入不为空,开启本地或者远程档案;
)$3%&CP$J$9B3%9$2-6=44$
%C$,J%&CPE$
93%94E
NG查找%C 中是否有<B$,,,J,,,,,,B9$'$KB> 这样的标记
93B33<B4!#<>"3J4!#<>'"3,433B94'3KB4434%C44$
)$找到图片标签G4<&>E
)$未发现图片标签G3<&>E
NG拆分第一次用标签<B$,,,J拆分得到了以图形文件名开头的数组,
%J333>4'3443<B4!#<>"3J4%C4E
)$找到G$%B5C82 个图片<&>分别为G<&>E
93%J2E%<193%4E%4
NG二次拆分,用拆分。因为文件名能含有,得到的拆分数组的第一个元素就是路径文件名了E
C53%B54E$$再次使用前删除 B5 变量;
%B5J3%!%"4E将析取的图片信息依次赋给 B5 变量
)$%J>,%B5!-",<&>E$NG输出析取的图片信息
>该段程序的设计思路是: 程式判断是否输入了档案名称3网址 *HI 或本机档案名4,若不为空则以只读方式打开该档案;接
着使用函式 9B395B)4取得档案指标 9 所指的行并传回该行内长度为 5B)82$的字串,上例中就是 2-6=82J2-67;然后
利用字串比对剖析函式 B34查找%C 中是否含有<B$,,,J,,,,,,B9$'$KB> 这样的标记(关于该函式在上篇中有详细
的介绍);假如找到的话,则利用 34函式按一定的规则执行两次拆分,去掉标记中的<B,,,J字符和字符,结果得到数组
,其中的每一个元素都是以图形路径文件名开头的数组;用 9 循环在屏幕上输出每个数组的第一个元素值,即我们所需
要的所有图形路径文件名。其中函式 193%4返回个数;在 9 循环中,依次将数组 的每个元素(也是数组)
赋给数组变量 B5,并输出 B5 的第一个元素值(为找到的一个图形路径文件名),当执行下次循环时,删除变量
B5,达到重复使用的目的。大家可以仔细研究其中的奥妙。好了,写好后,将 &HM9B,)7 存到你的服
务器指定目录下,启动 ) 服务器,在浏览器中打开它,随便输入一个存在的网页名称或是远程 *HI看看效果如何。如果有兴
趣,你可以尝试析取 (@I 文档中的任意感兴趣的信息,如果稍加改装,做一个网站文本搜索引擎岂不更妙?正则表达式在 *
论坛中的应用一、* 代码的概念什么是 * 代码?* 代码是 (@I 的一个变种。一般情况下,* 论坛不允许你使用HT
ML代码,而只能用 * 代码替代HTML代码。* 代码是一套由流行的 * 标签组成了固定代码,代码有统一的格式。用户
只要遵循代码规则就可以实现用户想要的功能。如:想要显示粗体的 ) $$0C$字样,就应该输入 ) $$0C 而不是输入<&
>) $$0C<&>你也许会问: 是怎样把 ) $$0C 转换为<&>) $$0C<&>的呢?回答这个问题就是:用正
则表达式。二、实例分析 2)在字符串中精确查找链接地址 33)')'94G3'433 4!,"4235''5'B'''!-8
;"274333!Q"'!Q"43 44'!,"3 443333!"3 442!J"4433 4423!R"3 4!J"3 4444我们知道,链接地
址一般以 ) 或者 ) 或者 9 等形式出现。初步总结一下就是,链接地址必须符合如下条件:条件 2 以 )G或者 )G
或者 9G等开头(当然还有其它形式,这里只列出主要的)条件 6 )G后面必须跟一个单词字符,紧接着单词字符后面的
是,(这样的组合必须出现一次或多次)。紧跟着,后面的是域名后缀(如 5 或者 或者 5 等,如果是以 . 地址的形式出现
就可以是数字)条件 7 出现完整的链接地址后,还可以出现下一级或者更多级的目录(还要注意个人主页的地址有可能出现 Q符
号)条件 = 链接地址末尾可以带参数。如典型的页数B?J6R5J0 等现在我们用下面的代码来逐个匹配上面的
条件882、33)')'94G3'4$满足条件 2 表示 )G$)G$)G$)G$9G$9G都匹配(在这里考虑了某些用户
可能把输成的易发性错误)注意:'表示或者,是转义字符。表示,表示6、33 4!,"4235'
'5'B'''!-8;"274$满足条件 6$33 4!,"42表示一个单词字符加一个点号可以出现 2 次或者多次(这里考虑了某
些用户喜欢省略 而将 )G , 7,
$$
写成 )G 7,)35''5'B'''!-8;"274表示必须要以
5 或者 或者 5 或者 B 或者 或者 或者三位以下的数字结束!-8;"27表示三位以下的数字,因为 地址的任何段不
能超过 6++7、333!Q"'!Q"43 44'!,"3 44$满足条件 73!Q"'!Q"4表示可以出现Q或者是Q,(其中 !Q"
表示 Q$可以出现也可以不出现),因为不是每个链接地址都有下一级目录3 44'!,"3 44表示必须出现一个单词字符(即目
录或者是一个带有扩展名的文件)注意:最后还有一个表示上面括号内的可以出现也可以不出现,否则就只能匹配有下一级目录
的链接地址了。=、3333!"3 442!J"4433 4423!R"3 4!J"3 4444满足条件 =333!"3 442!J"4433 44
2表示形如B?J6的字符串可以出现也可以不出现,如果出现则只能出现一次(因为不可能有两个?号出现)。3!R"
3 4!J"3 444表示形如R5J0的字符串可以出现也可以不出现(因为并不是每个网页都带有两个以上的参数。
整个333!"3 442!J"4433 4423!R"3 4!J"3 444表示形如B?J6R5J0的字符串可以出
现也可以不出现(即链接地址可以有参数也可以没有参数)把上面的组合起来,我们就可以匹配一个比较全面的链接地址了。比用简
单的3)G4来匹配一个链接地址要好,读者可以自行行测试比较。当然,这段代码还有很多不足之处,希望大家能够继续
改进。6)替代典型的 * 标签G我们的目的就是要把成对的替换成<&><&>下面来看我们实现它的模板 3!&"43,43!&"4
这里用了3,4来配匹到之间的整个字符串,在替代的时候我们要写成这样 J)S/3<&>%6<&>43注意:
)S/ 是我自定义的函数,将在后面给出。这个函数将把按照我们提供的模板进行替代。)也许你会问这里出现一个 %6是什
么东东呵注意了这个%6 可是很重要的,它代表了3,4所配匹的整个字符串。为什么是%6 而不是%2、%7 呢?因为%2 代表3!&"4
所匹配的字符串,%7 代表3!&"4所匹配的字符串,显然这里我们需要的是%6 而不是%2%7。三、* 正则表达模板实例下面
是我写的一个 * 函数,这个函数基本上能使你的论坛成为一个优秀的 * 代码论坛了。当然,通过改进后,你可以得到一个更
强大的 * 论坛。TC55$H()394
$ J>
J)S/3U4 J<
J)S/3V4 J55
J)S/3<>4 J)3764
J)S/3$4$ J
J)S/3$4 J!B"33)G3'44233 4!,"42735''5'B''4333!Q"'!Q"43 4
4'!,"3 443 4!,"23B9'KB'5B44!B"$WW查找图片地址
J)S/3$<B$JWW%2WW> 4 J! "3)G3'433 4!,"42<
剩余63页未读,继续阅读
资源评论
智慧安全方案
- 粉丝: 3648
- 资源: 59万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功