Perl-正则

正则表达式:

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 
当模式中匹配相同的部分出现多次时,可用括号括起来,用
来多次引用,以简化表达式。

但是匹配的内容必须一致才行,捕获的是定值 

原文地址:https://www.cnblogs.com/hzcya1995/p/13351953.html