正则表达式:
a # 匹配字母a
$ #匹配字母$
#匹配换行符
[a-z] #匹配任何一个小写字母
. #匹配除
以外的任意字符
1 #反向引用所匹配到的第一组捕获内容
* 匹配0个、1个或多个相同字符
?匹配0个或1个该前一个字符
abc* 表示匹配abc abd abccc ab
+:一个或多个相同的前导字符(模式)
grep:正则表达式只对简单变量匹配,如果是数组@a=~/abc/,则’2’=~/abc/。用grep(/abc/,@a);对数组中的每个元素匹配。
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 匹配不以英文字母,数值为边界的字符串
------------------------------------------------------------------------------
[oracle@june2 2]$ cat a5.pl
my $a = "12-05.92";
if ( $a =~ /d{2}([W])d{2}([W])d{2}/ ){print "111111111
"};
if ( $a =~ /d{2}([W])d{2}1d{2}/ ){print "2222222
"};
[oracle@june2 2]$ perl a5.pl
111111111
[oracle@june2 2]
[oracle@june2 2]$ cat a5.pl
my $a = "12-05-92";
if ( $a =~ /d{2}([W])d{2}([W])d{2}/ ){print "111111111
"};
if ( $a =~ /d{2}([W])d{2}1d{2}/ ){print "2222222
"};
[oracle@june2 2]$ perl a5.pl
111111111
2222222
1
当模式中匹配相同的部分出现多次时,可用括号括起来,用
来多次引用,以简化表达式。
但是匹配的内容必须一致才行,捕获的是定值