- 浏览: 11266 次
最新评论
1. 正则表达式
1.1 什么是正则表达式?
我们将正则表达式看作一种由简单语言实现的程序,这种语言只有一个任务:查找某个字符串,返回"匹配上(it matches)"或者"不匹配(it doesnot match)"。这就是它完成的所有工作。 1.2 使用简单的模式
$_ ="yabba dabba doo"; if(/abba/){ print "It matched!\n"; } 所有在双引号中的转义字符在模式中均有效,因此你可以使用/coke\tsprite/来匹配11 个字符的字符串coke, tab(制表符),sprite。 1.2.1.元字符
点(.)是通配符,它可以匹配任何单个的字符,但不包括换行符("\n")
如果只希望点(.)匹配句号,可以使用反斜线。这条规则对Perl 正则表达式中所有元字符均有效:元字符前使用反斜线将使它变成普通的字符。如,模式/3\.14159/中的点(.)即不是通配符。 1.2.2.简单的量词
星号(*)表示匹配前一项0次或者多次。因此,/fred\t*barney/将匹配上fred 和barney
之间有任意个制表位(tab)的字符串。它可以匹配"fred\tbarney",其间有一个tab;匹配"fred\t\tbarney",其间有两个制表位;"fred\t\t\tbarney"其间有三个制表位;"fredbarney",其间什么也没有。其间可以是任意个制表符,但不能是其它的字符。
因此.*将匹配任意字符任意多数,这就是说模式/fred.*barney/将匹配fred,和barney 之间有任意多个任意字符(不含换行符)的字符串
加(+)也是。加(+)的意思是可以匹配前面一项的一个或多个:/fred +barney/意思是fred 和barney 之间由空格分开,且只能是空格
问号(?),其含义是前面一个项出现一次,或者不出现。也就是说,前面这个项出现1 次或者0 次,此外不会有其它情况。因此,/barm-?bamm/只匹配:bamm-bamm 或bammbamm。
1.2.3.模式中的分组
括号(())用来表示分组,模式/(fred)+/能匹配上像fredfredfred 这样的字符串,这更可能是你所希望的。那么模式/(fred)*/呢?它将匹配上像hello,world 这样的字符串 1.2.4.选择符
竖线(|),在这种用法中通常被读作"或(or)",意思是匹配左边的或者右边的。因此,/fred|barney|betty/将匹配出现过fred,或者barney,或者betty 的字符串。
模式/fred (and|or) barney/能匹配如下两种字符串:fred and barney, fred or barney 1.2.5.字符类
方括号[]中的一列字符,可以匹配上括号内出现的任意单个字符。
例如,字符类[abcwxyz]可以匹配上括号内七个字母中的任意一个。为了方便,我们可以使用连字号(-)来表示某个范围的字母,因此上例也可以写做[a-cw-z]。上面例子省略的字符不多,但像[a-zA-Z]将非常方便,你可以使用和双引号相同的字符简写方法,例如类[\000-\177]可以匹配上任意的七比特的ASCII 字符
$_ = "The HAL-9000 requires authorization to continue.";
if(/HAL-[0-9]+/){
print "The string mentions some model of HAL computer.\n";
}
[^def]将匹配上这三个字符中之外的任意单个字符。[^n\-z]将匹配上n, -, z 之外的任何字符。 1.2.6.字符类的简写
任何数字的类,[0-9],可以被简写为:\d。刚才那个例子可以被写作/HAL-\d+/。
\w 被称作"word'字符:[A-Za-z0-9_]
模式/fred \w+ barney/将匹配fred,空格,一个"单词(word)",然后是空格和barney
\s 对于匹配空白(whitespace)将非常方便。它等价于[\f\t\n\r ],其含5 个空白字符:格式符(form-feed);制表符(tab),换行符,回车,以及空格符 1.2.7.简写形式的补集
你可以使用[^\d], [^\w], 和[^\s],其含义分别是,非数字的字符,非word(记住我们对word 的定义)的字符,和非空白的字符。也可以使用它们对应的大写形式:\D, \W, \S 来完成。
另一个类字符[\d\D],它的意思是任何数字,和任何非数字,则意指任何字符。甚至包括换行符,而点(.)匹配除换行符以外的任何字符。
而[^\d\D]则完全没用,因为它匹配既非数字也非非数字的字符,那什么也不是。
发表评论
-
字符串的存储方式以及静态存储区域、栈、堆
2012-07-06 09:52 621下面两篇文章分析得比较详细.转自http://blog.c ... -
正则表达式测试工具
2012-07-06 09:45 712主要功能, 1.语法高亮显示 2.智能提示 3 ... -
纯css实现未知大小的图片水平垂直居中的方法
2012-07-06 09:30 1090方法一: .box { /*非IE的主流浏览器识别的 ... -
net 2.0下的asp.net ajax基本使用方法 (备忘)
2012-07-05 20:45 654asp.net ajax中用到了几个dll文件,这些可以从 ... -
vb 调用c#做的com 组件
2012-07-03 13:43 1022vb 调用c#做的com 组件 1:建立c# 项目 (注 ... -
flex 界面改进
2012-07-02 12:15 575f 代码如下: ... -
Java Server Push To Flex (ServerPush)
2012-07-02 12:15 574在网上找了许多的Flex与java 通信做ServerPu ... -
flex图片截取保存本地
2012-07-02 12:15 626height="222" creat ... -
Flex4+Spring3+Hibernate3+BlazeDS整合笔记
2012-07-02 12:15 509普通Java Web工程流行使用ssh框架,而当前台使用F ... -
学习flex 初步实现与java进行数据交互
2012-07-01 09:49 481本人是从事BS架构应用开发的,现在发现客户越来越关注用户的 ... -
Flex+BlazeDS整合J2ee示例
2012-07-01 09:49 443一、首先配置好eclipse下Flex开发环境 二、下载部 ... -
将 Flex 3 的应用程序迁移到 Flex 4 ―第 1 部分:将 Flex 3 Dashboard 应用程序导入 Flash Builder 4
2012-07-01 09:49 671本系列一共 4 个部 ... -
Flex嵌入jsp开发心得
2012-07-01 09:49 640PM搞了个外包的小项目,要求使用jsp显示数据统计图表。研 ... -
笔记本频道-eNet笔记本大全-硅
2012-06-30 16:12 624笔记本频道-eNet笔记本大全-硅 2011年09月15日 ... -
笔记本电脑小知识
2012-06-30 16:12 696笔记本电脑小知识 2011年11月22日 笔记本电脑小知 ... -
[独家新闻][热门]【笔记本电脑报价】笔记本电脑
2012-06-30 16:12 341[独家新闻][热门]【笔记本电脑报价】笔记本电脑 2011年 ... -
[热门]【笔记本电脑报价】笔记本电脑
2012-06-30 16:11 303[热门]【笔记本电脑报价】笔记本电脑 2011年08月11日 ...
相关推荐
《学习正则表达式》从正则表达式的基本概念讲起,到编写完整的sed和Perl脚本,再到转换HTML文件,将这种强大的工具解释得清晰透彻。书中贯穿了大量简洁明了的示例,旨在让读者轻松掌握正则表达式。此外,书中各在线...
DEELX 是一个在 C++ 环境下的与 Perl 兼容的正则表达式引擎
如果你曾经用过Perl或任何其他内建正则表达式支持的语言,你一定知道用正则表达式处理文本和匹配模式是多么简单。如果你不熟悉这个术语,那么“正则表达式”(Regular Expression)就是一个字符构成的串,它定义了一...
正则表达式是程序员必备的强大工具,得到了各种Unix实用程序,以及Perl、Java、JavaScript、C#等编程语言的支持。读完本书,你会对正则表达式的常用语法了然于胸。掌握正则表达式是提升编程效率、节约时间的一大法.....
粗略地说,JavaScript 1.2实现了Perl 4的正则表达式,JavaScript 1.5实现了Perl 5的正则表达式的大型子集。 本章定义了正则表达式用来描述文本模式的语法。它还介绍了使用正则表达式的String与RegExp方法。
grep、sed、awk、perl等对正则表达式的支持的差别,大牛总结的,适合高手参考用。
对于如何使用正则表达式来解决性能不佳、误报、漏报等常见的错误以及完成一些常见的任务,《正则表达式经典实例》给出了涉及基于C#、Java、JavaScript、Perl、PHP、Python、Ruby和VB.NET等编程语言的解决方案。...
C语言正则表达式库,兼容perl的正则表达式库,使用简介、方便
Perl兼容正则表达式解析库,本资源包是作者制作的静态库,版本为7.8。使用VC6在WinXp下编译通过。使用时请将pcre.h放到VC的include目录下。
perl 正则表达式 perl 正则表达式 perl 正则表达式
例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成"regex",单数有regexp、regex,复数有regexps、regexes、regexen...
绝大部分的例子是基于vi中的文本替换命令和grep文件搜索命令来书写的,不过它们都是比较典型的例子,其中的概念可以在sed、awk、perl和其他支持正则表达式的编程语言中使用。你可以看看不同工具中的正则表达式这一节...
在几乎所有的基于UNIX/LINUX系统的软件工具中找到正则表达式的痕迹,例 如:Perl或PHP脚本语言。此外,JavaScript这种客户端的脚本语言也提供了对正则表达式的支持,现在正则表达式已经成为了一个通用的概念和工具,...
《学习正则表达式》从正则表达式的基本概念讲起,到编写完整的sed和Perl脚本,再到转换HTML文件,将这种强大的工具解释得清晰透彻。书中贯穿了大量简洁明了的示例,旨在让读者轻松掌握正则表达式。此外,书中各在线...
在学习完该教程后,应该对正则表达式有了初步的了解,并能熟练地运用 java.util.regex 包中的关于正则表达式的类库,为今后学习更高级的正则表达式技术奠定良好的基础。 教程中所有的源代码都在 src 目录下,可以...
《精通正则表达式》是系统学习正则表达式的唯一最权威著作。任何时候,任何地方,只要提到正则表达式著作,人们都会提到这本书。该书质量之高,声誉之盛,使得几乎没有人企图挑战它的地位,从而在正则表达式图书领域...
《学习正则表达式》从正则表达式的基本概念讲起,到编写完整的sed和Perl脚本,再到转换HTML文件,将这种强大的工具解释得清晰透彻。书中贯穿了大量简洁明了的示例,旨在让读者轻松掌握正则表达式。此外,书中各在线...
例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成"regex",单数有regexp、regex,复数有regexps、regexes、regexen...
即使有经验的用户也经常会遇到性能不佳、误报、漏报等让人挠头的错误,本书对于如何使用正则表达式来解决一些常见的问题给出了按部就班的解决方案,其中包括c#、Java、JavaScript、Perl、PHP、Python、Ruby和VB...