当前位置 博文首页 > 有关perl正则表达式的一些杂项

    有关perl正则表达式的一些杂项

    作者:admin 时间:2021-02-06 18:21

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

    js
    下一篇:没有了