perl---regular expression

1. 使用简单的模式
要匹配某个模式(正则表达式)和$_的关系,可以将模式放在正斜线(//)之间,如下:
$_ =“yabba dabba doo”;
if(/abba/){
print “It matched!\n”;
}
表达式/abba/将在$_寻找这四个字母。如果找到,则返回true,在本例中,它出现了不止一次,但结果没什么不同。总之,如果找到了,则匹配上;如果没找到,则没匹配上。由于模式匹配通常返回true 或false,因此经常用在if 或while 的条件表达式部分。所有在双引号中的转义字符在模式中均有效,因此你可以使用/coke\tsprite/来匹配11 个字符的字符串coke, tab(制表符),sprite。
2. 使用m//匹配
我们曾经将模式放在一对正斜线(//)里面,如/fred/。这是m//(模式匹配)的一种简写。同qw//操作一样,可以使用任何
成对的分隔符。因此,可以使用m(fred), m<fred>, m{fred}, m[fred],或者m,fred,, m!fred!, m^fred^,其它非成对的分隔符也
可以◆。◆非配对分隔符是那些“左”和“右”是相同的,两头使用的是同一个符号。
如果使用正斜线(/)作为分隔符,则可以省略掉前面的m。

3.元字符
元字符

含义

^ 只匹配行首
$ 只匹配行尾
* 一个单字符后紧跟*,匹配0个或多个此单字符
[] 匹配[]内字符,可以是一个单字符,也可以是字符序列,可以使用[]表示[]内字符序列范围,如用[1-5]表示[12345]
\ 用来屏蔽一个元字符的特殊含义,因为有时候在shell中一些元字符有特殊含义,用\可以使其失去它原有的含义
. 匹配任意单字符,点(.)是通配符,它可以匹配任何单个的字符,但不包括换行符(“\n”
pattern\{n\} 用来匹配前面pattern的次数,n为次数
pattern\{n,\} 含义为上,但次数至少为n次
pattern\{n,m\} 含义为上,但pattern的次数在n和m之间


4.可选的修饰符
不区分大小写:/i ;if(/yes/i) {#大小写无关
匹配任何字符:/s ;如果你的字符串中有换行符,并希望点(.)能匹配它们,那可以使用/s 这个修饰符。
/Barney.*Fred/s
添加空格:/x ;
符号^(脱字字符◆)表示在字符串的开头进行匹配,而符号$则表示在结尾◆。因此,模式/^fred/只匹配字符串的开头部分;
它不会匹配上manfred man。而/rock$/只在结尾处匹配;其不会匹配上knute rockne。
\b,是针对单词使用的。如/\bfred\b/可以匹配上单词fred,但不能匹配frederick。

5. 绑定操作符,=~
对$_进行匹配只是默认的行为,使用绑定操作符(=~)将告诉Perl 将右边的模式在左边的字符串上进行匹配,而非对$_匹配。

作者: leve1031   发布时间: 2010-11-03