120 likes | 264 Views
正则表达式. 简介. 历史. 正则表达式 (REs) 最早是由数学家 Stephen Kleene 于 1956 年提出,他是在对自然语言的递增研究成果的基础上提出来的。具有完整语法的正则表达式使用在字符的格式匹配方面上,后来被应用到信息技术领域。自从那时起,正则表达式经过几个时期的发展,现在的标准已经被 ISO( 国际标准组织 ) 批准和被 Open Group 组织认定。. 内容.
E N D
正则表达式 简介
历史 • 正则表达式(REs)最早是由数学家Stephen Kleene于1956年提出,他是在对自然语言的递增研究成果的基础上提出来的。具有完整语法的正则表达式使用在字符的格式匹配方面上,后来被应用到信息技术领域。自从那时起,正则表达式经过几个时期的发展,现在的标准已经被ISO(国际标准组织)批准和被Open Group组织认定。
内容 • 正则表达式并非一门专用语言,但它可用于在一个文件或字符里查找和替代文本的一种标准。它具有两种标准:基本的正则表达式(BRE),扩展的正则表达式(ERE)。ERE包括BRE功能和另外其它的概念。 • 许多程序中都使用了正则表达式,包括xsh,egrep,sed,vi以及在UNIX平台下的程序。它们可以被很多语言采纳,如HTML 和XML,这些采纳通常只是整个标准的一个子集
用法 • 正则表达式的关键之处在于确定你要搜索匹配的东西,如果没有这一概念,Res将毫无用处 • 每一个表达式都包含需要查找的指令 • 字符匹配 • 见下页表
重复操作符 • 重复操作符,或数量词,都描述了查找一个特定字符的次数。它们常被用于字符匹配语法以查找多行的字符 • 参见下页表
锚 • 锚是指它所要匹配的格式,如下页图所示。使用它能方便你查找通用字符的合并。例如,我用vi行编辑器命令:s来代表substitute,这一命令的基本语法是: • s/pattern_to_match/pattern_to_substitute/
间隔 • Res中的另一可便之处是间隔(或插入)符号。实际上,这一符号相当于一个OR语句并代表|符号。下面的语句返回文件sample.txt中的“nerd” 和 “merd”的句柄: • egrep “(n|m)erd” sample.txt • 间隔功能非常强大,特别是当你寻找文件不同拼写的时候,但你可以在下面的例子得到相同的结果: • egrep “[nm]erd” sample.txt • 当你使用间隔功能与Res的高级特性连接在一起时,它的真正用处更能体现出来
一些保留字符 • Res的最后一个最重要特性是保留字符(也称特定字符)。例如,如果你想要查找“ne*rd”和“ni*rd”的字符,格式匹配语句“n[ei]*rd”与“neeeeerd” 和 “nieieierd”相符合,但并不是你要查找的字符。因为‘*’(星号)是个保留字符,你必须用一个反斜线符号来替代它,即:“n[ei]\*rd”。其它的保留字符包括:
一些保留字符 • ^ (carat) • . (period) • [ (left bracket} • $ (dollar sign) • ( (left parenthesis) • ) (right parenthesis) • | (pipe) • * (asterisk) • + (plus symbol) • ? (question mark) • { (left curly bracket, or left brace) • \ backslash