• ----:)欢迎访问源码网(:----
    • 首页
    • 博客
    • 学院
    • 下载
    • 论坛
    • 影视
    • 发布源码
    • RSS
    • ITPig
    • 笑话网
    • 百家姓
    • 繁體中文

源码网 - 中国第一源码门户
选择镜像:网通镜像 - 电信主站
  • 首 页
  • 新闻动态
  • 网站运营
  • 网页制作
  • WEB开发
  • 编程开发
  • 图像媒体
  • 操作系统
  • 数据库
  • 服务器
热门搜索 优化 SEO 故事 cms IIS7 MySQL 个人 AdSense 主题推广 | 文章搜索: 高级搜索
会员登录/控制面版您的位置: 学院首页 >> WEB开发 >> ASP开发 >> ASP基础 >> 详细内容
 

推荐文章

  • ASP的100个必须掌握的基础
 
 

热点文章

  • ASP的100个必须掌握的基础
  • ASP初级三——ASP实例讲解
  • ASP中级三--Ajax入门讲座记录
  • ASP入门及提高
  • ASP初级一——入门及总结
  • asp学习入门经验谈
  • ASP中级一——正则表达式讲座记录
  • ASP中级二--ORM讲座记录
  • 精华asp代码收集
  • ASP编程常用的代码
  • 基于服务器的 web代理 源代码
  • AspJpeg的使用介绍
 
 

相关文章

  • MySql正则表达式的描述
  • PHP编程技巧:看实例学正则表达式
  • 半小时精通正则表达式
  • 正则表达式
  • 正则表达式教程
  • DB2中如何实现正则表达式(1)
  • ASP中级三--Ajax入门讲座记录
  • ASP中级二--ORM讲座记录
  • 正则小偷的部份核心函数
  • 正则表达式入门
  • 17种正则表达式
  • 正则表达式练习器
 
 

百度搜索

 
 

ASP中级一——正则表达式讲座记录

  • 阅览次数:
  • 文章来源: nnhy
  • 原文作者: 晴天
  • 整理日期: 2007-03-04
  • 发表评论
  • 字体大小:
  • 小
  • 中
  • 大

本系统下载(通用类设计)Build0920:NewLifeCMS.rar
说明:
应该是第一个公开的通用类产品,很垃圾,花了我好几个小时
用户名密码都是nnhy
压缩包请使用右键菜单的“释放到当前文件夹”,不要双击打开,否则出错!~
09201450错误:
后台上传的文件,前台无法下载,解决方法:修改News_Form模版..\Gen\NewLifeWebEditor\NewLifeWebEditor.asp?id={$ContentFormName}&style=nnhy&originalfilename=d_originalfilename&savefilename=d_savefilename&savepathfilename={$PicPathFormName}&EditorPage2ShowPagePath=

这里都是用正则做的
所以,待会作为例子
 
如果原来没有使用过正则表达式,那么可能对这个术语和概念会不太熟悉。不过,它们并不是您想象的那么新奇。
请回想一下在硬盘上是如何查找文件的。您肯定会使用 ? 和 * 字符来帮助查找您正寻找的文件。? 字符匹配文件名中的单个字符,而 * 则匹配一个或多个字符。一个如 'data?.dat' 的模式可以找到下述文件:
data1.dat
data2.dat
datax.dat
dataN.dat
如果使用 * 字符代替 ? 字符,则将扩大找到的文件数量。'data*.dat' 可以匹配下述所有文件名:
data.dat
data1.dat
data2.dat
data12.dat
datax.dat
dataXYZ.dat
尽管这种搜索文件的方法肯定很有用,但也十分有限。? 和 * 通配符的有限能力可以使你对正则表达式能做什么有一个概念,不过正则表达式的功能更强大,也更灵活。
 
正则表达式的“祖先”可以一直上溯至对人类神经系统如何工作的早期研究。Warren McCulloch 和 Walter Pitts 这两位神经生理学家研究出一种数学方式来描述这些神经网络。
1956 年, 一位叫 Stephen Kleene 的数学家在 McCulloch 和 Pitts 早期工作的基础上,发表了一篇标题为“神经网事件的表示法”的论文,引入了正则表达式的概念。正则表达式就是用来描述他称为“正则集的代数”的表达式,因此采用“正则表达式”这个术语。
随后,发现可以将这一工作应用于使用 Ken Thompson 的计算搜索算法的一些早期研究,Ken Thompson 是 Unix 的主要发明人。正则表达式的第一个实用应用程序就是 Unix 中的 qed 编辑器。
如他们所说,剩下的就是众所周知的历史了。从那时起直至现在正则表达式都是基于文本的编辑器和搜索工具中的一个重要部分。
在典型的搜索和替换操作中,必须提供要查找的确切文字。这种技术对于静态文本中的简单搜索和替换任务可能足够了,但是由于它缺乏灵活性,因此在搜索动态文本时就有困难了,甚至是不可能的。
使用正则表达式,就可以:
测试字符串的某个模式。例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验证。
替换文本。可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字。
根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字。
例如,如果需要搜索整个 web 站点来删除某些过时的材料并替换某些HTML 格式化标记,则可以使用正则表达式对每个文件进行测试,看在该文件中是否存在所要查找的材料或 HTML 格式化标记。用这个方法,就可以将受影响的文件范围缩小到包含要删除或更改的材料的那些文件。然后可以使用正则表达式来删除过时的材料,最后,可以再次使用正则表达式来查找并替换那些需要替换的标记。
另一个说明正则表达式非常有用的示例是一种其字符串处理能力还不为人所知的语言。VBScript 是 Visual Basic 的一个子集,具有丰富的字符串处理功能。与 C 类似的 Jscript 则没有这一能力。正则表达式给 JScript 的字符串处理能力带来了明显改善。不过,可能还是在 VBScript 中使用正则表达式的效率更高,它允许在单个表达式中执行多个字符串操作。
正则表达式的简介,就讲到这里。
总之,正则表达式,就是为了提供更快更强大的字符串搜索功能而出现的
 
 
 
下面讲一个简单的例子
"<(.*) (.*)>(.*)<\/\1>"   匹配一个 HTML 标记
关于这个匹配,不怎么好说,这样吧
举个应用上的例子:剔除一段文本中的所有HTML
str="nnhy"
str=Re.Replace(str, "<(.*) (.*)>(.*)<\/\1>", "$2")
这样,所有的HTML标记将会被删去
下面开始详细的说
<(.*) (.*)>(.*)<\/\1>
圆点.代表除 "\n" 之外的任何单个字符,记住是单个字符哦,有点像DOS里面的?
而星号*就代表前面的字符出现零次或者多次,是一个说明前面字符出现次数的标记
同样的标记还有加号+和问号?
加号+ 一次或多次
问号? 零次或一次
 
出现次数的标记,还可以用大括号{}
这个可以定义出现的次数,属于高级功能,很少用到
{n} n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。
{n,} n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。
.*联合起来,就表示一个除了\n以为(外)的字符串
比如 food
对于正则表达式 f.*d
来说,是附合的,fd中间允许有一个\n外的字符串,所以附(符)合,专业一点,就是所谓的匹配啦
 
<(.*) (.*)>(.*)<\/\1>
这个正则表达式
附合
nnhy
这个字符串,我们就说它匹配
呵呵,这就是上面说的难以理解的匹配
在正则表达式中,符号/有特殊用途,所以需要转义,用\/来代替
 
<(.*) (.*)>(.*)<\/\1>
nnhy
第一个(.*)匹配字符串中的font这个字符串
第二个(.*)匹配字符串中的color=red这个字符串
第三个(.*)匹配字符串中的nnhy这个字符串
这,就叫做获取匹配
在本正则表达式中,如果后面需要用到前面的已获取匹配,比如这里的font,则使用\n代表前面第n个已获取匹配的内容
 
 
 
 
 
匹配,通俗一点的说法就是能套得上去
正则表达式就像一个方框,能套上字符串,就说这个字符串匹配该正则表达式
 
下面开始说说如何在ASP中使用正则表达式
下面是取自index.asp的部分代码
              Set Re = New RegExp
              Re.Global = True
              Re.IgnoreCase = True
              Re.Pattern = "{\$SiteColor}"
              ModStr = Re.Replace(ModStr, SiteColor)
首先声明一个正则表达式对象 Re
然后设置全局搜索,也就是对一个字符串进行全面搜索,而不是只搜索一行
IgnoreCase是表示忽略大小写,这个就不用说了吧
下面的Pattern就是正则表达式啦,在这里是 "{\$SiteColor}"
这个很简单,就是代表#CCCCCC标签啦
好,最后一行,就是把ModStr中,匹配该正则的地方,替换为变量SiteColor的内容
所以嘛,只需要修改一下SiteColor变量的值,就可以更改整个CMS的颜色基调,因为CMS的绝大多数模板,都使用了#CCCCCC标签
 
轮到JS出场了,大家看看JS对正则表达式的强大支持
        while(/\w+?\/\.\.\//.test(v))//开头和中间 Gen/../
        {
            v=v.replace(/\w+?\/\.\.\//img, "");
        }
v是一个字符串变量
/\w+?\/\.\.\//就是一个正则表达式,/开头和/结尾
\w匹配包括下划线的任何单词字符
+至少出现一次
?在这里是非贪婪,也就是说,在存在多种匹配方案的情况下,要最短的匹配
js的正则,直接可以使用test方法判断字符串v是否匹配
在这里是如果匹配,在进行替换操作
替换就是把匹配该正则的子字符串全部替换为空,也就是删除
img分别是
i忽略大小写
m多行
g全局
讲座完成,时间刚够,欢迎到NewLife上提问

上一篇:PHP使用zlib扩展实现页面GZIP压缩输出
下一篇:构建支持Master/Slave读写分离的数据库操作类
  • 网友评论:
  • 查看所有评论
  • 我要发表评论
您的网名:
留言主题:
你要发表的内容:

 

关于本站 | 广告联系 | 版权声明 | 网站地图 | 发布软件 | 帮助中心 | 源码论坛

Copyright © 2005-2007 CodePub.Com  程序支持:木翼  滇ICP备05005971号