perl学习笔记3

对于字符串比较,Perl 有如下的一些有趣的字符串比较符:lt le eq ge gt ne。

(注意,在ASCII 中,大写字母在小写字母的前面)。

相等= = eq

不等!= ne

小于< Lt

大于> gt

小于或等于<= le

大于或等于>= ge

 

$text = “a line of text\n”;

chomp($text); #去掉换行符(\n)。

chomp ($text = <STDIN>); #从键盘读入,去掉换行符

 

正则表达式

查看某个给定文件中是否某行提到过flint,同时同一行后面提到stone

$grep‘flint.*stone’chapter*.txt

 

所有在双引号中的转义字符在模式中均有效,因此你可以使用/coke\tsprite/来匹配11 个字符的字符串coke, tab(制表符),sprite。

 

点(.)是通配符,它可以匹配任何单个的字符,但不包括换行符(“\n”),点(.)只匹配一个字符。

如果想匹配句号,可以使用反斜线。

 

星号(*)表示匹配前一项0次或者多次。

星号(*):“前面的东西,重复任意次数,包括0 次”。

如果希望包括不同的字符(.*)将匹配任意字符任意多次。

加(+)可以匹配前面一项的一个或多个。

问号(?),其含义是前面一个项出现一次,或者不出现。

这三个数量词必须紧跟在某些项的后面,因为它是指前面项重复的次数。

 

模式/(fred)+/能匹配上像fredfredfred 这样的字符串,模式/(fred)*/,将匹配上像hello,world 这样的字符串,星号(*)意指匹配上0 次或者多次fred,当为0 时,那什么字符串都能被匹配上。

竖线(|),匹配左边的或者右边的。/fred|barney|betty/将匹配出现过fred,或者barney,或者betty 的字符串。

/fred( |\t)+barney/匹配fred,barney 以及中间由空格,制表符(tab),或者二者混合所组成的字符串。

/fred( +|\t+)barney/,分隔符必须全是空格或者全是制表符。

 

方括号[]中的一列字符,可以匹配上括号内出现的任意单个字符。

 [\000-\177]可以匹配上任意的七比特的ASCII 字符。

 

 

字符类前使用符号^将取此字符类的补集。[^def]]将匹配上这三个字符中之外的任意单个字符。

 [0-9],可以被简写为:\d。

\w :[A-Za-z0-9_]。

\w 不能匹配单词,而只能匹配单个字符。

为了匹配整个单词,需要后接加号。模式/fred \w+ barney/将匹配fred,空格,一个“单词(word)”,然后是空格和barney。

\s 对于匹配空白(whitespace),它等价于[\f\t\n\r ]。

\s 匹配此类中的单个字符,如果使用\s*将匹配任何个数的空白(包括没有),或者\s+匹配一个以上的空白。

这三种简写形式的补集:[^\d], [^\w], 和[^\s],或使用:\D, \W, \S 。

 

posted @ 2012-08-23 20:42  nalasun  阅读(219)  评论(0编辑  收藏  举报