阅读量:3
正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。
Perl语言的正则表达式功能非常强大,基本上是常用语言中最强大的,很多语言设计正则式支持的时候都参考Perl的正则表达式。
Perl的正则表达式的三种形式,分别是匹配、替换和转化:
匹配:m//(还可以简写为//,略去m)
替换:s///
转化:tr///
这三种形式一般都和 =~ 或 !~ 搭配使用, =~ 表示相匹配,!~ 表示不匹配。
1.匹配操作符
匹配操作符 m// 用于匹配一个字符串语句或者一个正则表达式。
例如,匹配标量str中的字符串”123”;
#! /usr/bin/perl $str="正则表达式使用,匹配参数123,456,798!"; if($str=~"123")#=~表示相匹配 { printf("匹配成功\n"); } else { printf("匹配失败\n"); }
2.模式匹配修饰符
正则表达式变量
perl处理完后会给匹配到的值存在三个特殊变量名:
$`: 匹配部分的前一部分字符串
$&: 匹配的字符串
$': 还没有匹配的剩余字符串
示例:
#! /usr/bin/perl $str="正则表达式使用,匹配参数123,456,798!"; print "原始字符串:$str\n"; if($str=~"123")#=~表示相匹配 { printf("匹配成功,匹配字符串之前内容:$`\n"); printf("要匹配的字符串:$&\n"); printf("匹配的字符串之后的内容:$'\n"); } else { printf("匹配失败\n"); }
不区分大小写示例:
#! /usr/bin/perl $str="hello,welcomewByQ"; if($str=~/WBYQ/i) #i表示不区分大小写 { print "匹配成功,匹配字符串:$&\n"; print "匹配前面字符:$`"; }
示例:
[wbyq@wbyq 0709]$ ./1.pl 匹配成功,匹配字符串:wByQ 匹配前面字符:hello,welcome
3.替换操作符
替换操作符s///是匹配操作符的扩展,使用新的字符串替换指定的字符串。基本格式如下:
格式:s/PATTERN/REPLACEMENT/;
PATTERN 为替换内容;
REPLACEMENT 为要替换的字符串;
示例:
#! /usr/bin/perl $str="hello,wbyq,welcome!"; print "$str\n"; $str=~s/wbyq/WBYQ/; #将"wbyq"替换为"WBYQ" print "$str\n";
运行效果:
[wbyq@wbyq 0709]$ ./1.pl hello,wbyq,welcome! hello,WBYQ,welcome!
4.替换操作修饰符
替换操作修饰符如下表所示:
5.转化操作符
以下是转化操作符相关的修饰符:
#! /usr/bin/perl $str="hello,welcomewByQ"; $str=~tr/a-z/A-Z/;#将所有的小写转换为大写 print "$str\n"; $str="hello,aaa,bbb,ccc,DDD"; print "原字符串:$str\n"; $str=~tr/a-z,A-Z//s; #将重复的字符删除 print "原字符串:$str\n";
运行效果:
[wbyq@wbyq 0709]$ ./1.pl HELLO,WELCOMEWBYQ 原字符串:hello,aaa,bbb,ccc,DDD 原字符串:helo,a,b,c,D