• 用正则匹配多行文本


    如果有这样一个字符串

             $var = "src = arr.c build.c eval.c field.c

                                      missing.c msg.c re.c version.c"

    用一般的^w+s*=s*.*$只能匹配上面的那句,而下面的那一句就无法匹配了

    方法一:使用的是perl

    $var = "src = arr.c build.c eval.c field.c 
                              missing.c msg.c re.c version.c";
    
    $var =~ m/((^w+s*=s*.*)(
    .*))/;
    print "$1: ".$1."
    ";
    print "$2: ".$2."
    ";
    print "$3: ".$3."
    ";

     结果为:

    1: src = arr.c build.c eval.c field.c 
                              missing.c msg.c re.c version.c
    2: src = arr.c build.c eval.c field.c 
    3: 
                              missing.c msg.c re.c version.c
    


    注:这里能够匹配成功是因为perl的点号" ."能够匹配除了换行符号之外的字符,然后在加上换行符号" "

    和任意符号".*"就把全部匹配完成了

    方法二:有的正则引擎把点号"."解析可以匹配换行符" "那可以这样

    $var =~ m/((^w+s*=s*[^
    ]*)(
    .*))/

    效果跟刚才的那个一样,只是把点号替换为了"[^ ]",这样就排除了换行符号了。


  • 相关阅读:
    [剑指 Offer 11. 旋转数组的最小数字]
    进程描述符(PCB)
    [剑指 Offer 57. 和为s的两个数字]
    Linux netstat命令
    kafka2.3.X配置文件
    docker
    shell操作mysql数据库
    Linux文件查找之find命令
    sed 切割日志文件
    Linux文本处理之awk
  • 原文地址:https://www.cnblogs.com/pangblog/p/3275789.html
Copyright © 2020-2023  润新知