$也能匹配\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选项是不起作用的。

标签:
perl,正则表达式

免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
白云城资源网 Copyright www.dyhadc.com

评论“有关perl正则表达式的一些杂项”

暂无“有关perl正则表达式的一些杂项”评论...

稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!

昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。

这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。

而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?