perl 模式匹配参数详解

2019-10-01 15:03:26刘景俊
b 匹配单词边界 B 单词内部匹配

   例1:/^def/只匹配以def打头的字符串,/$def/只匹配以def结尾的字符串,结合起来的/^def$/只匹配字符串def(?)。A和Z在多行匹配时与^和$不同。
   例2:检验变量名的类型:
     if ($varname =~ /^$[A-Za-z][_0-9a-zA-Z]*$/) {
       print ("$varname is a legal scalar variablen");
     } elsif ($varname =~ /^@[A-Za-z][_0-9a-zA-Z]*$/) {
       print ("$varname is a legal array variablen");
     } elsif ($varname =~ /^[A-Za-z][_0-9a-zA-Z]*$/) {
       print ("$varname is a legal file variablen");
     } else {
       print ("I don't understand what $varname is.n");
    }
   例3:b在单词边界匹配:/bdef/匹配def和defghi等以def打头的单词,但不匹配abcdef。/defb/匹配def和abcdef等以def结尾的单词,但不匹配defghi,/bdefb/只匹配字符串def。注意:/bdef/可匹配$defghi,因为$并不被看作是单词的部分。
   例4:B在单词内部匹配:/Bdef/匹配abcdef等,但不匹配def;/defB/匹配defghi等;/BdefB/匹配cdefg、abcdefghi等,但不匹配def,defghi,abcdef。
7、模式中的变量替换
   将句子分成单词:
     $pattern = "[t ]+";
     @words = split(/$pattern/, $line);
8、字符范围转义

E 转义字符 描述 范围
d 任意数字 [0-9]
D 除数字外的任意字符 [^0-9]
w 任意单词字符 [_0-9a-zA-Z]
W 任意非单词字符 [^_0-9a-zA-Z]
s 空白 [ rtnf]
S 非空白 [^ rtnf]

   例:/[da-z]/匹配任意数字或小写字母。
9、匹配任意字符
   字符"."匹配除换行外的所有字符,通常与*合用。
10、匹配指定数目的字符