美文网首页
第9章 用正则表达式处理文本

第9章 用正则表达式处理文本

作者: Hannahhao | 来源:发表于2020-03-08 22:15 被阅读0次

    1. 用s///进行替换操作

    s///替换操作符:substitution,查找并替换功能。把存在变量中的匹配模式的那部分内容替换成另一个字符。



    - 用/g进行全局替换

    - 不同的定界符

    s///的定界符和m//、qw//一样,只要重复三次即可。
    如果有左右之分,就必须使用两对:一对包住模式,一对包住替换字符串。
    s{fred}{barney};

    - 替换操作的修饰符

    /i, /x, /s 都可以用

    - 绑定操作符

    =~ 为绑定操作符

    - 非破坏性替换

    如果需要同时保留原始字符串和替换后的字符串怎么办?
    先复制一份拷贝后再替换

    my $original = "Fred ATE 1 RIB";
    my $copy=$original;
    $copy =~ s/\d+ ribs?/10 ribs/;
    

    或者
    my $copy=$original =~ s/\d+ ribs?/10 ribs/r;
    /r:保留原来字符串变量中的值不变,而把替换结果作为替换操作的返回值返回。

    - 大小写转换

    \U转义符:将其后的所有字符转换成大写的
    \L转义符:将其后的所有字符转换成小写的
    \E:关闭大小写转换的功能

    - 元字符转义

    \Q:会把后续字符串中的所有元字符自动转义为本意字符。

    2. split 操作符

    split操作符:给定模式拆分字符串为一组列表。
    my @fields = split / separator/, $string;


    3. join函数

    join函数:把片段连接成一个字符串。
    my $result = join $glue, @pieces;

    4. 列表上下文中的m//

    5. 更强大的正则表达式

    - 非贪婪量词

    贪婪量词:按照左起最长原则尽可能地多匹配文本
    非贪婪量词:越短越好。加一个问号“?”,就会在第一次找到合适的位置时结束。

    元字符 意义
    ?? 匹配零个字符(没用)
    *? 零个或多个,越短越好
    +? 一个或多个,越多越好
    {3,}? 至少3个,越短越好
    {3,5}? 至少3个,最多5个,越短越好
    {3}? 正好3个

    - 更为别致的单词边界符

    \b{wb}:它会觉得单引号后的t不是独立单词,应该和之前的部分一起成为一个单词
    \b{sb}:推断某个标点符号是句子的末尾。

    - 跨行模式匹配

    传统的正则表达式都是匹配单行文本。但也可以处理多行文本。



    - 一次更新多个文件

    - 从命令行直接替换文件内容

    perl -p -i.bak -w -e 's/randall/Randa/g' fred*.dat
    -p #自动生成小程序
    while (<>) {
    print;
    }
    -w #警告
    -i.bak #备份
    - e # 后面跟的是可供执行的程序源代码
    s/Randall/Randal/g #会被直接当初Perl程序代码
    

    相关文章

      网友评论

          本文标题:第9章 用正则表达式处理文本

          本文链接:https://www.haomeiwen.com/subject/rgzjdhtx.html