您的位置:技术中心首页 > 工具学习 >> Perl >> 《Learning Perl》学习笔记 -- 第七章 正则表达式的概念

《Learning Perl》学习笔记 -- 第七章 正则表达式的概念

作者:jerry   时间:2007-10-21 08:35:24  来自:网上转载  浏览次数:0  文字大小:【】【】【

笔者注:用过几次正则表达式后,为它的强大与灵活所折服,打算再深入研究一下,本书推荐了Jeffrey E.F.Friedl编著的《Mastering Regular Expression》,已经从图书馆借的,有空研读一下:P

本章主要介绍了正则表达式的概念,还介绍了正则表达式的一些基本要素,如元字符、数量符、模式分组、选择等。

1.正则表达式的概念

书中这段讲的很好,简明易懂,我就照抄了,呵呵

正则表达式(regular expression),在Perl中经常被成为模式(pattern),是与一个给定字符串匹配或不匹配的模板。也就是说,有无限数量可能的文本字符串。一个给定的模式把这个无限集合分成两个组:匹配的组和不匹配的组。不能有“可能”、“也许”、“似乎”之类的匹配:必须是要么匹配,要么不匹配。

正则表达式强调的是一种精确的概念。

2.使用简单的模式

要比较一个模式(正则表达式)和$_的内容,只需把模式放在一对斜杠(/)之间,如下所示:

$_ = "yabba dabba doo";

if (/abba/) {

...

}

表达式/abba/在$_中寻找这个四字符的字符串,如果找到了,返回真;否则,返回假。

这是一种默认模式,在下一章中将介绍如何在一个指定的变量中匹配特定的模式。

所有可以放在双引号字符串中的常见反斜杠转义符都可以被用在模式中。

3.元字符

正则表达式中有一组具有特殊意义的特殊字符,叫做元字符(metacharater)。

句号(.):匹配除了换行符(n)以外的任何单个字符;

反斜杠(\):在任何元字符前加一个反斜杠都会使得它不再特别;\.表示一个句号,\\表示一个反斜杠;

4.数量符(quantifier)

星号(*):匹配前面的条目零次或多次;

加号(+):匹配前面的条目一次或多次;

问号(?):匹配前面的条目零次或一次,即前面的条目是可选的;

这三个数量符都必须跟在某些东西的后面,因为它们就是表示前面的条目可能重复多少次。

5.模式中的分组

在正则表达式中,使用小括号("()")进行分组。譬如,模式/(fred)+/匹配类似于fredfredfred的字符串。

6.选择

竖线表示要么是左侧匹配,要么是右侧匹配,此时读做“或”,也就是说,如果模式中竖线左侧的部分不能匹配,那么右侧的部分就有机会进行匹配。

7.一个模式测试程序

该章给了一个有趣的模式测试程序,可以用来测试自己写的正则表达式是否可以如自己所愿、匹配需要匹配的东西。

#!/usr/bin/perl

while (<>) { #一次得到一个输入行

chomp;

if (/YOUR_PATTERN_GOES_HERE/) {

print "Matched: $`<$&>$'\n"; # <>之间、$后面的是与字符(&)

} else {

print "No match.\n";

}

}

责任编辑:5life

更多相关 perl 的文章

《Learning Perl》学习笔记 -- 第六章 I/O基础 [2007-10-21]
《Learning Perl》学习笔记 -- 第五章 散列 [2007-10-21]
《Learning Perl》学习笔记 -- 第四章 子例程 [2007-10-21]
《Learning Perl》学习笔记 -- 第三章 列表和数组 [2007-10-21]
《Learning Perl》学习笔记 -- 第一章 简介 [2007-10-21]
IC设计工程师的Perl语言学习之路 [2007-10-21]
在Perl中获取当前目录的完整路径 [2007-10-21]
在perl脚本中调用外部命令 [2007-10-21]
使用perl脚本分析timing report [2007-10-21]
本文共有0条评论,现在显示最新的5条。

栏目导航

电路基础
硬件语言
逻辑验证
电路综合
后端设计
可测设计
基本逻辑
制造封装
总线协议
说文解字
工具学习
数字滤波
闲话漫谈
数字锁相
设计杂项
低耗设计

站点最新

更多相关链接

  《Learning Perl》学习笔...
  《Learning Perl》学习笔...
  《Learning Perl》学习笔...
  《Learning Perl》学习笔...
  《Learning Perl》学习笔...
  《Learning Perl》学习笔...
  《Learning Perl》学习笔...
  在Perl中获取当前目录的...
  在perl脚本中调用外部命令
  使用perl脚本分析timing...

栏目最新

更多相关链接

  《Learning Perl》学习笔...
  《Learning Perl》学习笔...
  《Learning Perl》学习笔...
  《Learning Perl》学习笔...
  《Learning Perl》学习笔...
  《Learning Perl》学习笔...
  《Learning Perl》学习笔...
  在Perl中获取当前目录的...
  在perl脚本中调用外部命令
  使用perl脚本分析timing...

热点文章

更多相关链接

  使用perl脚本分析timing report
  在perl脚本中调用外部命令
  在Perl中获取当前目录的完整路径
  《Learning Perl》学习笔记 ...
  《Learning Perl》学习笔记 ...
  《Learning Perl》学习笔记 ...
  《Learning Perl》学习笔记 ...
  《Learning Perl》学习笔记 ...
  《Learning Perl》学习笔记 ...
  《Learning Perl》学习笔记 ...