perl 正则

s 代表空格

+ 代表重复一次或一次以上

s+ 代表一个或者一个以上空格

[oracle@jhoa ~]$ cat a3.pl 
$command ="ls -ltr";
my ($binary,$var)=split /s+/,"$command";
print "$bibary is $binary
";
print "$var is $var
";


[oracle@jhoa ~]$ perl a3.pl 
$bibary is ls
$var is -ltr

#####################################################
正则表达式
m#[|&><;]#

if ($command =~ m#[|&><;]#) {

m/<regexp>;/  可以简写成/<regexp>;/ 略去m

[oracle@jhoa ~]$ cat a4.pl 
$command = ";";
if ($command =~ m#[|&><;]#) {
print "ok
";
}

[oracle@jhoa ~]$ perl a4.pl 
ok


[oracle@jhoa ~]$ cat a4.pl 
$command = "&";
if ($command =~ m#[|&><;]#) {
print "ok
";
}

[oracle@jhoa ~]$ perl a4.pl 
ok

[oracle@jhoa ~]$ cat a4.pl 
$command = "#";
if ($command =~ m#[|&><;]#) {
print "ok
";
}

[oracle@jhoa ~]$ perl a4.pl 

###########################################################
 [oracle@jhoa ~]$ cat a4.pl 
$command = "> | m";
if ($command =~ m#[|&><;]#) {
my @array=split /|/,"$command";
print "@array is @array:
";
}


[oracle@jhoa ~]$ perl a4.pl 
@array is >   m:

按| 分割,赋值给数组@array

#############################################################
$command =~ /|s*(less|grep|wc)/

匹配| 0个或多个空格 在跟less grep 或wc 

##############################################################

表示单词边界:

[oracle@jhoa ~]$ cat a5.pl 
$command = "lsn ";
 if ($command =~/ls/ ){
print "ok
"}
;

[oracle@jhoa ~]$ perl a5.pl 
[oracle@jhoa ~]$ 

只会匹配到ls 不会匹配lsn

#############################################################
grep m/^$binary/,@allow_command or grep m/^$binary/,@allow_command2 

$binary 匹配数组元素


#######################################################################
字符正则匹配:
$var = "abccc";
if ($var =~ /ab/) {
print ("ok
");
}


数组正则匹配:

[oracle@jhoa ~]$ cat a7.pl 
use strict;
use Switch;
use Sys::Hostname;
use File::Basename;
my $host = hostname;
my $prompt = "$host >";
my @allow_command=(
    "/bin/cat",
    "/bin/ls",
);
my @allow_command2=map {basename("$_") } @allow_command;
print "@allow_command2
";

if (grep m/ls/,@allow_command2 ) {
print "11111111111111111
";
}else {
print "2222222222222222
";}

[oracle@jhoa ~]$ perl a7.pl 
cat ls
11111111111111111

此时ls 匹配数组元素

[oracle@jhoa ~]$ cat a7.pl 
use strict;
use Switch;
use Sys::Hostname;
use File::Basename;
my $host = hostname;
my $prompt = "$host >";
my @allow_command=(
    "/bin/cat",
    "/bin/ls",
);
my @allow_command2=map {basename("$_") } @allow_command;
print "@allow_command2
";

if (grep m/lsa/,@allow_command2 ) {
print "11111111111111111
";
}else {
print "2222222222222222
";}
[oracle@jhoa ~]$ perl a7.pl 
cat ls
2222222222222222

lsa 不匹配数组元素





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