用正则表达式处理文本



用s///进行替换:

   和m//用法一样,返回的是布尔值,替换成功为真,失败为假。
    例:
    $_ = "He'sout bowling with Barney tonight.";
   s/Barney/Fred/;  #把Barney替换成Fred, 也可以捕获位置,s///只会进行一次替换

用/g进行全部替换:

   例:s/^\s+|\s+$//g;  #去除所有开头和结尾空白符

不同的定界符:

    s///可以用其他定界符,不成对的定界符用3个就可以,如果是成对的定界符,就要用两对。
   例:s{fred}{barney}

大小写转换:


 \U 所有变大写
 \L  所有变小写
 \E  关闭大小写功能
 \u  只对一个字母大写
 \l  只对一个字母小写

split操作符:

    例:@array =split/\t/,"字符串";
   把字符串以制表符分割,分割后放到数组array中,\t的位置放的是分割的符号,若只要split没有其他参数,会默认以空白符分割$_中字符串。

join操作符:

   和split相反,把所有的都组合起来。
    用法:my $结果 =join "连接符",字符串1,字符串2,字符串3,字符串4...;
    例:my $x =join "-",1,2,3,4;
   结果:1-2-3-4

非贪婪量词:

   +、*、?、{n,m}等都是贪婪量词,在后面加上一个?问号,如:+?,使它尽可能少的从头到位匹配。

一次更新多个文件:

   $^I中是个字符串,该字符中就会变成备份文件的扩展名(要和<>一起使用)。
   流程:①打开要操作的文件,并把名改成$^中字符串为结尾的名字。②然后打开一个新文件,起名为源文件的名。③把输出变为新文件,写到新文件中。
   例:
    chomp(my$date:'date');
    $^I =".bak";
    while(<>){
       s/^Author:.*/Author:Randa L Schwartz/;
       s/^Phone:.*\n///
       s^Pate:.*/Date:$date/;
}

从命令行直接编辑:

    例:perl -p -i.bak -w -e 's/Randall/Randal/g' fred*.dat;
 perl 以perl程序处理
 -p while(<>){print};
 -i  备份名
 -w 开警告
 -e  告诉后面就是可供执行的代码
    等效代码:
       $^I = ".bak";
       while(<>){
           s/Randall/Randal/g;
           print;
       }


你可能感兴趣的:(Perl)