用正则表达式处理文本

本文介绍Perl中的正则表达式应用技巧,包括替换、大小写转换、非贪婪匹配等功能,以及如何通过Perl命令行工具批量修改文件内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



用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程序处理
 -pwhile(<>){print};
 -i 备份名
 -w开警告
 -e 告诉后面就是可供执行的代码
    等效代码:
       $^I = ".bak";
       while(<>){
           s/Randall/Randal/g;
           print;
       }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值