• 捕获变量


    $_ = "Hello there neighbor";
    if (/(S+) (S+), (S+)/) {
        print "words were $1 $2 $3
    ";
    }

    捕获变量的存续期

    这些捕获变量通常能存活到下次成功匹配为止。也就是说,失败的匹配不会改动上次匹配时的捕获内容,而成功的匹配会将他们的值重置。

    不捕获模式

    在左括号后面加上问号和冒号(?:),告诉Perl这一对圆括号完全是为了分组而存在的。

    if(/(?:bronto)?saurus (steak|burger)/){
        print "Fred wants a $1
    ";
    }

    命名捕获

    Perl 5.10 增加了对捕获内容直接命名的写法。 最终捕获到的内容会保存在特殊哈希
    %+里面:其中键就是捕获时用的特殊标签,对应的值则是捕获的字符串
    具体写法(?<LABEL>PATTERN),其中LABEL可以自行命名。

    use 5.010;
    
    my $names = 'Fred or Barney';
    if ($names =~ m/(?<name1>w+/) (?:and|or) (?<name2>w+/){
        say "I saw $+{name1} and $+{name2}";
    }

    在使用捕获标签后,反向引用的写法也随之有所变化。 现在采用g{label}这样的写法

    use 5.010;
    my $names = 'Fred Flintstone and Wilma Filintstone';
    
    if ($name =~ m/(?<last_name>w+)/ and w+ g{last_name} ){
        say "I saw $+{last_name}";
    }

    我们也以用另一种语法来表示反向引用。
    k<label> 等效于 g{label}

  • 相关阅读:
    Django URL
    django初识
    django 相关配置(pycharm)
    mysql数据库语言分类
    css常用
    Django—BBS注册页面
    Django—Auth认证模块
    Django—中间件
    Django—form组件,cookie和session
    Django—AJAX
  • 原文地址:https://www.cnblogs.com/tjxwg/p/3323797.html
Copyright © 2020-2023  润新知