加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

用正则匹配多行文本

发布时间:2020-12-14 02:17:32 所属栏目:百科 来源:网络整理
导读:如果有这样一个字符串 $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 missin

如果有这样一个字符串

$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*.*)(n.*))/;
print "$1: ".$1."n";
print "$2: ".$2."n";
print "$3: ".$3."n";
结果为:
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的点号" ."能够匹配除了换行符号之外的字符,然后在加上换行符号"n"

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

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

$var =~ m/((^w+s*=s*[^n]*)(n.*))/
效果跟刚才的那个一样,只是把点号替换为了"[^n]",这样就排除了换行符号了。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读