找回密码
 注册
查看: 2248|回复: 0

perl语言中什么是正则表达式

[复制链接]
发表于 2011-11-14 20:29:57 | 显示全部楼层 |阅读模式
正则表达式,在Perl 中通常被称为模式(pattern):某个模板是否匹配某个字符串◆。由于存在无限的字符串,某个给定的模
式将这些字符串分成两类:一类是能匹配的,一类是不能匹配的。这里没有,或者,大概,几乎那样的匹配:要么匹配,
要么不匹配。
◆某些学究可能认为这个定义不够严格。他们可能会说Perl 的模式根本不是真正意义上的正则表达式。如果你想知道更多的关于正则表达
式的信息可以参看Jeffrey Friedl(O’Reily)的书籍《掌握正则表达式》(Mastering Regular Expessions)。
一个模式可以匹配多个字符串:1个,2个,3个,上百个,或者无限个。也可能匹配除了1个,多个,或者无限个字符
串之外的所有字符串◆。我们将正则表达式看作一种由简单语言实现的程序,这种语言只有一个任务:查找某个字符串,
返回“匹配上(it matches)”或者“不匹配(it doesnot match)”◆。这就是它完成的所有工作。
◆将学习到,你可以让某个模式永远匹配或者永不匹配。在极少情况下,这也是有用的,但通常是错误。
◆程序也返回一些信息给Perl。其中的一种信息是“正则表达式内存(regular expressions memories)”,这将在后面会学习到。
你可能在使用Unix 的grep 命令时,见过正则表达式,它会输出匹配上模式的行。例如,如果想查看某个给定文件中是否
某行提到过flint,同时同一行后面提到stone,那你可以如下的使用grep 命令:
$grep‘flint.*stone’chapter*.txt
chapter3.txt:a piece of flint, a stone which may be used to start a fire by striking
chapter3.txt:found obsidian, flint, granite, and small stones of basaltic rock, which
chapter9.txt:a flintlock rifle in poor condition. The sandstone mantle held several
不要将正则表达式和shell 中的文件名匹配模式,globs 混淆了。通常glob 是指,在Unix shell 下输入*.pm 将匹配所有结尾
为.pm 的文件名。上一个例子使用的glob 为chapter*.txt。(你可能已经注意到我们将模式括起来了,来防止shell 将其作为
glob 来处理)虽然glob 和正则表达式有许多相同的符号,但其作用并不相同◆。
◆globs 有时也被称作模式。但严重的问题是,某些面向初级用户的书籍(可能是菜鸟写得)将globs 叫做“正则表达式”,这绝对是错误
的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|小黑屋|生物统计家园 网站价格

GMT+8, 2024-11-21 23:28 , Processed in 0.023692 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表