如果有这样一个字符串
$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*[^ ]*)( .*))/
效果跟刚才的那个一样,只是把点号替换为了"[^
]",这样就排除了换行符号了。