设为首页 收藏本站
查看: 953|回复: 0

[经验分享] perl学习笔记(六)--正则

[复制链接]

尚未签到

发表于 2017-5-17 09:50:44 | 显示全部楼层 |阅读模式
#!/usr/bin/perl
use 5.010;
=pod
perl中表达式三种形式:
1、匹配:m/<regexp>;/mosxg cg
2、替换:s/<pattern>;/<replacement>;/mosxge g表示全部替换,而不是只替换首次出现的;e表示把<replacement>;当做一个运算符;
3、转化:tr/<pattern>;/<replacement>;/cds
=~ 表示匹配
!~ 表示不匹配
默认处理$_变量
=cut
my $str = "I Love Perl";
say $str =~ m/Perl/; #如果在$str中发现'Perl'字符串,则说明匹配成功,返回1,否则返回0   #结果为:1
say $str =~ s/Perl/Bash/; #表示将标量$str中的'Perl'替换成'Bash',替换成功则返回1,否则返回0   #结果为:1
say $str !~ tr/A-Z/a-z/; #表示将变量$str中的所有大写字母转化为小写字母,如果转化发生了则返回0,否则返回1   #结果为:
my $string = "I Love Perl";
$string =~ s/(Love)/<$1>;/;
say $string; #结果为:I <Love>; Perl
$string = "I Love Perl";
$string =~ s/(I)(.*)(Perl)/<$3>;$2<$1>;/;
say $string; #结果为:<Perl>; Love <I>;

$str = "i:love:perl";
$str =~ s/:/*/;
say $str;#结果为:i*love:perl
$str =~ s/:/*/g;
say $str;#结果为:i*love*perl
$str !~ tr/*/ /;
say $str;#结果为:i love perl
$str = "www22cgi44";
$str =~ s/(\d+)/$1*2/eg;
say $str;#结果为:www44cgi88

$str = "Hello World,Hello Perl.";
$str =~ tr/a-z/a-z/s;
say $str;#结果为:Helo World,Helo Perl.
#匹配边界
#\b匹配任何单词边界,\w类和\W类之间的区别定义。
#因为\w一个字的字符,\W相反,这通常是指一个词的终止。
#\B断言不是一个单词边界匹配任何位置
$str = "the cat sat";
say $str =~ /\bcat\b/; #结果为1
$str = "cat on the mat";
say $str =~ /\bcat\b/; #结果为1
$str = "verification";
say $str =~ /\Bcat\B/; #结果为1
$str = "the cat on the mat";
say $str =~ /\Bcat\B/; #结果为
$str = "catatonic";
say $str =~ /\bcat\B/; #结果为1
$str = "polecat";
say $str =~ /\bcat\B/; #结果为
$str = "polecat";
say $str =~ /\Bcat\b/; #结果为1
$str = "catatonic";
say $str =~ /\Bcat\b/; #结果为
$date = '03/26/1999';
$date =~ s#(\d+)/(\d+)/(\d+)#$3/$1/$2#;
say $date;#结果为:1999/03/26
#使用\G断言
#\G断言,让您可以继续搜索从最后一个匹配发生的点。
#例如,在下面的代码,我们使用的\G,使我们可以搜索到正确的位置,
#然后提取一些信息,而无需创建一个更复杂的,单一的正则表达式:
$string = "The time is: 12:31:02 on 4/12/2015";
$string =~ /:\s+/g;
($time) = ($string =~ /\G(\d+:\d+:\d+)/);
$string =~ /.+\s+/g;
($date) = ($string =~ m{\G(\d+/\d+/\d+)});
print "Time: $time, Date: $date\n";
say "----正则表达式中的变量----";
#正则表达式中的变量
#$ ,包含匹配无论最后的分组匹配
#$&,其中包含整个匹配的字符串
#$`,其中包含匹配字符串前的一切字符
#$',其中包含匹配的字符串后的一切字符。
$string = "The food is in the salad bar";
$string =~ m/foo/;
say "Before: $`",length($`);
say "Matched: $&",length($&);
say "After: $'",length($');
##?Pattern?仅仅匹配一次
@list = qw/food foosball subeo footnote terfoot canic footbrdige/;
foreach (@list){
$first = $1 if ?(foo.*)?;
$last = $1 if /(foo.*)/;
}
print "First: $first, Last: $last\n"; #结果为:First: food, Last: footbrdige

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-378380-1-1.html 上篇帖子: 使用CPAN安装Perl模块 下篇帖子: PERL splice函数的用法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表