$也能匹配/n
见Perl语言入门,page 132, 注释6
1 /^.*$/能匹配"/n"么?能!因为$不仅能匹配行尾,也能匹配/n
2 /^.*$/能匹配"b/n"么?能!.能b匹配. /n匹配$
3 /^.*$/能匹配"/nb"么?不能!为什么?因为默认情况下,.不能匹配/n,把模式改一下变成/^.*$/s就可以了,/s表示.能匹配任意字符,包括/n
多行匹配/m
看一个例子,这段代码输出:hello
代码如下:
my $text = "hello, world,/nhello zdd,/nhello autumn";
while ( $text =~ /^hello/g ) {
print "hello/n"
}
稍微改变一下,加上/m选项
代码如下:
my $text = "hello, world,/nhello zdd,/nhello autumn";
while ( $text =~ /^hello/mg ) {
print "hello/n"
}
现在输出变成了
hello
hello
hello
注解:
默认情况下,^和$匹配整个字符串的开头和结尾,但是加上/m之后,^和$就匹配每行的开头和结尾。也就是说,因为字符串中有换行符/n,所以/m选项使得^$匹配每行的开头和结尾。
如果字符串中没有换行符,那么/m选项是不起作用的。
新闻热点
疑难解答