PERL语言中的正则表达式

1.下面的方式都可以用来进行正则表达式:
$string =~ m/$patten/
$string =~ m{$patten}
$string =~ m|$patten|
$string =~ m!$patten!
$string =~ /$patten/

Perl在完成比对之后,如果找到有匹配的,则返回1(true),否则返回空(flase)
2.匹配规则
my $answer = "mo*r";   # *表示o出现0次或任意次数
my $answer = "mo+r";   # +表示o出现至少1次
my $answer = "mo{min, max}r #表示o出现的次数大于等于min小于等于max
my $answer = "(wow)+";  #字符串的匹配
/f(oo|ee)t/   # 找 foot 或 feet
[^24680]  #表示比对24680以外的字符才运运算符合。
[13579]   #表示希望比对的是小于10的奇数
[a-zA-Z_] #字母或底线作为第一个字符
/s:可以处理(/n/t/f/r )这五种字符,/s还会比对藉以表示回行首的/r跟换页字符/f。
/S:正则表达式特殊字符的大小写总是表示相反的意思,例如我们使用/s来表示上面所说的五种空白字符,那么/S也就是排除以上五种字符。
/w:这个特殊字符就等同于[a-zA-Z]的字符集合,例如你可以比对长度为3到10的英文单字,那就要写成:/w{3,10}。
/W:同样的,如果你不希望看到任何在英文字母范围里的字符,不妨就用这个方式避开。
/d:这个特殊的字符就是字符集合[0-9]的缩写。
/D:其实你也可以写成[^0-9],如果你不觉得麻烦的话。
[/d/w_] 表示字母,数字或底线都可以被接受
$content =~ /perl/i; 忽略大小写
$content =~ /like.*monger/s  其中的点标识匹配任意一个字符,最后的一个是表示可以匹配换行符

/^Perl/  ^就是表示字符串开始的位置
/Monger$/ $来表示字符串结束的位置
s/Java/Perl/ 表示使用Perl代替Java
$string =~ m|<table><tr><td>(.+?)<//td><//tr>|   ?表示不贪多比对 

3.例子

持续进行匹配,直到使用者输入含有 monger 的字符串
#usr/bin/perl
my $answer = "monger";
until ((my $patten = <STDIN>) =~ /$answer/) {
print "wrong/n";   # 在这里,表示比对失败
};
------------------------------------------------------------------------
我们想要找到like到monger中间的所有字符,使用/s来要求Perl进行跨行的比对
#usr/bin/perl
my $content = "I like perl. /n I am a perl monger. /n";
if ($content =~ /(like.*monger)/s) {
print "$1/n";
}

输出结果:
like perl.
 I am a perl monger
------------------------------------------------------------------------
#usr/bin/perl
my $content = "I like perl. /n I am a perl monger. /n";
if ($content =~ /((perl)/s(monger))/s) {
print "$1/n$2/n$3/n";
}

输出结果:
perl monger
perl
monger
------------------------------------------------------------------------
假如置换成功,则印出替换过的字符串
#usr/bin/perl
my $content = "I love Java";
print $content if ($content =~ s/Java/Perl/);  # 假如置换成功,则印出替换过的字符串

输出结果:
I love Perl
------------------------------------------------------------------------
把水果全部换成零食吧
#usr/bin/perl
my $content = "水果对我们很有帮助,所以应该多吃水果";
print $content if ($content =~ s/水果/零食/g);  # 把水果全部换成零食吧

输出结果:
零食对我们很有帮助,所以应该多吃零食

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值