我理解的断言

    技术2022-05-20  35

    正则表达式中常用的分组语法有以下几种:

    1.(exp) 匹配exp,并捕获文本到自动命名的组里

    2.(?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)

    3.(?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号

    #!/usr/bin/perl -w use strict; while(<DATA>) { if (/123(?:aa|bb)/) { print "(?:exp) = $_/n"; } } __DATA__ 123aa321 123bb321 123321

      4.(?=exp) 匹配exp前面的内容 

    #!/usr/bin/perl -w use strict; while(<DATA>) { if (/123(?=a)/) { print "(?=exp) = $_/n"; } } __DATA__ 123aa321 123ab321 123bb321 123321

    5.(?<=exp) 匹配exp后面的内容 

    #!/usr/bin/perl -w use strict; while(<DATA>) { if (/(?<=b)321/) { print "(?<=exp) = $_/n"; } } __DATA__ 123aa321 123bb321 123ab321 123321 

     

    6.(?!exp) 匹配后面紧跟的不是exp的内容 

    #!/usr/bin/perl -w use strict; while(<DATA>) { if (/123(?!a)/) { print "(?!exp) = $_/n"; } } __DATA__ 123aa321 123ba321 123ab321 123bb321 123321

    7.(?<!exp) 匹配前面不是exp的内容 

    Execution of 1.pl aborted due to compilation errors. #!/usr/bin/perl -w use strict; while(<DATA>) { if (/(?<!b)321/) { print "(?<!exp) = $_/n"; } } __DATA__ 123aa321 123ba321 123ab321 123bb321 123321

     

    8.(?#comment) 正则表达式用插入注释


    最新回复(0)