`
enter775
  • 浏览: 21402 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Reglar Expression

阅读更多

参考:http://zh.wikipedia.org/wiki/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F

 

正则表达式英文Regular Expression )在计算机科学 中,是指一个用来描述或者匹配一系列符合某个句法 规则的字符串 的单个字符串。在很多文本编辑器 或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。许多程序设计语言 都支持利用正则表达式进行字符串操作。例如,在Perl 中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix 中的工具软件(例如sedgrep )普及开的。正则表达式通常缩写成“regex ”,单数 有regexp、regex,复数 有regexps、regexes、regexen。

 

一个正则表达式通常被称为一个模式 (pattern) ,为用来描述或者匹配一系列符合某个句法 规则的字符串

 

历史

 

最初的正则表达式出现于理论计算机科学自动控制 理论和形式化语言 理论中。在这些领域中有对计算(自动控制)的模型和对形式化语言 描述与分类的研究。1940年代 ,Warren McCulloch与Walter Pitts将神经系统 中的神经元描述成小而简单的自动控制元。在1950年代 ,数学家斯蒂芬·科尔·克莱尼 利用称之为“正则集合”的数学符号来描述此模型。肯·汤普逊 将此符号系统引入编辑器QED ,然后是Unix 上的编辑器ed ,并最终引入grep 。自此,正则表达式被广泛地使用于各种Unix或者类似Unix的工具,例如Perl

Perl正则表达式源自于Henry Spencer写的regex,它已经演化成了pcre(Perl兼容正则表达式,Perl Compatible Regular Expressions),一个由Philip Hazel开发的,为很多现代工具所使用的库。

各计算机语言之间的正则表达式的集成目前开展的很差。未来的Perl6的子项目Apocalypse的设计中已考虑到了这点。

 

表达式全集

正则表达式有多种不同的风格。下表是在PCRE中元字符及其在正则表达式上下文中的行为的一个完整列表:

字符 描述 \ ^ $ * + ? {n } {n ,} {n ,m } ? . (pattern) (?:pattern) (?=pattern) (?!pattern) x|y [xyz] [^xyz] [a-z] [^a-z] \b \B \cx \d \D \f \n \r \s \S \t \v \w \W \xn \num \n \nm \nml \un
将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“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 次。例如,“o{2} ”不能匹配“Bob ”中的“o ”,但是能匹配“food ”中的两个o。
n 是一个非负整数。至少匹配n 次。例如,“o{2,} ”不能匹配“Bob ”中的“o ”,但能匹配“foooood ”中的所有o。“o{1,} ”等价于“o+ ”。“o{0,} ”则等价于“o* ”。
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并获取这一匹配。所获取的匹配可以从产生的Matches集合得到,在VBScript中使用SubMatches集合,在JScript中则使用$0…$9属性。要匹配圆括号字符,请使用“\( ”或“\) ”。
匹配pattern但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用或字符“(|) ”来组合一个模式的各个部分是很有用。例如“industr(?:y|ies) ”就是一个比“industry|industries ”更简略的表达式。
正向预查,在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000) ”能匹配“Windows2000 ”中的“Windows ”,但不能匹配“Windows3.1 ”中的“Windows ”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
负向预查,在任何不匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如“Windows(?!95|98|NT|2000) ”能匹配“Windows3.1 ”中的“Windows ”,但不能匹配“Windows2000 ”中的“Windows ”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始
匹配x或y。例如,“z|food ”能匹配“z ”或“food ”。“(z|f)ood ”则匹配“zood ”或“food ”。
字符集合。匹配所包含的任意一个字符。例如,“[abc] ”可以匹配“plain ”中的“a ”。
负值字符集合。匹配未包含的任意字符。例如,“[^abc] ”可以匹配“plain ”中的“p ”。
字符范围。匹配指定范围内的任意字符。例如,“[a-z] ”可以匹配“a ”到“z ”范围内的任意小写字母字符。
负值字符范围。匹配任何不在指定范围内的任意字符。例如,“[^a-z] ”可以匹配任何不在“a ”到“z ”范围内的任意字符。
匹配一个单词边界,也就是指单词和空格间的位置。例如,“er\b ”可以匹配“never ”中的“er ”,但不能匹配“verb ”中的“er ”。
匹配非单词边界。“er\B ”能匹配“verb ”中的“er ”,但不能匹配“never ”中的“er ”。
匹配由x指明的控制字符。例如,\cM匹配一个Control-M或回车符。x的值必须为A-Z或a-z之一。否则,将c视为一个原义的“c ”字符。
匹配一个数字字符。等价于[0-9]。
匹配一个非数字字符。等价于[^0-9]。
匹配一个换页符。等价于\x0c和\cL。
匹配一个换行符。等价于\x0a和\cJ。
匹配一个回车符。等价于\x0d和\cM。
匹配任何空白字符,包括空格、制表符、换页符等等。等价于[\f\n\r\t\v]。
匹配任何非空白字符。等价于[^\f\n\r\t\v]。
匹配一个制表符。等价于\x09和\cI。
匹配一个垂直制表符。等价于\x0b和\cK。
匹配包括下划线的任何单词字符。等价于“[A-Za-z0-9_] ”。
匹配任何非单词字符。等价于“[^A-Za-z0-9_] ”。
匹配n ,其中n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,“\x41 ”匹配“A ”。“\x041 ”则等价于“\x04&1 ”。正则表达式中可以使用ASCII编码。.
匹配num ,其中num 是一个正整数。对所获取的匹配的引用。例如,“(.)\1 ”匹配两个连续的相同字符。
标识一个八进制转义值或一个向后引用。如果\n 之前至少n 个获取的子表达式,则n 为向后引用。否则,如果n 为八进制数字(0-7),则n 为一个八进制转义值。
标识一个八进制转义值或一个向后引用。如果\nm 之前至少有nm 个获得子表达式,则nm 为向后引用。如果\nm 之前至少有n 个获取,则n 为一个后跟文字m 的向后引用。如果前面的条件都不满足,若nm 均为八进制数字(0-7),则\nm 将匹配八进制转义值nm
如果n 为八进制数字(0-3),且m和l 均为八进制数字(0-7),则匹配八进制转义值nm l。

匹配n ,其中n 是一个用四个十六进制数字表示的Unicode字符。例如,\u00A9匹配版权符号

(©)。

分享到:
评论

相关推荐

    Microsoft Expression Blend 4

    Microsoft Expression Blend 4是一款由微软公司推出的交互式设计工具,主要用于创建和设计丰富的用户界面,特别是为Windows平台的应用程序和网络应用程序。该软件特别适用于设计基于Silverlight的程序,Silverlight...

    Expression4J引用的jar包和文档.zip

    Expression4J是一个强大的Java表达式语言库,它允许在运行时动态评估数学和逻辑表达式。这个压缩包包含了Expression4J库所需的jar包以及相关的文档资料,帮助开发者更好地理解和使用这个库。 首先,我们来看看两个...

    Expression解析生成SQL.zip

    Expression自定义生成SQL,可链表、分组、排序、自定义。 Expression是一个可以将Expression表达式树解析成Transact-SQL的项目。只要调用者熟悉基本的Transact-SQL语法即可瞬间无忧开码,大大降低了学习Expression2...

    Expression Encoder 4专业版

    Expression Encoder 4专业版是微软推出的一款强大的视频编码工具,专为内容创作者和专业人士设计,用于制作高质量的数字媒体内容。这款软件具有多种高级功能,能够处理不同类型的媒体文件,并将其编码为适合网络分发...

    spring-expression-5.2.0.RELEASE-API文档-中文版.zip

    赠送jar包:spring-expression-5.2.0.RELEASE.jar; 赠送原API文档:spring-expression-5.2.0.RELEASE-javadoc.jar; 赠送源代码:spring-expression-5.2.0.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-...

    Microsoft.Expression.Interactions 5.0.5.0

    标题中的“Microsoft.Expression.Interactions 5.0.5.0”和描述中的“System.Windows.Interactivity 5.0.5.0”均指向一个关键组件,即微软Expression交互库的一个特定版本。这个库是用于WPF(Windows Presentation ...

    Microsoft.Expression.Encoder.Pro.4_downcc.zip

    标题 "Microsoft.Expression.Encoder.Pro.4_downcc.zip" 指的是 Microsoft Expression Encoder Pro 4 的一个下载压缩包。这个软件是微软推出的一款专业级的视频编码工具,主要用于高质量的视频编码、屏幕录制以及...

    Expression studio2 key

    Microsoft Expression Studio 2是一套由微软发布的用于创建、设计网页和用户界面的工具集合,主要包括Expression Blend 2、Expression Design 2、Expression Web 2等组件。 ### Microsoft Expression Studio 2 概览...

    Regex Expression(正则表达式)

    Regular expression 具有可以表达出难以描述、複杂、但是却有特殊规则的字串的功能,所以许多的 UNIX 工具程式都有支援 Regular expression 的功能。例如 ex 、 vi 、 sed 、 awk 、 grep 、 emacs 等等都有支援。...

    Pro Expression Blend 4 pdf电子书

    本书名为《Pro Expression Blend 4》,是一本专注于Expression Blend软件的学习指南,适合开发者阅读。英文版的电子书内容详实,涵盖了该软件的核心概念和使用技巧,不是简单的扫描版图书,因此可以预见到其中包含了...

    Expression Encoder 4 中文版

    Microsoft Expression Encoder 4 微软出品流媒体编码工具,用于搭建流媒体服务器。

    C#基于表达式(Expression)实现对象深拷贝

    本主题将详细探讨如何使用C#的表达式(Expression)来实现对象的深拷贝。 首先,我们需要理解什么是表达式树(Expression Tree)。表达式树是一种表示代码的抽象数据结构,它能够让我们以数据的形式查看和操作代码...

    开发工具 spring-expression-4.3.6.RELEASE

    开发工具 spring-expression-4.3.6.RELEASE开发工具 spring-expression-4.3.6.RELEASE开发工具 spring-expression-4.3.6.RELEASE开发工具 spring-expression-4.3.6.RELEASE开发工具 spring-expression-4.3.6.RELEASE...

    Expression表达式树缓存 Expression表达式树序列化

    Expression表达式树缓存 Expression表达式树序列化

    Expression

    在IT领域,"Expression"可能指的是多种含义,但在这个场景中,由于标签是"字体",我们可以推测这里的"Expression"可能是指一种特定的字体或相关的文本处理技术。字体是计算机图形学和排版中的一个重要元素,它决定了...

    ExpressionStudio_Ultimate4_v4.0.1165.0.iso

    Microsoft Expression Studio是一套令人印象深刻的工具,用于...这套令人印象深刻的套装包括4种不同的软件应用程序,分别是MS Expression Web 4, Expression Blend 4, Expression Encoder 4 Pro和Expression Design 4。

    spring-expression-5.3.10-API文档-中文版.zip

    赠送jar包:spring-expression-5.3.10.jar; 赠送原API文档:spring-expression-5.3.10-javadoc.jar; 赠送源代码:spring-expression-5.3.10-sources.jar; 赠送Maven依赖信息文件:spring-expression-5.3.10.pom;...

    Expression Web 教程

    Expression Web 教程Expression Web 教程

    Microsoft-Expression-4-快速入门.pdf

    ### Microsoft Expression 4 快速入门知识点概览 #### 一、Microsoft Expression Studio 4 概述 **Microsoft Expression Studio 4** 是一套由微软公司提供的专业设计与开发工具套件,旨在帮助设计师和开发者创建高...

Global site tag (gtag.js) - Google Analytics