前端之家收集整理的这篇文章主要介绍了
perl 正则,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
\s 代表空格
+ 代表重复一次或一次以上
\s+ 代表一个或者一个以上空格
[oracle@jhoa ~]$ cat a3.pl
$command ="ls -ltr";
my ($binary,$var)=split /\s+/,"$command";
print "\$bibary is $binary\n";
print "\$var is $var\n";
[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\n";
}
[oracle@jhoa ~]$ perl a4.pl
ok
[oracle@jhoa ~]$ cat a4.pl
$command = "&";
if ($command =~ m#[|&><;]#) {
print "ok\n";
}
[oracle@jhoa ~]$ perl a4.pl
ok
[oracle@jhoa ~]$ cat a4.pl
$command = "#";
if ($command =~ m#[|&><;]#) {
print "ok\n";
}
[oracle@jhoa ~]$ perl a4.pl
###########################################################
[oracle@jhoa ~]$ cat a4.pl
$command = "> | m";
if ($command =~ m#[|&><;]#) {
my @array=split /\|/,"$command";
print "\@array is @array:\n";
}
[oracle@jhoa ~]$ perl a4.pl
@array is > m:
按| 分割,赋值给数组@array
#############################################################
$command =~ /\|\s*(less|grep|wc)/
匹配| 0个或多个空格 在跟less grep 或wc
##############################################################
\b
表示单词边界:
[oracle@jhoa ~]$ cat a5.pl
$command = "lsn ";
if ($command =~/ls\b/ ){
print "ok\n"}
;
[oracle@jhoa ~]$ perl a5.pl
[oracle@jhoa ~]$
只会匹配到ls 不会匹配lsn
#############################################################
grep m/^$binary\b/,@allow_command or grep m/^$binary\b/,@allow_command2
$binary 匹配数组元素
#######################################################################
字符正则匹配:
$var = "abccc";
if ($var =~ /ab/) {
print ("ok\n");
}
数组正则匹配:
[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\n";
if (grep m/ls/,@allow_command2 ) {
print "11111111111111111\n";
}else {
print "2222222222222222\n";}
[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",);
my @allow_command2=map {basename("$_") } @allow_command;
print "@allow_command2\n";
if (grep m/lsa/,@allow_command2 ) {
print "11111111111111111\n";
}else {
print "2222222222222222\n";}
[oracle@jhoa ~]$ perl a7.pl
cat ls
2222222222222222
lsa 不匹配数组元素