- 浏览: 11918 次
-
最新评论
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 674下面两篇文章分析得比较详细.转自http://blog.c ... -
正则表达式测试工具
2012-07-06 09:45 762主要功能, 1.语法高亮显示 2.智能提示 3 ... -
纯css实现未知大小的图片水平垂直居中的方法
2012-07-06 09:30 1170方法一: .box { /*非IE的主流浏览器识别的 ... -
net 2.0下的asp.net ajax基本使用方法 (备忘)
2012-07-05 20:45 699asp.net ajax中用到了几个dll文件,这些可以从 ... -
vb 调用c#做的com 组件
2012-07-03 13:43 1113vb 调用c#做的com 组件 1:建立c# 项目 (注 ... -
flex 界面改进
2012-07-02 12:15 596f 代码如下: ... -
Java Server Push To Flex (ServerPush)
2012-07-02 12:15 609在网上找了许多的Flex与java 通信做ServerPu ... -
flex图片截取保存本地
2012-07-02 12:15 651height="222" creat ... -
Flex4+Spring3+Hibernate3+BlazeDS整合笔记
2012-07-02 12:15 524普通Java Web工程流行使用ssh框架,而当前台使用F ... -
学习flex 初步实现与java进行数据交互
2012-07-01 09:49 501本人是从事BS架构应用开发的,现在发现客户越来越关注用户的 ... -
Flex+BlazeDS整合J2ee示例
2012-07-01 09:49 485一、首先配置好eclipse下Flex开发环境 二、下载部 ... -
将 Flex 3 的应用程序迁移到 Flex 4 ―第 1 部分:将 Flex 3 Dashboard 应用程序导入 Flash Builder 4
2012-07-01 09:49 701本系列一共 4 个部 ... -
Flex嵌入jsp开发心得
2012-07-01 09:49 664PM搞了个外包的小项目,要求使用jsp显示数据统计图表。研 ... -
笔记本频道-eNet笔记本大全-硅
2012-06-30 16:12 659笔记本频道-eNet笔记本大全-硅 2011年09月15日 ... -
笔记本电脑小知识
2012-06-30 16:12 717笔记本电脑小知识 2011年11月22日 笔记本电脑小知 ... -
[独家新闻][热门]【笔记本电脑报价】笔记本电脑
2012-06-30 16:12 370[独家新闻][热门]【笔记本电脑报价】笔记本电脑 2011年 ... -
[热门]【笔记本电脑报价】笔记本电脑
2012-06-30 16:11 318[热门]【笔记本电脑报价】笔记本电脑 2011年08月11日 ...
相关推荐
在IT领域,文本处理是日常工作中不可或缺的一部分,而grep、sed、awk和perl这四个工具在处理文本时都广泛地使用了正则表达式。它们各自有着不同的特性和适用场景,理解它们之间的差异有助于我们更高效地进行文本操作...
7. **错误处理**:提供了详细的错误报告,帮助开发者调试正则表达式和匹配过程。 在使用PCRE库时,开发者通常需要以下步骤: 1. **编译正则表达式**:调用`pcre2_compile()`函数将正则表达式字符串转换为内部表示...
### 正则表达式基础知识与...对于想要深入学习并掌握正则表达式技术的读者来说,本书无疑是一个非常有价值的参考资料。通过阅读本书,读者不仅可以学到理论知识,还能通过实践案例加深理解,提高解决实际问题的能力。
这款名为"Delphi 2010正则表达式插件"的组件,其核心是基于Perl Compatible Regular Expressions (PCRE)库,这是一款广泛使用的正则表达式库,它对正则表达式的支持非常全面,提供了丰富的功能和语法。在Delphi 2010...
本书主要讲解了正则表达式的特性和流派、匹配原理、优化原则、实用诀窍以及调校措施,并详细介绍了正则表达式在Perl、Java、.NET、PHP中的用法。 本书自第1 版开始着力于教会读者“以正则表达式来思考”,来让读者...
Java正则表达式遵循Perl5的语法,包括元字符(如`.`, `^`, `$`, `*`, `+`, `?`, `{}`, `[]`, `\`, `|`, `(`, `)`)、预定义字符类(如`\d`, `\w`, `\s`)以及量词(如`*`, `+`, `?`, `{n}`, `{n,}`, `{n,m}`)等。 *...
### Perl正则表达式详解 #### 一、正则表达式的三大原则 正则表达式在Perl中的应用广泛,主要用于模式匹配、文本替换以及字符转换。掌握正则表达式的运用,能够极大地提升文本处理的效率和灵活性。以下是正则...
书中的例子涵盖了多种编程语言,如Perl、Java、JavaScript、.NET等,这些语言的正则表达式引擎虽然大同小异,但在细节上有所区别,学习者将了解到如何在不同环境下应用正则表达式。 对于初学者,书中会引导他们理解...
从 Oracle 10g 开始,Oracle 内建了符合 IEEE POSIX (Portable Operating System for Unix)标准的正则表达式,同时也支持 Perl 的正则表达式规则。 正则表达式的组成 ----------------- 正则表达式由一个或多个...
C# 正则表达式大全 正则表达式是指用来描述字符串模式的表达式,通过使用正则表达式,我们可以轻松地实现字符串的匹配、验证、提取和替换等操作。在 C# 中,我们可以使用 System.Text.RegularExpressions 命名空间...
Delphi正则表达式包是为Delphi 7开发者设计的一款强大的文本模式匹配工具,它引入了Perl风格的正则表达式支持。正则表达式(Regular Expression)是一种用于匹配字符串的强大工具,常用于文本搜索、替换和数据提取等...
TPerlRegEx组件是Delphi引入的正则表达式引擎,它基于Perl兼容正则表达式(PCRE)库,提供了丰富的正则表达式功能。下面我们将深入探讨TPerlRegEx组件的使用及其相关知识点。 首先,了解TPerlRegEx组件的基本属性和...
本文将对正则表达式的基础知识进行详细的介绍,从什么是正则表达式开始,逐步深入浅出地讲解正则表达式的基本概念、正则表达式引擎、文字符号、特殊字符、不可显示字符、正则表达式引擎的内部工作机制等。...
3. **Perl兼容正则表达式**(Perl Compatible Regular Expressions, PCRE):由Perl语言推广开来,成为最常用的正则表达式标准之一。 4. **其他引擎**:如.NET、Java等都有自己独特的实现。 #### 五、正则表达式的...
Perl兼容正则表达式解析库,本资源包是作者制作的静态库,版本为7.8。使用VC6在WinXp下编译通过。使用时请将pcre.h放到VC的include目录下。
例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成"regex",单数有regexp、regex,复数有regexps、regexes、regexen...
正则表达式是一种强大的文本处理工具,用于模式匹配和字符串搜索。它是由特定字符组成的字符串,...通过不断实践和学习,你可以利用正则表达式解决各种文本处理问题,无论是在Java还是其他支持正则表达式编程环境中。
.NET正则表达式引擎的设计是为了与Perl 5正则表达式兼容,尽管它有一些差异。 正则表达式的优点包括: 1. 强大的模式匹配能力 2. 高效的字符串处理 3. 广泛的应用场景 然而,正则表达式也有一些缺点,例如: 1. ...
随着时间的推移,正则表达式成为了多种编程语言和文本编辑器的标准功能,如Perl、PHP、Python、JavaScript和Java等。 Java正则表达式虽然与其他语言的正则表达式有相似之处,但它们并不完全相同,有自己的语法和...
通过这些教程,你可以深入理解正则表达式的核心概念,并学习如何在不同语言环境中使用它们。每个文档都可能涵盖特定语言的正则表达式用法和示例,帮助你在实践中提升对正则表达式的掌握。无论是进行简单的文本查找,...