/pattern/ 结果
. 匹配除换行符以外的所有字符
x? 匹配 0 次或一次 x 字符串
x* 匹配 0 次或多次 x 字符串,但匹配可能的最少次数
x+ 匹配 1 次或多次 x 字符串,但匹配可能的最少次数
.* 匹配 0 次或一次的任何字符
.+ 匹配 1 次或多次的任何字符
{m} 匹配刚好是 m 个 的指定字符串
{m,n} 匹配在 m个 以上 n个 以下 的指定字符串
{m,} 匹配 m个 以上 的指定字符串
[] 匹配符合 [] 内的字符
[^] 匹配不符合 [] 内的字符
[0-9] 匹配所有数字字符
[a-z] 匹配所有小写字母字符
[^0-9] 匹配所有非数字字符
[^a-z] 匹配所有非小写字母字符
^ 匹配字符开头的字符
$ 匹配字符结尾的字符
d 匹配一个数字的字符,和 [0-9] 语法一样
d+ 匹配多个数字字符串,和 [0-9]+ 语法一样
D 非数字,其他同 d
D+ 非数字,其他同 d+
w 英文字母或数字的字符串,和 [a-zA-Z0-9] 语法一样
w+ 和 [a-zA-Z0-9]+ 语法一样
W 非英文字母或数字的字符串,和 [^a-zA-Z0-9] 语法一样
W+ 和 [^a-zA-Z0-9]+ 语法一样
s 空格,和 [
f] 语法一样
s+ 和 [
f]+ 一样
S 非空格,和 [^
f] 语法一样
S+ 和 [^
f]+ 语法一样
匹配以英文字母,数字为边界的字符串
B 匹配不以英文字母,数值为边界的字符串
a|b|c 匹配符合a字符 或是b字符 或是c字符 的字符串
(.*?) 匹配任何字符,也匹配空字符 取消懒惰匹配
例子1: 取出IP地址
[oracle@june2 perl]$ cat a10.pl
$var = '[[seri:288i19BF:122.96.47.8_se[[seri:288i19BF:122.96.47.8ssionid:';
if ($var =~ /^[[seri(.*?)(d{1,3}.d{1,3}.d{1,3}.d{1,3})/){
print "$1 is $1
";
print "$2 is $2
";
};
print "-----------------------
";
$var = '[[seri:288i19BF:122.96.47.8_se[[seri:288i19BF:122.96.47.8ssionid:';
if ($var =~ /^[[seri(.*)(d{1,3}.d{1,3}.d{1,3}.d{1,3})/){
print "$1 is $1
";
print "$2 is $2
";
};
[oracle@june2 perl]$ perl a10.pl
$1 is :288i19BF:
$2 is 122.96.47.8
-----------------------
$1 is :288i19BF:122.96.47.8_se[[seri:288i19BF:12
$2 is 2.96.47.8
例子2 取出数字
[oracle@june2 perl]$ cat b1.pl
$var = 'member?id=123&resource=00012';
if ( $var =~ /(d+)(.*)(d+)/) {print $1."
", $2."
", $3."
"};
[oracle@june2 perl]$ perl b1.pl
123
&resource=0001
2
此时$2 懒惰匹配到了&resource=0001
取消懒惰匹配:
[oracle@june2 perl]$ cat b1.pl
$var = 'member?id=123&resource=00012';
if ( $var =~ /(d+)(.*?)(d+)/) {print $1."
", $2."
", $3."
"};
[oracle@june2 perl]$ perl b1.pl
123
&resource=
00012