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小时内删除。