• 模式匹配修饰符


    用/i进行大小写无关的匹配

    use 5.010;
    print "Would you like to play a game?";
    chomp($_=<STDIN>);
    if (/yes/i) {
        say "In that case,I recommend that you to bowling.";
    }

    用/s匹配任意字符

    默认情况下,点号(.)无法匹配换行符,如果希望点号能匹配这些换行符,那么/s修饰符可以完成这个任务。

    use 5.010;
    
    $_="I saw Barney
    down at the bowling alley
    with Fred
    last night.";
    if (/Barney.*Fred/s) {
        say "That string mentions Fred after Barney!";
    }

    用/x加入空白符

    允许我们在模式里随意加上空白符,从而使它更易阅读,理解。
    由于加上/x后模式里可以随意插入空白,所以原来表示空白和制表符本身的空白符就失去了意义,perl会直接忽略。
    但我们总可以通过转义方式变通实现,s(或者s*,或是s++),表示匹配空白符。
    Perl 还会把模式中出现的注释当作空白符直接忽。

    /
        -?          #一个可有可无的减号
        [0-9]+      #小数点前必须出现一个或多个数字
        .?         #一个可有可无的小数点
        [0-9]*      #小数点后面的数字,有没有都没关系
    /x              #字符串末尾

    组合选项修饰符

    如果需要对单次匹配使用多项修饰符,只需要把它们接在一起写在模式末尾(不用在意先后顺序):

    if (m{
          barney  # 小伙子barney
          .*      # 夹在中间不管什么字符
          fred    # 大嗓门的fred
       }six) {    # 同时使用 /s /i /x
          print "That string menthions Fred after Barney!
    ";
    
     }

    选择一种字符解释方式

    Perl 5.14开始增加一些用于通知perl如何解释字符意义的修饰符。
    总共有三种字符解释方式:ASCII Unicode locale 修饰符/a告诉Perl采取ASCII模式,而/u则表示采取Unicode方式,
    最后/l表示遵从本地化语言的设定。 如果不提供这类修饰符,Perl会根据perlre文档描述的方式采取最为妥帖的行为。而通过使用
    修饰符,你可以显示制定程序确切的行为。

    use 5.014;
    
     /w+/a    #仅仅是 A-Z a-z 0-9 _ 这些字符
     /w+/u    #任何Unicode当中定义为单词的字符
     /w+/l    #类同于ASCII的版本,但单词字符的定义取决于本地化设定
  • 相关阅读:
    k8s资源编排
    虫师『软件测试』基础 与 测试杂谈
    虫师『性能测试』文章大汇总
    OMCS ——卓尔不群的网络语音视频聊天框架(跨平台)
    ESFramework ——成熟的C#网络通信框架(跨平台)
    2022.2 区块链的技术架构
    pytest文档80 内置 fixtures 之 cache 写入中文显示\u4e2d\u6587问题(用打补丁方式解决) 上海
    翻译校正
    Inside WCF Runtime
    Web Services Security
  • 原文地址:https://www.cnblogs.com/tjxwg/p/3323625.html
Copyright © 2020-2023  润新知