|
发表于 2004-5-2 20:19:50
|
显示全部楼层
在只用m修饰词的情况下:
1、^和$匹配随后嵌入的\n(这点roby已经说了);
2、“.”不匹配“\n”;
3、“\s”匹配“\n”;
如果把表达式改成:
$string =~ /^(\w+)\s*((.*\s)*)(\w+)?$/m;
那么$2就等于:
- up
- eat an apple
- go to the
复制代码
其中"up\n"匹配第一个(.*\s);
"eat an apple\n"匹配第二个(.*\s);
"go to the\n"匹配第二个(.*\s)。
在缺省状态下,perl总是试图匹配尽可能多的次数。
如果你想要:
$1 eq 'wake';
$2 eq '';
$3 eq 'up';
这样的结果,那就把表达式改成:
$string =~ /^(\w+)\s*(.*\s)*?(\w+)?$/m;
这样才行。 |
|