田贤追博客 - QQ:260776893,Tel:13065860667

网站建设电子商务博客(网站制作,优化推广,网络营销宣传,B2B,网络广告),网络维护,平面设计及相关的文章信息发布共享。

« 为什么80后集体缺席互联网ASP网页数据库的连接 »

正则表达式技术

正则表达式(Regular Expression)最早是由数学家Stephen Kleene于1956年提出,他是在对自然语言的递增研究成果的基础上提出来的。具有完整语法的正则表达式使用在字符的格式匹配方面上,后来被应用到熔融信息技术领域。自从那时起,正则表达式经过几个时期的发展,现在的标准已经被ISO(国际标准组织)批准和被Open Group组织认定。
正则表达式并非一门专用语言,但它可用于在一个文件或字符里查找和替代文本的一种标准。它具有两种标准:基本的正则表达式(BRE),扩展的正则表达式(ERE)。ERE包括BRE功能和另外其它的概念。
许多程序中都使用了正则表达式,包括xsh,egrep,sed,vi以及在UNIX平台下的程序。它们可以被很多语言采纳,如HTML 、XML、JavaScript以及VBScript等等,这些采纳通常只是整个标准的一个子集。
很多正则表达式的语法看起来很相似,这是因为你以前你没有研究过它们。通配符是RE的一个结构类型,即重复操作。让我们先看一看ERE标准的最通用的基本语法类型。我们以VBScript为例,说明正则表达式的应用范畴及其构造方法。
构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与操作符将小的表达式结合在一起来创建更大的表达式。
可以通过在一对分隔符之间放入表达式模式的各种组件来构造一个正则表达式。对 VBScript 而言,则采用一对引号 ("") 来确定正则表达式的边界。例如:"expression"。正则表达式模式 (expression) 存储在RegExp 对象的Pattern 属性中。
*字符匹配
正则表达式的关键之处在于确定你要搜索匹配的东西,如果没有这一概念,Res将毫无用处。
每一个表达式都包含需要查找的指令,如下所示:
".ord"-匹配象"ford", "lord", "2ord"等等之类的文本;
"[cng]ord"-只匹配"cord", "nord", 以及 "gord"的文本;
"[^cn]ord"-匹配开头字母不包括c以及n,后面字符串为ord的文本;
"[a-zA-Z]ord"-匹配开头字母为英文字母,后面字符串为ord的文本;
"[^0-9]"-匹配开头字母不包括数字,后面字符串为ord的文本。
*重复操作符
重复操作符,或数量词,都描述了查找一个特定字符的次数。它们常被用于字符匹配语法以查找多行的字符,参见下面例子:
"?erd" Will match "berd", "herd", etc. and "erd"
"n.*rd" Will match "nerd", "nrd", "neard", etc.
"[n]+erd" Will match "nerd", "nnerd", etc., but not "erd"
"[a-z]{2}erd" Will match "cherd", "blerd", etc. but not "nerd", "erd", "buzzerd", etc.
".{2,}erd" Will match "cherd" and "buzzerd", but not "nerd"
"n[e]{1,2}rd" Will match "nerd" and "neerd"
*锚
锚是指它所要匹配的格式,使用它能方便你查找通用字符的合并。
"^blah " - 匹配以blah为行首单词的一行文本;
$ blah" –匹配以blah为行尾单词的一行文本;
"\<blah" – 匹配以blah为首的单词,如:blahcake;
"\>blah" – 匹配以blah为尾的单词,如:cakeblah;
"\bblah" – 匹配blah在这个单词的开头或结尾的字符串,如blahcake;
"\Bblah" – 匹配blah在这个单词的中间的字符串,如asblahaaa。
*间隔
Res中的另一可便之处是间隔(或插入)符号。实际上,这一符号相当于一个OR语句并代表|符号。下面的语句返回一段文本中象"nerd" 和 "merd"的句柄:"(n|m)erd"。间隔功能非常强大,特别是当你寻找文件不同拼写的时候。下面的例子能得到相同的结果:"[nm]erd"。当你使用间隔功能与Res的高级特性连接在一起时,它的真正用处更能体现出来。
*一些保留字符
Res的最后一个最重要特性是保留字符(也称特定字符)。例如,如果你想要查找"ne*rd"和"ni*rd"的字符,格式匹配语句"n[ei]*rd"与"neeeeerd" 和 "nieieierd"相符合,但并不是你要查找的字符。因为'*'(星号)是个保留字符,你必须用一个反斜线符号来替代它,即:"n[ei]\*rd"。其它的保留字符包括:
^ 、 . 、[、] 、$ 、( 、) 、 | 、* 、+ 、? 、{ 、}、\ 等。
 

  • 相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Walle Build 91204

© 2007-2009 Powered By 田贤追博客 All rights reserved. 浙ICP备09005319号·