zoukankan      html  css  js  c++  java
  • 用正则匹配多行文本

    如果有这样一个字符串

             $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*[^
    ]*)(
    .*))/

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


  • 相关阅读:
    uni-app-数据缓存
    uni-app-网络请求
    uni-app-上拉加载
    uni-app-下拉刷新
    uni-app-生命周期
    uni-app字体图标
    uni-app-样式
    [Python] ValueError: Unknown resampling filter
    [Python]列表复制以及切片[:][::]解析
    LeetCode 29. 两数相除
  • 原文地址:https://www.cnblogs.com/pangblog/p/3275789.html
Copyright © 2011-2022 走看看