perl模式匹配总结
1.tr/ / / 替换操作符不支持正则表达式 也不具备双引号替换能力
m/ / s/ / / 都支持正则表达式,并且可以提供或限制双引号替换能力(当用单引号作为操作符时则不具备变量替换能力)
s/ / / , tr/ / / 可以用两组不同的括号进行分割,以保证格式清晰s(good)
2.绑定操作符=~ , !~,m/ / s/ / / tr/ / / 都支持
绑定操作符的优先级非常高
3. perl 特有的全局变量
1. $` , $& , $’ 分别存有匹配内容左,匹配内容,匹配内容右的内容
正则匹配快代理
2. 可以用()捕获特定的模式 并依次存入$1 $2 $3 中
二.模式修饰词
m/ / s/ / / 和tr/ / / 的修饰词不同
#$str =~ s/(s{2,})/'_'x length($1)/eg;
##------结果--------------------
hello_____chinaUnix i am wlj___!
三.m/ / 匹配
1.分隔符
用? 或‘ 作分隔符时有特殊的含义
m?? 表示只匹配一次
m’‘ 表示禁止变量替换和六种转换
2.返回值
标量环境里 匹配成功返回1 ,失败 返回0
列表环境里,返回子字串的列表,并捕获()中的模式
( $key,$value) =~ m/(/w+:(/.*)/ ;
/g 修饰词的返回值
列表环境 : 返回所有匹配字串的列表
如:my @perls = $string =~ m/perl/ig ;
如果有捕获圆括号,则返回捕获到的字串
如: 用字串$string = “password=xyzzy verbose= 9 score=0”
初始化下面的散列:%hash = {password => “xyzzy”, verbose => 9, socre=>0};
%hash = $string =~ /(/w+)=(/w+)/g ;# 利用列表环境下匹配得到数组,再通 # 过数组对散列hash赋值
标量环境中/g表示一次渐进的匹配,它令perl从上一次匹配停下来的位置开始一次新的匹配 如:while (/perl/g) { print “ $& /n”};
三.s/ / / 操作符(替换)
返回值:
标量环境里返回值是成功替换的次数
替换部分被当作双引号看待可进行变量转换,而且可以使用前半部分模式匹配得到的变量$1,$2,$3 $&,等
新的修饰词
/e 把右边当作一个表达式计算
利用s/ / / 修改字串的用法
1.($newStr = $oldStr)=~ s/good/bad/g
2.替换数组的每一个元素:
For (@newArray,@oldArray) {s/$_/newStr/g}
3.用单程循环对同一个变量重复替换
For ($string) {
s/^/s//; # 丢弃开头的空白
s//s$//; # 丢弃结尾的空白
s//s+//g; # 丢弃中间的空白
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论