This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Arguments to skip were the wrong way round, hence why all the *BSDs
[perl5.git] / t / op / re_tests
index 5816601..1bec50b 100644 (file)
@@ -1,24 +1,54 @@
 abc    abc     y       $&      abc
+abc    abc     y       $-[0]   0
+abc    abc     y       $+[0]   3
 abc    xbc     n       -       -
 abc    axc     n       -       -
 abc    abx     n       -       -
 abc    xabcy   y       $&      abc
+abc    xabcy   y       $-[0]   1
+abc    xabcy   y       $+[0]   4
 abc    ababc   y       $&      abc
+abc    ababc   y       $-[0]   2
+abc    ababc   y       $+[0]   5
 ab*c   abc     y       $&      abc
+ab*c   abc     y       $-[0]   0
+ab*c   abc     y       $+[0]   3
 ab*bc  abc     y       $&      abc
+ab*bc  abc     y       $-[0]   0
+ab*bc  abc     y       $+[0]   3
 ab*bc  abbc    y       $&      abbc
+ab*bc  abbc    y       $-[0]   0
+ab*bc  abbc    y       $+[0]   4
 ab*bc  abbbbc  y       $&      abbbbc
+ab*bc  abbbbc  y       $-[0]   0
+ab*bc  abbbbc  y       $+[0]   6
 .{1}   abbbbc  y       $&      a
+.{1}   abbbbc  y       $-[0]   0
+.{1}   abbbbc  y       $+[0]   1
 .{3,4} abbbbc  y       $&      abbb
+.{3,4} abbbbc  y       $-[0]   0
+.{3,4} abbbbc  y       $+[0]   4
 ab{0,}bc       abbbbc  y       $&      abbbbc
+ab{0,}bc       abbbbc  y       $-[0]   0
+ab{0,}bc       abbbbc  y       $+[0]   6
 ab+bc  abbc    y       $&      abbc
+ab+bc  abbc    y       $-[0]   0
+ab+bc  abbc    y       $+[0]   4
 ab+bc  abc     n       -       -
 ab+bc  abq     n       -       -
 ab{1,}bc       abq     n       -       -
 ab+bc  abbbbc  y       $&      abbbbc
+ab+bc  abbbbc  y       $-[0]   0
+ab+bc  abbbbc  y       $+[0]   6
 ab{1,}bc       abbbbc  y       $&      abbbbc
+ab{1,}bc       abbbbc  y       $-[0]   0
+ab{1,}bc       abbbbc  y       $+[0]   6
 ab{1,3}bc      abbbbc  y       $&      abbbbc
+ab{1,3}bc      abbbbc  y       $-[0]   0
+ab{1,3}bc      abbbbc  y       $+[0]   6
 ab{3,4}bc      abbbbc  y       $&      abbbbc
+ab{3,4}bc      abbbbc  y       $-[0]   0
+ab{3,4}bc      abbbbc  y       $+[0]   6
 ab{4,5}bc      abbbbc  n       -       -
 ab?bc  abbc    y       $&      abbc
 ab?bc  abc     y       $&      abc
@@ -66,6 +96,9 @@ a[^]b]c       adc     y       $&      adc
 \Ba\B  -a      n       -       -
 \Ba\B  -a-     n       -       -
 \By\b  xy      y       -       -
+\By\b  xy      y       $-[0]   1
+\By\b  xy      y       $+[0]   2
+\By\b  xy      y       -       -
 \by\B  yz      y       -       -
 \By\B  xyz     y       -       -
 \w     a       y       -       -
@@ -95,6 +128,10 @@ a[\S]b      a-b     y       -       -
 ab|cd  abc     y       $&      ab
 ab|cd  abcd    y       $&      ab
 ()ef   def     y       $&-$1   ef-
+()ef   def     y       $-[0]   1
+()ef   def     y       $+[0]   3
+()ef   def     y       $-[1]   1
+()ef   def     y       $+[1]   1
 *a     -       c       -       Quantifier follows nothing
 (*)b   -       c       -       Quantifier follows nothing
 $b     b       n       -       -
@@ -106,12 +143,22 @@ a\\b      a\b     y       $&      a\b
 abc)   -       c       -       Unmatched )
 (abc   -       c       -       Unmatched (
 ((a))  abc     y       $&-$1-$2        a-a-a
+((a))  abc     y       $-[0]-$-[1]-$-[2]       0-0-0
+((a))  abc     y       $+[0]-$+[1]-$+[2]       1-1-1
+((a))  abc     b       @-      0 0 0
+((a))  abc     b       @+      1 1 1
 (a)b(c)        abc     y       $&-$1-$2        abc-a-c
+(a)b(c)        abc     y       $-[0]-$-[1]-$-[2]       0-0-2
+(a)b(c)        abc     y       $+[0]-$+[1]-$+[2]       3-1-3
 a+b+c  aabbabc y       $&      abc
 a{1,}b{1,}c    aabbabc y       $&      abc
 a**    -       c       -       Nested quantifiers
 a.+?c  abcabc  y       $&      abc
 (a+|b)*        ab      y       $&-$1   ab-b
+(a+|b)*        ab      y       $-[0]   0
+(a+|b)*        ab      y       $+[0]   2
+(a+|b)*        ab      y       $-[1]   1
+(a+|b)*        ab      y       $+[1]   2
 (a+|b){0,}     ab      y       $&-$1   ab-b
 (a+|b)+        ab      y       $&-$1   ab-b
 (a+|b){1,}     ab      y       $&-$1   ab-b
@@ -125,6 +172,10 @@ a*         y       $&
 ([abc])*bcd    abcd    y       $&-$1   abcd-a
 a|b|c|d|e      e       y       $&      e
 (a|b|c|d|e)f   ef      y       $&-$1   ef-e
+(a|b|c|d|e)f   ef      y       $-[0]   0
+(a|b|c|d|e)f   ef      y       $+[0]   2
+(a|b|c|d|e)f   ef      y       $-[1]   0
+(a|b|c|d|e)f   ef      y       $+[1]   1
 abcd*efg       abcdefg y       $&      abcdefg
 ab*    xabyabbbz       y       $&      ab
 ab*    xayabbbz        y       $&      a
@@ -136,12 +187,38 @@ ab*       xayabbbz        y       $&      a
 (ab|ab*)bc     abc     y       $&-$1   abc-a
 a([bc]*)c*     abc     y       $&-$1   abc-bc
 a([bc]*)(c*d)  abcd    y       $&-$1-$2        abcd-bc-d
+a([bc]*)(c*d)  abcd    y       $-[0]   0
+a([bc]*)(c*d)  abcd    y       $+[0]   4
+a([bc]*)(c*d)  abcd    y       $-[1]   1
+a([bc]*)(c*d)  abcd    y       $+[1]   3
+a([bc]*)(c*d)  abcd    y       $-[2]   3
+a([bc]*)(c*d)  abcd    y       $+[2]   4
 a([bc]+)(c*d)  abcd    y       $&-$1-$2        abcd-bc-d
 a([bc]*)(c+d)  abcd    y       $&-$1-$2        abcd-b-cd
+a([bc]*)(c+d)  abcd    y       $-[0]   0
+a([bc]*)(c+d)  abcd    y       $+[0]   4
+a([bc]*)(c+d)  abcd    y       $-[1]   1
+a([bc]*)(c+d)  abcd    y       $+[1]   2
+a([bc]*)(c+d)  abcd    y       $-[2]   2
+a([bc]*)(c+d)  abcd    y       $+[2]   4
 a[bcd]*dcdcde  adcdcde y       $&      adcdcde
 a[bcd]+dcdcde  adcdcde n       -       -
 (ab|a)b*c      abc     y       $&-$1   abc-ab
+(ab|a)b*c      abc     y       $-[0]   0
+(ab|a)b*c      abc     y       $+[0]   3
+(ab|a)b*c      abc     y       $-[1]   0
+(ab|a)b*c      abc     y       $+[1]   2
 ((a)(b)c)(d)   abcd    y       $1-$2-$3-$4     abc-a-b-d
+((a)(b)c)(d)   abcd    y       $-[0]   0
+((a)(b)c)(d)   abcd    y       $+[0]   4
+((a)(b)c)(d)   abcd    y       $-[1]   0
+((a)(b)c)(d)   abcd    y       $+[1]   3
+((a)(b)c)(d)   abcd    y       $-[2]   0
+((a)(b)c)(d)   abcd    y       $+[2]   1
+((a)(b)c)(d)   abcd    y       $-[3]   1
+((a)(b)c)(d)   abcd    y       $+[3]   2
+((a)(b)c)(d)   abcd    y       $-[4]   3
+((a)(b)c)(d)   abcd    y       $+[4]   4
 [a-zA-Z_][a-zA-Z0-9_]* alpha   y       $&      alpha
 ^a(bc+|b[eh])g|.h$     abh     y       $&-$1   bh-
 (bc+d$|ef*g.|h?i(j|k)) effgz   y       $&-$1-$2        effgz-effgz-
@@ -150,6 +227,10 @@ a[bcd]+dcdcde      adcdcde n       -       -
 (bc+d$|ef*g.|h?i(j|k)) bcdd    n       -       -
 (bc+d$|ef*g.|h?i(j|k)) reffgz  y       $&-$1-$2        effgz-effgz-
 ((((((((((a))))))))))  a       y       $10     a
+((((((((((a))))))))))  a       y       $-[0]   0
+((((((((((a))))))))))  a       y       $+[0]   1
+((((((((((a))))))))))  a       y       $-[10]  0
+((((((((((a))))))))))  a       y       $+[10]  1
 ((((((((((a))))))))))\10       aa      y       $&      aa
 ((((((((((a))))))))))${bang}   aa      n       -       -
 ((((((((((a))))))))))${bang}   a!      y       $&      a!
@@ -174,6 +255,12 @@ a[-]?c     ac      y       $&      ac
 ((\3|b)\2(a)x)+        aaxabxbaxbbx    n       -       -
 ((\3|b)\2(a)x)+        aaaxabaxbaaxbbax        y       $&-$1-$2-$3     bbax-bbax-b-a
 ((\3|b)\2(a)){2,}      bbaababbabaaaaabbaaaabba        y       $&-$1-$2-$3     bbaaaabba-bba-b-a
+(a)|(b)        b       y       $-[0]   0
+(a)|(b)        b       y       $+[0]   1
+(a)|(b)        b       y       x$-[1]  x
+(a)|(b)        b       y       x$+[1]  x
+(a)|(b)        b       y       $-[2]   0
+(a)|(b)        b       y       $+[2]   1
 'abc'i ABC     y       $&      ABC
 'abc'i XBC     n       -       -
 'abc'i AXC     n       -       -
@@ -799,3 +886,60 @@ ab(?i)cd   abCd    y       -       -
 '^(o)(?!.*\1)'i        Oo      n       -       -
 (.*)\d+\1      abc12bc y       $1      bc
 (?m:(foo\s*$)) foo\n bar       y       $1      foo
+(.*)c  abcd    y       $1      ab
+(.*)(?=c)      abcd    y       $1      ab
+(.*)(?=c)c     abcd    yB      $1      ab
+(.*)(?=b|c)    abcd    y       $1      ab
+(.*)(?=b|c)c   abcd    y       $1      ab
+(.*)(?=c|b)    abcd    y       $1      ab
+(.*)(?=c|b)c   abcd    y       $1      ab
+(.*)(?=[bc])   abcd    y       $1      ab
+(.*)(?=[bc])c  abcd    yB      $1      ab
+(.*)(?<=b)     abcd    y       $1      ab
+(.*)(?<=b)c    abcd    y       $1      ab
+(.*)(?<=b|c)   abcd    y       $1      abc
+(.*)(?<=b|c)c  abcd    y       $1      ab
+(.*)(?<=c|b)   abcd    y       $1      abc
+(.*)(?<=c|b)c  abcd    y       $1      ab
+(.*)(?<=[bc])  abcd    y       $1      abc
+(.*)(?<=[bc])c abcd    y       $1      ab
+(.*?)c abcd    y       $1      ab
+(.*?)(?=c)     abcd    y       $1      ab
+(.*?)(?=c)c    abcd    yB      $1      ab
+(.*?)(?=b|c)   abcd    y       $1      a
+(.*?)(?=b|c)c  abcd    y       $1      ab
+(.*?)(?=c|b)   abcd    y       $1      a
+(.*?)(?=c|b)c  abcd    y       $1      ab
+(.*?)(?=[bc])  abcd    y       $1      a
+(.*?)(?=[bc])c abcd    yB      $1      ab
+(.*?)(?<=b)    abcd    y       $1      ab
+(.*?)(?<=b)c   abcd    y       $1      ab
+(.*?)(?<=b|c)  abcd    y       $1      ab
+(.*?)(?<=b|c)c abcd    y       $1      ab
+(.*?)(?<=c|b)  abcd    y       $1      ab
+(.*?)(?<=c|b)c abcd    y       $1      ab
+(.*?)(?<=[bc]) abcd    y       $1      ab
+(.*?)(?<=[bc])c        abcd    y       $1      ab
+2(]*)?$\1      2       y       $&      2
+(??{}) x       y       -       -
+a(b)?? abc     y       <$1>    <>      # undef [perl #16773]
+(\d{1,3}\.){3,}        128.134.142.8   y       <$1>    <142.>  # [perl #18019]
+^.{3,4}(.+)\1\z        foobarbar       y       $1      bar     # 16 tests for [perl #23171]
+^(?:f|o|b){3,4}(.+)\1\z        foobarbar       y       $1      bar
+^.{3,4}((?:b|a|r)+)\1\z        foobarbar       y       $1      bar
+^(?:f|o|b){3,4}((?:b|a|r)+)\1\z        foobarbar       y       $1      bar
+^.{3,4}(.+?)\1\z       foobarbar       y       $1      bar
+^(?:f|o|b){3,4}(.+?)\1\z       foobarbar       y       $1      bar
+^.{3,4}((?:b|a|r)+?)\1\z       foobarbar       y       $1      bar
+^(?:f|o|b){3,4}((?:b|a|r)+?)\1\z       foobarbar       y       $1      bar
+^.{2,3}?(.+)\1\z       foobarbar       y       $1      bar
+^(?:f|o|b){2,3}?(.+)\1\z       foobarbar       y       $1      bar
+^.{2,3}?((?:b|a|r)+)\1\z       foobarbar       y       $1      bar
+^(?:f|o|b){2,3}?((?:b|a|r)+)\1\z       foobarbar       y       $1      bar
+^.{2,3}?(.+?)\1\z      foobarbar       y       $1      bar
+^(?:f|o|b){2,3}?(.+?)\1\z      foobarbar       y       $1      bar
+^.{2,3}?((?:b|a|r)+?)\1\z      foobarbar       y       $1      bar
+^(?:f|o|b){2,3}?((?:b|a|r)+?)\1\z      foobarbar       y       $1      bar
+.*a(?!(b|cd)*e).*f     ......abef      n       -       -       # [perl #23030]
+x(?#   x       c       -       Sequence (?#... not terminated
+:x(?#: x       c       -       Sequence (?#... not terminated