用正则匹配多行文本
发布时间: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]",这样就排除了换行符号了。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |