仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2486|回复: 19
打印 上一主题 下一主题

[学习教程] ASP编程:正则表达式从入门到精晓

[复制链接]
老尸 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:28:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
使用filesystemobject,可以对服务器上的文件进行操作,浏览、复制、移动、删除等。有ado的支持,asp对数据库的操作非常得心应手。你甚至可以像使用本地数据库那样,管理远程主机上的数据库,对表格、记录进行各种操作。正则     甚么是正则表达式

  假如本来没有利用过正则表达式,那末能够对这个术语和概念会不太熟习。不外,它们并非您想象的那末别致。

  请回忆一下在硬盘上是若何查找文件的。您一定会利用 ? 和 * 字符来匡助查找您正寻觅的文件。? 字符婚配文件名中的单个字符,而 * 则婚配一个或多个字符。一个如 '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 中利用正则表达式的效力更高,它答应在单个表达式中履行多个字符串操作。

  正则表达式语法

  一个正则表达式就是由通俗字符(例如字符 a 到 z)和特别字符(称为元字符)构成的文字形式。该形式描写在查找文字主体时待婚配的一个或多个字符串。正则表达式作为一个模板,将某个字符形式与所搜刮的字符串停止婚配。

  这里有一些能够会碰到的正则表达式示例:

JScriptVBScript婚配/^\[ \t]*$/"^\[ \t]*$"婚配一个空白行。/\d{2}-\d{5}/"\d{2}-\d{5}"验证一个ID 号码是不是由一个2位数字,一个连字符和一个5位数字构成。/<(.*)>.*<\/\1>/"<(.*)>.*<\/\1>"婚配一个 HTML 标志。
  下表是元字符及其在正则表达式高低文中的行动的一个完全列表:

字符描写\将下一个字符标志为一个特别字符、或一个原义字符、或一个 向后援用、或一个八进制本义符。例如,'n' 婚配字符 "n"。'\n' 婚配一个换行符。序列 '\\' 婚配 "\" 而 "\(" 则婚配 "("。^婚配输出字符串的入手下手地位。假如设置了 RegExp 对象的 Multiline 属性,^ 也婚配 '\n' 或 '\r' 以后的地位。$婚配输出字符串的停止地位。假如设置了RegExp 对象的 Multiline 属性,$ 也婚配 '\n' 或 '\r' 之前的地位。*婚配后面的子表达式零次或屡次。例如,zo* 能婚配 "z" 和 "zoo"。* 等价于{0,}。+婚配后面的子表达式一次或屡次。例如,'zo+' 能婚配 "zo" 和 "zoo",但不克不及婚配 "z"。+ 等价于 {1,}。?婚配后面的子表达式零次或一次。例如,"do(es)?" 可以婚配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。{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}mn 均为非负整数,个中n <= m。起码婚配 n 次且最多婚配 m 次。例如,"o{1,3}" 将婚配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注重在逗号和两个数之间不克不及有空格。?当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 前面时,婚配形式长短贪心的。非贪心形式尽量少的婚配所搜刮的字符串,而默许的贪心形式则尽量多的婚配所搜刮的字符串。例如,关于字符串 "oooo",'o+?' 将婚配单个 "o",而 'o+' 将婚配一切 'o'。.婚配除 "\n" 以外的任何单个字符。要婚配包含 '\n' 在内的任何字符,请利用象 '[.\n]' 的形式。(pattern)婚配 pattern 并获得这一婚配。所获得的婚配可以从发生的 Matches 纠合失掉,在VBScript 中利用 SubMatches 纠合,在JScript 中则利用 $0$9 属性。要婚配圆括号字符,请利用 '\(' 或 '\)'。(?:pattern)婚配 pattern 但不获得婚配了局,也就是说这是一个非获得婚配,不停止存储供今后利用。这在利用 "或" 字符 (|) 来组合一个形式的各个局部是很有效。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简单的表达式。(?=pattern)正向预查,在任何婚配 pattern 的字符串入手下手处婚配查找字符串。这是一个非获得婚配,也就是说,该婚配不需求获得供今后利用。例如,'Windows (?=95|98|NT|2000)' 能婚配 "Windows 2000" 中的 "Windows" ,但不克不及婚配 "Windows 3.1" 中的 "Windows"。预查不用耗字符,也就是说,在一个婚配产生后,在最初一次婚配以后当即入手下手下一次婚配的搜刮,而不是从包括预查的字符以后入手下手。(?!pattern)负向预查,在任何不婚配 pattern 的字符串入手下手处婚配查找字符串。这是一个非获得婚配,也就是说,该婚配不需求获得供今后利用。例如'Windows (?!95|98|NT|2000)' 能婚配 "Windows 3.1" 中的 "Windows",但不克不及婚配 "Windows 2000" 中的 "Windows"。预查不用耗字符,也就是说,在一个婚配产生后,在最初一次婚配以后当即入手下手下一次婚配的搜刮,而不是从包括预查的字符以后入手下手 x|y婚配 xy。例如,'z|food' 能婚配 "z" 或 "food"。'(z|f)ood' 则婚配 "zood" 或 "food"。[xyz]字符纠合。婚配所包括的恣意一个字符。例如, '[abc]' 可以婚配 "plain" 中的 'a'。[^xyz]负值字符纠合。婚配未包括的恣意字符。例如, '[^abc]' 可以婚配 "plain" 中的'p'。[a-z]字符局限。婚配指定局限内的恣意字符。例如,'[a-z]' 可以婚配 'a' 到 'z' 局限内的恣意小写字母字符。[^a-z]负值字符局限。婚配任何不在指定局限内的恣意字符。例如,'[^a-z]' 可以婚配任何不在 'a' 到 'z' 局限内的恣意字符。\b婚配一个单词界限,也就是指单词和空格间的地位。例如, 'er\b' 可以婚配"never" 中的 'er',但不克不及婚配 "verb" 中的 'er'。\B婚配非单词界限。'er\B' 能婚配 "verb" 中的 'er',但不克不及婚配 "never" 中的 'er'。\cx婚配由 x 指明的掌握字符。例如, \cM 婚配一个 Control-M 或回车符。x 的值必需为 A-Z 或 a-z 之一。不然,将 c 视为一个原义的 'c' 字符。\d婚配一个数字字符。等价于 [0-9]。\D婚配一个非数字字符。等价于 [^0-9]。\f婚配一个换页符。等价于 \x0c 和 \cL。\n婚配一个换行符。等价于 \x0a 和 \cJ。\r婚配一个回车符。等价于 \x0d 和 \cM。\s婚配任何空白字符,包含空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。\S婚配任何非空白字符。等价于 [^ \f\n\r\t\v]。\t婚配一个制表符。等价于 \x09 和 \cI。\v婚配一个垂直制表符。等价于 \x0b 和 \cK。\w婚配包含下划线的任何单词字符。等价于'[A-Za-z0-9_]'。\W婚配任何非单词字符。等价于 '[^A-Za-z0-9_]'。\xn婚配 n,个中 n 为十六进制本义值。十六进制本义值必需为肯定的两个数字长。例如,'\x41' 婚配 "A"。'\x041' 则等价于 '\x04' & "1"。正则表达式中可使用 ASCII 编码。.\num婚配 num,个中 num 是一个正整数。对所获得的婚配的援用。例如,'(.)\1' 婚配两个一连的不异字符。\n标识一个八进制本义值或一个向后援用。假如 \n 之前最少 n 个获得的子表达式,则 n 为向后援用。不然,假如 n 为八进制数字 (0-7),则 n 为一个八进制本义值。\nm标识一个八进制本义值或一个向后援用。假如 \nm 之前最少有 nm 个取得子表达式,则 nm 为向后援用。假如 \nm 之前最少有 n 个获得,则 n 为一个后跟文字 m 的向后援用。假如后面的前提都不知足,若 nm 均为八进制数字 (0-7),则 \nm 将婚配八进制本义值 nm。\nml假如 n 为八进制数字 (0-3),且 ml 均为八进制数字 (0-7),则婚配八进制本义值 nml。\un婚配 n,个中 n 是一个用四个十六进制数字暗示的 Unicode 字符。例如, \u00A9 婚配版权符号 (
变相怪杰 该用户已被删除
沙发
发表于 2015-2-3 23:37:48 | 只看该作者
另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件)
再见西城 该用户已被删除
板凳
发表于 2015-2-9 07:24:23 | 只看该作者
在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。
蒙在股里 该用户已被删除
地板
发表于 2015-2-27 04:17:53 | 只看该作者
接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。
兰色精灵 该用户已被删除
5#
发表于 2015-2-28 10:33:50 | 只看该作者
我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标.
简单生活 该用户已被删除
6#
发表于 2015-3-1 18:04:11 | 只看该作者
我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。
活着的死人 该用户已被删除
7#
发表于 2015-3-6 15:22:06 | 只看该作者
另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件)
老尸 该用户已被删除
8#
 楼主| 发表于 2015-3-12 09:58:23 | 只看该作者
从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了
因胸联盟 该用户已被删除
9#
发表于 2015-3-19 19:49:44 | 只看该作者
我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。
谁可相欹 该用户已被删除
10#
发表于 2015-3-26 19:33:26 | 只看该作者
先学习用frontpage熟悉html编辑然后学习asp和vbscript建议买书进行系统学习
金色的骷髅 该用户已被删除
11#
发表于 2015-3-27 16:40:21 | 只看该作者
我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。
柔情似水 该用户已被删除
12#
发表于 2015-4-11 01:11:03 | 只看该作者
兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的
小魔女 该用户已被删除
13#
发表于 2015-4-26 15:10:48 | 只看该作者
另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件)
海妖 该用户已被删除
14#
发表于 2015-4-27 10:07:21 | 只看该作者
兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的
不帅 该用户已被删除
15#
发表于 2015-4-29 16:56:18 | 只看该作者
如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助:
飘灵儿 该用户已被删除
16#
发表于 2015-5-2 00:48:24 | 只看该作者
还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。
admin 该用户已被删除
17#
发表于 2015-6-19 21:06:54 | 只看该作者
Application:这个存储服务端的数据,如果不清除,会直到web应用程序结束才清除(例如重启站点)
灵魂腐蚀 该用户已被删除
18#
发表于 2015-7-1 16:49:11 | 只看该作者
下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。
若天明 该用户已被删除
19#
发表于 2015-7-17 01:46:03 | 只看该作者
虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。
深爱那片海 该用户已被删除
20#
发表于 2015-7-25 13:54:47 | 只看该作者
交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-29 08:51

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表