Home | History | Annotate | Download | only in testdata
      1 # This set of tests is not Perl-compatible. It checks on special features
      2 # of PCRE2's API, error diagnostics, and the compiled code of some patterns.
      3 # It also checks the non-Perl syntax that PCRE2 supports (Python, .NET,
      4 # Oniguruma). There are also some tests where PCRE2 and Perl differ,
      5 # either because PCRE2 can't be compatible, or there is a possible Perl
      6 # bug.
      7 
      8 # NOTE: This is a non-UTF set of tests. When UTF support is needed, use
      9 # test 5.
     10 
     11 #forbid_utf
     12 #newline_default lf any anycrlf
     13 
     14 # Test binary zeroes in the pattern
     15 
     16 # /a\0B/ where 0 is a binary zero
     17 /61 5c 00 62/B,hex
     18     a\x{0}b
     19 
     20 # /a0b/ where 0 is a binary zero
     21 /61 00 62/B,hex
     22     a\x{0}b
     23 
     24 # /(?#B0C)DE/ where 0 is a binary zero
     25 /28 3f 23 42 00 43 29 44 45/B,hex
     26     DE
     27 
     28 /(a)b|/I
     29 
     30 /abc/I
     31     abc
     32     defabc
     33     abc\=anchored
     34 \= Expect no match
     35     defabc\=anchored
     36     ABC
     37 
     38 /^abc/I
     39     abc
     40     abc\=anchored
     41 \= Expect no match
     42     defabc
     43     defabc\=anchored
     44 
     45 /a+bc/I
     46 
     47 /a*bc/I
     48 
     49 /a{3}bc/I
     50 
     51 /(abc|a+z)/I
     52 
     53 /^abc$/I
     54     abc
     55 \= Expect no match
     56     def\nabc
     57 
     58 /ab\idef/
     59 
     60 /(?X)ab\idef/
     61 
     62 /x{5,4}/
     63 
     64 /z{65536}/
     65 
     66 /[abcd/
     67 
     68 /[\B]/B
     69 
     70 /[\R]/B
     71 
     72 /[\X]/B
     73 
     74 /[z-a]/
     75 
     76 /^*/
     77 
     78 /(abc/
     79 
     80 /(?# abc/
     81 
     82 /(?z)abc/
     83 
     84 /.*b/I
     85 
     86 /.*?b/I
     87 
     88 /cat|dog|elephant/I
     89     this sentence eventually mentions a cat
     90     this sentences rambles on and on for a while and then reaches elephant
     91 
     92 /cat|dog|elephant/I
     93     this sentence eventually mentions a cat
     94     this sentences rambles on and on for a while and then reaches elephant
     95 
     96 /cat|dog|elephant/Ii
     97     this sentence eventually mentions a CAT cat
     98     this sentences rambles on and on for a while to elephant ElePhant
     99 
    100 /a|[bcd]/I
    101 
    102 /(a|[^\dZ])/I
    103 
    104 /(a|b)*[\s]/I
    105 
    106 /(ab\2)/
    107 
    108 /{4,5}abc/
    109 
    110 /(a)(b)(c)\2/I
    111     abcb
    112     abcb\=ovector=0
    113     abcb\=ovector=1
    114     abcb\=ovector=2
    115     abcb\=ovector=3
    116     abcb\=ovector=4
    117 
    118 /(a)bc|(a)(b)\2/I
    119     abc
    120     abc\=ovector=0
    121     abc\=ovector=1
    122     abc\=ovector=2
    123     aba
    124     aba\=ovector=0
    125     aba\=ovector=1
    126     aba\=ovector=2
    127     aba\=ovector=3
    128     aba\=ovector=4
    129 
    130 /abc$/I,dollar_endonly
    131     abc
    132 \= Expect no match
    133     abc\n
    134     abc\ndef
    135 
    136 /(a)(b)(c)(d)(e)\6/
    137 
    138 /the quick brown fox/I
    139     the quick brown fox
    140     this is a line with the quick brown fox
    141 
    142 /the quick brown fox/I,anchored
    143     the quick brown fox
    144 \= Expect no match
    145     this is a line with the quick brown fox
    146 
    147 /ab(?z)cd/
    148 
    149 /^abc|def/I
    150     abcdef
    151     abcdef\=notbol
    152 
    153 /.*((abc)$|(def))/I
    154     defabc
    155     defabc\=noteol
    156 
    157 /)/
    158 
    159 /a[]b/
    160 
    161 /[^aeiou ]{3,}/I
    162     co-processors, and for
    163 
    164 /<.*>/I
    165     abc<def>ghi<klm>nop
    166 
    167 /<.*?>/I
    168     abc<def>ghi<klm>nop
    169 
    170 /<.*>/I,ungreedy
    171     abc<def>ghi<klm>nop
    172 
    173 /(?U)<.*>/I
    174     abc<def>ghi<klm>nop
    175 
    176 /<.*?>/I,ungreedy
    177     abc<def>ghi<klm>nop
    178 
    179 /={3,}/I,ungreedy
    180     abc========def
    181 
    182 /(?U)={3,}?/I
    183     abc========def
    184 
    185 /(?<!bar|cattle)foo/I
    186     foo
    187     catfoo
    188 \= Expect no match
    189     the barfoo
    190     and cattlefoo
    191 
    192 /abc(?<=a+)b/
    193 
    194 /12345(?<=aaa|b{0,3})b/
    195 
    196 /(?<!(foo)a\1)bar/
    197 
    198 /(?i)abc/I
    199 
    200 /(a|(?m)a)/I
    201 
    202 /(?i)^1234/I
    203 
    204 /(^b|(?i)^d)/I
    205 
    206 /(?s).*/I
    207 
    208 /[abcd]/I
    209 
    210 /(?i)[abcd]/I
    211 
    212 /(?m)[xy]|(b|c)/I
    213 
    214 /(^a|^b)/Im
    215 
    216 /(?i)(^a|^b)/Im
    217 
    218 /(a)(?(1)a|b|c)/
    219 
    220 /(?(?=a)a|b|c)/
    221 
    222 /(?(1a)/
    223 
    224 /(?(1a))/
    225 
    226 /(?(?i))/
    227 
    228 /(?(abc))/
    229 
    230 /(?(?<ab))/
    231 
    232 /((?s)blah)\s+\1/I
    233 
    234 /((?i)blah)\s+\1/I
    235 
    236 /((?i)b)/IB
    237 
    238 /(a*b|(?i:c*(?-i)d))/I
    239 
    240 /a$/I
    241     a
    242     a\n
    243 \= Expect no match
    244     a\=noteol
    245     a\n\=noteol
    246 
    247 /a$/Im
    248     a
    249     a\n
    250     a\n\=noteol
    251 \= Expect no match
    252     a\=noteol
    253 
    254 /\Aabc/Im
    255 
    256 /^abc/Im
    257 
    258 /^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/I
    259   aaaaabbbbbcccccdef
    260 
    261 /(?<=foo)[ab]/I
    262 
    263 /(?<!foo)(alpha|omega)/I
    264 
    265 /(?!alphabet)[ab]/I
    266 
    267 /(?<=foo\n)^bar/Im
    268     foo\nbarbar
    269 \= Expect no match
    270     rhubarb
    271     barbell
    272     abc\nbarton
    273 
    274 /^(?<=foo\n)bar/Im
    275     foo\nbarbar
    276 \= Expect no match
    277     rhubarb
    278     barbell
    279     abc\nbarton
    280 
    281 /(?>^abc)/Im
    282     abc
    283     def\nabc
    284 \= Expect no match
    285     defabc
    286 
    287 /(?<=ab(c+)d)ef/
    288 
    289 /(?<=ab(?<=c+)d)ef/
    290 
    291 /(?<=ab(c|de)f)g/
    292 
    293 /The next three are in testinput2 because they have variable length branches/
    294 
    295 /(?<=bullock|donkey)-cart/I
    296     the bullock-cart
    297     a donkey-cart race
    298 \= Expect no match
    299     cart
    300     horse-and-cart
    301 
    302 /(?<=ab(?i)x|y|z)/I
    303 
    304 /(?>.*)(?<=(abcd)|(xyz))/I
    305     alphabetabcd
    306     endingxyz
    307 
    308 /(?<=ab(?i)x(?-i)y|(?i)z|b)ZZ/I
    309     abxyZZ
    310     abXyZZ
    311     ZZZ
    312     zZZ
    313     bZZ
    314     BZZ
    315 \= Expect no match
    316     ZZ
    317     abXYZZ
    318     zzz
    319     bzz
    320 
    321 /(?<!(foo)a)bar/I
    322     bar
    323     foobbar
    324 \= Expect no match
    325     fooabar
    326 
    327 # This one is here because Perl behaves differently; see also the following.
    328 
    329 /^(a\1?){4}$/I
    330 \= Expect no match
    331     aaaa
    332     aaaaaa
    333 
    334 # Perl does not fail these two for the final subjects. Neither did PCRE until
    335 # release 8.01. The problem is in backtracking into a subpattern that contains
    336 # a recursive reference to itself. PCRE has now made these into atomic patterns.
    337 
    338 /^(xa|=?\1a){2}$/
    339     xa=xaa
    340 \= Expect no match
    341     xa=xaaa
    342 
    343 /^(xa|=?\1a)+$/
    344     xa=xaa
    345 \= Expect no match
    346     xa=xaaa
    347 
    348 # These are syntax tests from Perl 5.005
    349 
    350 /a[b-a]/
    351 
    352 /a[]b/
    353 
    354 /a[/
    355 
    356 /*a/
    357 
    358 /(*)b/
    359 
    360 /abc)/
    361 
    362 /(abc/
    363 
    364 /a**/
    365 
    366 /)(/
    367 
    368 /\1/
    369 
    370 /\2/
    371 
    372 /(a)|\2/
    373 
    374 /a[b-a]/Ii
    375 
    376 /a[]b/Ii
    377 
    378 /a[/Ii
    379 
    380 /*a/Ii
    381 
    382 /(*)b/Ii
    383 
    384 /abc)/Ii
    385 
    386 /(abc/Ii
    387 
    388 /a**/Ii
    389 
    390 /)(/Ii
    391 
    392 /:(?:/
    393 
    394 /(?<%)b/
    395 
    396 /a(?{)b/
    397 
    398 /a(?{{})b/
    399 
    400 /a(?{}})b/
    401 
    402 /a(?{"{"})b/
    403 
    404 /a(?{"{"}})b/
    405 
    406 /(?(1?)a|b)/
    407 
    408 /[a[:xyz:/
    409 
    410 /(?<=x+)y/
    411 
    412 /a{37,17}/
    413 
    414 /abc/\
    415 
    416 /abc/\i
    417 
    418 /(a)bc(d)/I
    419     abcd
    420     abcd\=copy=2
    421     abcd\=copy=5
    422 
    423 /(.{20})/I
    424     abcdefghijklmnopqrstuvwxyz
    425     abcdefghijklmnopqrstuvwxyz\=copy=1
    426     abcdefghijklmnopqrstuvwxyz\=get=1
    427 
    428 /(.{15})/I
    429     abcdefghijklmnopqrstuvwxyz
    430     abcdefghijklmnopqrstuvwxyz\=copy=1,get=1
    431 
    432 /(.{16})/I
    433     abcdefghijklmnopqrstuvwxyz
    434     abcdefghijklmnopqrstuvwxyz\=copy=1,get=1,getall
    435 
    436 /^(a|(bc))de(f)/I
    437     adef\=get=1,get=2,get=3,get=4,getall
    438     bcdef\=get=1,get=2,get=3,get=4,getall
    439     adefghijk\=copy=0
    440 
    441 /^abc\00def/I
    442     abc\00def\=copy=0,getall
    443 
    444 /word ((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+
    445 )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+
    446 )?)?)?)?)?)?)?)?)?otherword/I
    447 
    448 /.*X/IB
    449 
    450 /.*X/IBs
    451 
    452 /(.*X|^B)/IB
    453 
    454 /(.*X|^B)/IBs
    455 
    456 /(?s)(.*X|^B)/IB
    457 
    458 /(?s:.*X|^B)/IB
    459 
    460 /\Biss\B/I,aftertext
    461     Mississippi
    462 
    463 /iss/I,aftertext,altglobal
    464     Mississippi
    465 
    466 /\Biss\B/I,aftertext,altglobal
    467     Mississippi
    468 
    469 /\Biss\B/Ig,aftertext
    470     Mississippi
    471 \= Expect no match
    472     Mississippi\=anchored
    473 
    474 /(?<=[Ms])iss/Ig,aftertext
    475     Mississippi
    476 
    477 /(?<=[Ms])iss/I,aftertext,altglobal
    478     Mississippi
    479 
    480 /^iss/Ig,aftertext
    481     ississippi
    482 
    483 /.*iss/Ig,aftertext
    484     abciss\nxyzisspqr
    485 
    486 /.i./Ig,aftertext
    487     Mississippi
    488     Mississippi\=anchored
    489     Missouri river
    490     Missouri river\=anchored
    491 
    492 /^.is/Ig,aftertext
    493     Mississippi
    494 
    495 /^ab\n/Ig,aftertext
    496     ab\nab\ncd
    497 
    498 /^ab\n/Igm,aftertext
    499     ab\nab\ncd
    500 
    501 /^/gm,newline=any
    502     a\rb\nc\r\nxyz\=aftertext
    503 
    504 /abc/I
    505 
    506 /abc|bac/I
    507 
    508 /(abc|bac)/I
    509 
    510 /(abc|(c|dc))/I
    511 
    512 /(abc|(d|de)c)/I
    513 
    514 /a*/I
    515 
    516 /a+/I
    517 
    518 /(baa|a+)/I
    519 
    520 /a{0,3}/I
    521 
    522 /baa{3,}/I
    523 
    524 /"([^\\"]+|\\.)*"/I
    525 
    526 /(abc|ab[cd])/I
    527 
    528 /(a|.)/I
    529 
    530 /a|ba|\w/I
    531 
    532 /abc(?=pqr)/I
    533 
    534 /...(?<=abc)/I
    535 
    536 /abc(?!pqr)/I
    537 
    538 /ab./I
    539 
    540 /ab[xyz]/I
    541 
    542 /abc*/I
    543 
    544 /ab.c*/I
    545 
    546 /a.c*/I
    547 
    548 /.c*/I
    549 
    550 /ac*/I
    551 
    552 /(a.c*|b.c*)/I
    553 
    554 /a.c*|aba/I
    555 
    556 /.+a/I
    557 
    558 /(?=abcda)a.*/I
    559 
    560 /(?=a)a.*/I
    561 
    562 /a(b)*/I
    563 
    564 /a\d*/I
    565 
    566 /ab\d*/I
    567 
    568 /a(\d)*/I
    569 
    570 /abcde{0,0}/I
    571 
    572 /ab\d+/I
    573 
    574 /a(?(1)b)(.)/I
    575 
    576 /a(?(1)bag|big)(.)/I
    577 
    578 /a(?(1)bag|big)*(.)/I
    579 
    580 /a(?(1)bag|big)+(.)/I
    581 
    582 /a(?(1)b..|b..)(.)/I
    583 
    584 /ab\d{0}e/I
    585 
    586 /a?b?/I
    587     a
    588     b
    589     ab
    590     \
    591 \= Expect no match
    592     \=notempty
    593 
    594 /|-/I
    595     abcd
    596     -abc
    597     ab-c\=notempty
    598 \= Expect no match
    599     abc\=notempty
    600 
    601 /^.?abcd/I
    602 
    603 /\(             # ( at start
    604   (?:           # Non-capturing bracket
    605   (?>[^()]+)    # Either a sequence of non-brackets (no backtracking)
    606   |             # Or
    607   (?R)          # Recurse - i.e. nested bracketed string
    608   )*            # Zero or more contents
    609   \)            # Closing )
    610   /Ix
    611     (abcd)
    612     (abcd)xyz
    613     xyz(abcd)
    614     (ab(xy)cd)pqr
    615     (ab(xycd)pqr
    616     () abc ()
    617     12(abcde(fsh)xyz(foo(bar))lmno)89
    618 \= Expect no match
    619     abcd
    620     abcd)
    621     (abcd
    622 
    623 /\(  ( (?>[^()]+) | (?R) )* \) /Igx
    624     (ab(xy)cd)pqr
    625     1(abcd)(x(y)z)pqr
    626 
    627 /\(  (?: (?>[^()]+) | (?R) ) \) /Ix
    628     (abcd)
    629     (ab(xy)cd)
    630     (a(b(c)d)e)
    631     ((ab))
    632 \= Expect no match
    633     ()
    634 
    635 /\(  (?: (?>[^()]+) | (?R) )? \) /Ix
    636     ()
    637     12(abcde(fsh)xyz(foo(bar))lmno)89
    638 
    639 /\(  ( (?>[^()]+) | (?R) )* \) /Ix
    640     (ab(xy)cd)
    641 
    642 /\( ( ( (?>[^()]+) | (?R) )* ) \) /Ix
    643     (ab(xy)cd)
    644 
    645 /\( (123)? ( ( (?>[^()]+) | (?R) )* ) \) /Ix
    646     (ab(xy)cd)
    647     (123ab(xy)cd)
    648 
    649 /\( ( (123)? ( (?>[^()]+) | (?R) )* ) \) /Ix
    650     (ab(xy)cd)
    651     (123ab(xy)cd)
    652 
    653 /\( (((((((((( ( (?>[^()]+) | (?R) )* )))))))))) \) /Ix
    654     (ab(xy)cd)
    655 
    656 /\( ( ( (?>[^()<>]+) | ((?>[^()]+)) | (?R) )* ) \) /Ix
    657     (abcd(xyz<p>qrs)123)
    658 
    659 /\( ( ( (?>[^()]+) | ((?R)) )* ) \) /Ix
    660     (ab(cd)ef)
    661     (ab(cd(ef)gh)ij)
    662 
    663 /^[[:alnum:]]/IB
    664 
    665 /^[[:^alnum:]]/IB
    666 
    667 /^[[:alpha:]]/IB
    668 
    669 /^[[:^alpha:]]/IB
    670 
    671 /[_[:alpha:]]/I
    672 
    673 /^[[:ascii:]]/IB
    674 
    675 /^[[:^ascii:]]/IB
    676 
    677 /^[[:blank:]]/IB
    678 
    679 /^[[:^blank:]]/IB
    680 
    681 /[\n\x0b\x0c\x0d[:blank:]]/I
    682 
    683 /^[[:cntrl:]]/IB
    684 
    685 /^[[:digit:]]/IB
    686 
    687 /^[[:graph:]]/IB
    688 
    689 /^[[:lower:]]/IB
    690 
    691 /^[[:print:]]/IB
    692 
    693 /^[[:punct:]]/IB
    694 
    695 /^[[:space:]]/IB
    696 
    697 /^[[:upper:]]/IB
    698 
    699 /^[[:xdigit:]]/IB
    700 
    701 /^[[:word:]]/IB
    702 
    703 /^[[:^cntrl:]]/IB
    704 
    705 /^[12[:^digit:]]/IB
    706 
    707 /^[[:^blank:]]/IB
    708 
    709 /[01[:alpha:]%]/IB
    710 
    711 /[[.ch.]]/I
    712 
    713 /[[=ch=]]/I
    714 
    715 /[[:rhubarb:]]/I
    716 
    717 /[[:upper:]]/Ii
    718     A
    719     a
    720 
    721 /[[:lower:]]/Ii
    722     A
    723     a
    724 
    725 /((?-i)[[:lower:]])[[:lower:]]/Ii
    726     ab
    727     aB
    728 \= Expect no match
    729     Ab
    730     AB
    731 
    732 /[\200-\110]/I
    733 
    734 /^(?(0)f|b)oo/I
    735 
    736 # This one's here because of the large output vector needed
    737 
    738 /(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\w+)\s+(\270)/I
    739      1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 ABC ABC\=ovector=300
    740 
    741 # This one's here because Perl does this differently and PCRE2 can't at present
    742 
    743 /(main(O)?)+/I
    744     mainmain
    745     mainOmain
    746 
    747 # These are all cases where Perl does it differently (nested captures)
    748 
    749 /^(a(b)?)+$/I
    750     aba
    751 
    752 /^(aa(bb)?)+$/I
    753     aabbaa
    754 
    755 /^(aa|aa(bb))+$/I
    756     aabbaa
    757 
    758 /^(aa(bb)??)+$/I
    759     aabbaa
    760 
    761 /^(?:aa(bb)?)+$/I
    762     aabbaa
    763 
    764 /^(aa(b(b))?)+$/I
    765     aabbaa
    766 
    767 /^(?:aa(b(b))?)+$/I
    768     aabbaa
    769 
    770 /^(?:aa(b(?:b))?)+$/I
    771     aabbaa
    772 
    773 /^(?:aa(bb(?:b))?)+$/I
    774     aabbbaa
    775 
    776 /^(?:aa(b(?:bb))?)+$/I
    777     aabbbaa
    778 
    779 /^(?:aa(?:b(b))?)+$/I
    780     aabbaa
    781 
    782 /^(?:aa(?:b(bb))?)+$/I
    783     aabbbaa
    784 
    785 /^(aa(b(bb))?)+$/I
    786     aabbbaa
    787 
    788 /^(aa(bb(bb))?)+$/I
    789     aabbbbaa
    790 
    791 # ----------------
    792 
    793 /#/IBx
    794 
    795 /a#/IBx
    796 
    797 /[\s]/IB
    798 
    799 /[\S]/IB
    800 
    801 /a(?i)b/IB
    802     ab
    803     aB
    804 \= Expect no match
    805     AB
    806 
    807 /(a(?i)b)/IB
    808     ab
    809     aB
    810 \= Expect no match
    811     AB
    812 
    813 /   (?i)abc/IBx
    814 
    815 /#this is a comment
    816   (?i)abc/IBx
    817 
    818 /123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/IB
    819 
    820 /\Q123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/IB
    821 
    822 /\Q\E/IB
    823     \
    824 
    825 /\Q\Ex/IB
    826 
    827 / \Q\E/IB
    828 
    829 /a\Q\E/IB
    830   abc
    831   bca
    832   bac
    833 
    834 /a\Q\Eb/IB
    835   abc
    836 
    837 /\Q\Eabc/IB
    838 
    839 /x*+\w/IB
    840 \= Expect no match
    841     xxxxx
    842 
    843 /x?+/IB
    844 
    845 /x++/IB
    846 
    847 /x{1,3}+/B,no_auto_possess
    848 
    849 /x{1,3}+/Bi,no_auto_possess
    850 
    851 /[^x]{1,3}+/B,no_auto_possess
    852 
    853 /[^x]{1,3}+/Bi,no_auto_possess
    854 
    855 /(x)*+/IB
    856 
    857 /^(\w++|\s++)*$/I
    858     now is the time for all good men to come to the aid of the party
    859 \= Expect no match
    860     this is not a line with only words and spaces!
    861 
    862 /(\d++)(\w)/I
    863     12345a
    864 \= Expect no match
    865     12345+
    866 
    867 /a++b/I
    868     aaab
    869 
    870 /(a++b)/I
    871     aaab
    872 
    873 /(a++)b/I
    874     aaab
    875 
    876 /([^()]++|\([^()]*\))+/I
    877     ((abc(ade)ufh()()x
    878 
    879 /\(([^()]++|\([^()]+\))+\)/I
    880     (abc)
    881     (abc(def)xyz)
    882 \= Expect no match
    883     ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    884 
    885 /(abc){1,3}+/IB
    886 
    887 /a+?+/I
    888 
    889 /a{2,3}?+b/I
    890 
    891 /(?U)a+?+/I
    892 
    893 /a{2,3}?+b/I,ungreedy
    894 
    895 /x(?U)a++b/IB
    896     xaaaab
    897 
    898 /(?U)xa++b/IB
    899     xaaaab
    900 
    901 /^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/IB
    902 
    903 /^x(?U)a+b/IB
    904 
    905 /^x(?U)(a+)b/IB
    906 
    907 /[.x.]/I
    908 
    909 /[=x=]/I
    910 
    911 /[:x:]/I
    912 
    913 /\F/I
    914 
    915 /\l/I
    916 
    917 /\L/I
    918 
    919 /\N{name}/I
    920 
    921 /\u/I
    922 
    923 /\U/I
    924 
    925 /a{1,3}b/ungreedy
    926     ab
    927 
    928 /[/I
    929 
    930 /[a-/I
    931 
    932 /[[:space:]/I
    933 
    934 /[\s]/IB
    935 
    936 /[[:space:]]/IB
    937 
    938 /[[:space:]abcde]/IB
    939 
    940 /< (?: (?(R) \d++  | [^<>]*+) | (?R)) * >/Ix
    941     <>
    942     <abcd>
    943     <abc <123> hij>
    944     <abc <def> hij>
    945     <abc<>def>
    946     <abc<>
    947 \= Expect no match
    948     <abc
    949 
    950 /8J\$WE\<\.rX\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b/IB
    951 
    952 /\$\<\.X\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b/IB
    953 
    954 /(.*)\d+\1/I
    955 
    956 /(.*)\d+/I
    957 
    958 /(.*)\d+\1/Is
    959 
    960 /(.*)\d+/Is
    961 
    962 /(.*(xyz))\d+\2/I
    963 
    964 /((.*))\d+\1/I
    965     abc123bc
    966 
    967 /a[b]/I
    968 
    969 /(?=a).*/I
    970 
    971 /(?=abc).xyz/Ii
    972 
    973 /(?=abc)(?i).xyz/I
    974 
    975 /(?=a)(?=b)/I
    976 
    977 /(?=.)a/I
    978 
    979 /((?=abcda)a)/I
    980 
    981 /((?=abcda)ab)/I
    982 
    983 /()a/I
    984 
    985 /(?:(?=.)|(?<!x))a/I
    986 
    987 /(?(1)ab|ac)(.)/I
    988 
    989 /(?(1)abz|acz)(.)/I
    990 
    991 /(?(1)abz)(.)/I
    992 
    993 /(?(1)abz)(1)23/I
    994 
    995 /(a)+/I
    996 
    997 /(a){2,3}/I
    998 
    999 /(a)*/I
   1000 
   1001 /[a]/I
   1002 
   1003 /[ab]/I
   1004 
   1005 /[ab]/I
   1006 
   1007 /[^a]/I
   1008 
   1009 /\d456/I
   1010 
   1011 /\d456/I
   1012 
   1013 /a^b/I
   1014 
   1015 /^a/Im
   1016   abcde
   1017   xy\nabc
   1018 \= Expect no match
   1019   xyabc
   1020 
   1021 /c|abc/I
   1022 
   1023 /(?i)[ab]/I
   1024 
   1025 /[ab](?i)cd/I
   1026 
   1027 /abc(?C)def/I
   1028     abcdef
   1029     1234abcdef
   1030 \= Expect no match
   1031     abcxyz
   1032     abcxyzf
   1033 
   1034 /abc(?C)de(?C1)f/I
   1035     123abcdef
   1036 
   1037 /(?C1)\dabc(?C2)def/I
   1038     1234abcdef
   1039 \= Expect no match
   1040     abcdef
   1041 
   1042 /(?C1)\dabc(?C2)def/I
   1043     1234abcdef
   1044 \= Expect no match
   1045     abcdef
   1046 
   1047 /(?C255)ab/I
   1048 
   1049 /(?C256)ab/I
   1050 
   1051 /(?Cab)xx/I
   1052 
   1053 /(?C12vr)x/I
   1054 
   1055 /abc(?C)def/I
   1056     \x83\x0\x61bcdef
   1057 
   1058 /(abc)(?C)de(?C1)f/I
   1059     123abcdef
   1060     123abcdef\=callout_capture
   1061     123abcdefC-\=callout_none
   1062 \= Expect no match
   1063     123abcdef\=callout_fail=1
   1064 
   1065 /(?C0)(abc(?C1))*/I
   1066     abcabcabc
   1067     abcabc\=callout_fail=1:4
   1068     abcabcabc\=callout_fail=1:4
   1069 
   1070 /(\d{3}(?C))*/I
   1071     123\=callout_capture
   1072     123456\=callout_capture
   1073     123456789\=callout_capture
   1074 
   1075 /((xyz)(?C)p|(?C1)xyzabc)/I
   1076     xyzabc\=callout_capture
   1077 
   1078 /(X)((xyz)(?C)p|(?C1)xyzabc)/I
   1079     Xxyzabc\=callout_capture
   1080 
   1081 /(?=(abc))(?C)abcdef/I
   1082     abcdef\=callout_capture
   1083 
   1084 /(?!(abc)(?C1)d)(?C2)abcxyz/I
   1085     abcxyz\=callout_capture
   1086 
   1087 /(?<=(abc)(?C))xyz/I
   1088    abcxyz\=callout_capture
   1089 
   1090 /a(b+)(c*)(?C1)/I
   1091 \= Expect no match
   1092     abbbbbccc\=callout_data=1
   1093 
   1094 /a(b+?)(c*?)(?C1)/I
   1095 \= Expect no match
   1096     abbbbbccc\=callout_data=1
   1097 
   1098 /(?C)abc/I
   1099 
   1100 /(?C)^abc/I
   1101 
   1102 /(?C)a|b/I
   1103 
   1104 /a|(b)(?C)/I
   1105     b
   1106 
   1107 /x(ab|(bc|(de|(?R))))/I
   1108     xab
   1109     xbc
   1110     xde
   1111     xxab
   1112     xxxab
   1113 \= Expect no match
   1114     xyab
   1115 
   1116 /^([^()]|\((?1)*\))*$/I
   1117     abc
   1118     a(b)c
   1119     a(b(c))d
   1120 \= Expect no match)
   1121     a(b(c)d
   1122 
   1123 /^>abc>([^()]|\((?1)*\))*<xyz<$/I
   1124    >abc>123<xyz<
   1125    >abc>1(2)3<xyz<
   1126    >abc>(1(2)3)<xyz<
   1127 
   1128 /(a(?1)b)/IB
   1129 
   1130 /(a(?1)+b)/IB
   1131 
   1132 /^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/I
   1133     12
   1134     (((2+2)*-3)-7)
   1135     -12
   1136 \= Expect no match
   1137     ((2+2)*-3)-7)
   1138 
   1139 /^(x(y|(?1){2})z)/I
   1140     xyz
   1141     xxyzxyzz
   1142 \= Expect no match
   1143     xxyzz
   1144     xxyzxyzxyzz
   1145 
   1146 /((< (?: (?(R) \d++  | [^<>]*+) | (?2)) * >))/Ix
   1147     <>
   1148     <abcd>
   1149     <abc <123> hij>
   1150     <abc <def> hij>
   1151     <abc<>def>
   1152     <abc<>
   1153 \= Expect no match
   1154     <abc
   1155 
   1156 /(?1)/I
   1157 
   1158 /((?2)(abc)/I
   1159 
   1160 /^(abc)def(?1)/I
   1161     abcdefabc
   1162 
   1163 /^(a|b|c)=(?1)+/I
   1164     a=a
   1165     a=b
   1166     a=bc
   1167 
   1168 /^(a|b|c)=((?1))+/I
   1169     a=a
   1170     a=b
   1171     a=bc
   1172 
   1173 /a(?P<name1>b|c)d(?P<longername2>e)/IB
   1174     abde
   1175     acde
   1176 
   1177 /(?:a(?P<c>c(?P<d>d)))(?P<a>a)/IB
   1178 
   1179 /(?P<a>a)...(?P=a)bbb(?P>a)d/IB
   1180 
   1181 /^\W*(?:(?P<one>(?P<two>.)\W*(?P>one)\W*(?P=two)|)|(?P<three>(?P<four>.)\W*(?P>three)\W*(?P=four)|\W*.\W*))\W*$/Ii
   1182     1221
   1183     Satan, oscillate my metallic sonatas!
   1184     A man, a plan, a canal: Panama!
   1185     Able was I ere I saw Elba.
   1186 \= Expect no match
   1187     The quick brown fox
   1188 
   1189 /((?(R)a|b))\1(?1)?/I
   1190   bb
   1191   bbaa
   1192 
   1193 /(.*)a/Is
   1194 
   1195 /(.*)a\1/Is
   1196 
   1197 /(.*)a(b)\2/Is
   1198 
   1199 /((.*)a|(.*)b)z/Is
   1200 
   1201 /((.*)a|(.*)b)z\1/Is
   1202 
   1203 /((.*)a|(.*)b)z\2/Is
   1204 
   1205 /((.*)a|(.*)b)z\3/Is
   1206 
   1207 /((.*)a|^(.*)b)z\3/Is
   1208 
   1209 /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a/Is
   1210 
   1211 /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\31/Is
   1212 
   1213 /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\32/Is
   1214 
   1215 /(a)(bc)/IB,no_auto_capture
   1216   abc
   1217 
   1218 /(?P<one>a)(bc)/IB,no_auto_capture
   1219   abc
   1220 
   1221 /(a)(?P<named>bc)/IB,no_auto_capture
   1222 
   1223 /(aaa(?C1)bbb|ab)/I
   1224    aaabbb
   1225    aaabbb\=callout_data=0
   1226    aaabbb\=callout_data=1
   1227 \= Expect no match
   1228    aaabbb\=callout_data=-1
   1229 
   1230 /ab(?P<one>cd)ef(?P<two>gh)/I
   1231     abcdefgh
   1232     abcdefgh\=copy=1,get=two
   1233     abcdefgh\=copy=one,copy=two
   1234     abcdefgh\=copy=three
   1235 
   1236 /(?P<Tes>)(?P<Test>)/IB
   1237 
   1238 /(?P<Test>)(?P<Tes>)/IB
   1239 
   1240 /(?P<Z>zz)(?P<A>aa)/I
   1241     zzaa\=copy=Z
   1242     zzaa\=copy=A
   1243 
   1244 /(?P<x>eks)(?P<x>eccs)/I
   1245 
   1246 /(?P<abc>abc(?P<def>def)(?P<abc>xyz))/I
   1247 
   1248 "\[((?P<elem>\d+)(,(?P>elem))*)\]"I
   1249     [10,20,30,5,5,4,4,2,43,23,4234]
   1250 \= Expect no match
   1251     []
   1252 
   1253 "\[((?P<elem>\d+)(,(?P>elem))*)?\]"I
   1254     [10,20,30,5,5,4,4,2,43,23,4234]
   1255     []
   1256 
   1257 /(a(b(?2)c))?/IB
   1258 
   1259 /(a(b(?2)c))*/IB
   1260 
   1261 /(a(b(?2)c)){0,2}/IB
   1262 
   1263 /[ab]{1}+/B
   1264 
   1265 /()(?1){1}/B
   1266 
   1267 /()(?1)/B
   1268 
   1269 /((w\/|-|with)*(free|immediate)*.*?shipping\s*[!.-]*)/Ii
   1270      Baby Bjorn Active Carrier - With free SHIPPING!!
   1271 
   1272 /((w\/|-|with)*(free|immediate)*.*?shipping\s*[!.-]*)/Ii
   1273      Baby Bjorn Active Carrier - With free SHIPPING!!
   1274 
   1275 /a*.*b/IB
   1276 
   1277 /(a|b)*.?c/IB
   1278 
   1279 /abc(?C255)de(?C)f/IB
   1280 
   1281 /abcde/IB,auto_callout
   1282   abcde
   1283 \= Expect no match
   1284   abcdfe
   1285 
   1286 /a*b/IB,auto_callout
   1287   ab
   1288   aaaab
   1289   aaaacb
   1290 
   1291 /a*b/IB,auto_callout
   1292   ab
   1293   aaaab
   1294   aaaacb
   1295 
   1296 /a+b/IB,auto_callout
   1297   ab
   1298   aaaab
   1299 \= Expect no match
   1300   aaaacb
   1301 
   1302 /(abc|def)x/IB,auto_callout
   1303   abcx
   1304   defx
   1305 \= Expect no match
   1306   abcdefzx
   1307 
   1308 /(abc|def)x/IB,auto_callout
   1309   abcx
   1310   defx
   1311 \= Expect no match
   1312   abcdefzx
   1313 
   1314 /(ab|cd){3,4}/I,auto_callout
   1315   ababab
   1316   abcdabcd
   1317   abcdcdcdcdcd
   1318 
   1319 /([ab]{,4}c|xy)/IB,auto_callout
   1320 \= Expect no match
   1321     Note: that { does NOT introduce a quantifier
   1322 
   1323 /([ab]{,4}c|xy)/IB,auto_callout
   1324 \= Expect no match
   1325     Note: that { does NOT introduce a quantifier
   1326 
   1327 /([ab]{1,4}c|xy){4,5}?123/IB,auto_callout
   1328     aacaacaacaacaac123
   1329 
   1330 /\b.*/I
   1331   ab cd\=offset=1
   1332 
   1333 /\b.*/Is
   1334   ab cd\=startoffset=1
   1335 
   1336 /(?!.bcd).*/I
   1337   Xbcd12345
   1338 
   1339 /abcde/I
   1340     ab\=ps
   1341     abc\=ps
   1342     abcd\=ps
   1343     abcde\=ps
   1344     the quick brown abc\=ps
   1345 \= Expect no match\=ps
   1346     the quick brown abxyz fox\=ps
   1347 
   1348 "^(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])/(20)?\d\d$"I
   1349     13/05/04\=ps
   1350     13/5/2004\=ps
   1351     02/05/09\=ps
   1352     1\=ps
   1353     1/2\=ps
   1354     1/2/0\=ps
   1355     1/2/04\=ps
   1356     0\=ps
   1357     02/\=ps
   1358     02/0\=ps
   1359     02/1\=ps
   1360 \= Expect no match\=ps
   1361     \=ps
   1362     123\=ps
   1363     33/4/04\=ps
   1364     3/13/04\=ps
   1365     0/1/2003\=ps
   1366     0/\=ps
   1367     02/0/\=ps
   1368     02/13\=ps
   1369 
   1370 /0{0,2}ABC/I
   1371 
   1372 /\d{3,}ABC/I
   1373 
   1374 /\d*ABC/I
   1375 
   1376 /[abc]+DE/I
   1377 
   1378 /[abc]?123/I
   1379     123\=ps
   1380     a\=ps
   1381     b\=ps
   1382     c\=ps
   1383     c12\=ps
   1384     c123\=ps
   1385 
   1386 /^(?:\d){3,5}X/I
   1387     1\=ps
   1388     123\=ps
   1389     123X
   1390     1234\=ps
   1391     1234X
   1392     12345\=ps
   1393     12345X
   1394 \= Expect no match
   1395     1X
   1396     123456\=ps
   1397 
   1398 "<(\w+)/?>(.)*</(\1)>"Igms
   1399     <!DOCTYPE seite SYSTEM "http://www.lco.lineas.de/xmlCms.dtd">\n<seite>\n<dokumenteninformation>\n<seitentitel>Partner der LCO</seitentitel>\n<sprache>de</sprache>\n<seitenbeschreibung>Partner der LINEAS Consulting\nGmbH</seitenbeschreibung>\n<schluesselworte>LINEAS Consulting GmbH Hamburg\nPartnerfirmen</schluesselworte>\n<revisit>30 days</revisit>\n<robots>index,follow</robots>\n<menueinformation>\n<aktiv>ja</aktiv>\n<menueposition>3</menueposition>\n<menuetext>Partner</menuetext>\n</menueinformation>\n<lastedited>\n<autor>LCO</autor>\n<firma>LINEAS Consulting</firma>\n<datum>15.10.2003</datum>\n</lastedited>\n</dokumenteninformation>\n<inhalt>\n\n<absatzueberschrift>Die Partnerfirmen der LINEAS Consulting\nGmbH</absatzueberschrift>\n\n<absatz><link ziel="http://www.ca.com/" zielfenster="_blank">\n<bild name="logo_ca.gif" rahmen="no"/></link> <link\nziel="http://www.ey.com/" zielfenster="_blank"><bild\nname="logo_euy.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><link ziel="http://www.cisco.de/" zielfenster="_blank">\n<bild name="logo_cisco.gif" rahmen="ja"/></link></absatz>\n\n<absatz><link ziel="http://www.atelion.de/"\nzielfenster="_blank"><bild\nname="logo_atelion.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><link ziel="http://www.line-information.de/"\nzielfenster="_blank">\n<bild name="logo_line_information.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><bild name="logo_aw.gif" rahmen="no"/></absatz>\n\n<absatz><link ziel="http://www.incognis.de/"\nzielfenster="_blank"><bild\nname="logo_incognis.gif" rahmen="no"/></link></absatz>\n\n<absatz><link ziel="http://www.addcraft.com/"\nzielfenster="_blank"><bild\nname="logo_addcraft.gif" rahmen="no"/></link></absatz>\n\n<absatz><link ziel="http://www.comendo.com/"\nzielfenster="_blank"><bild\nname="logo_comendo.gif" rahmen="no"/></link></absatz>\n\n</inhalt>\n</seite>\=jitstack=1024
   1400 
   1401 /line\nbreak/I
   1402     this is a line\nbreak
   1403     line one\nthis is a line\nbreak in the second line
   1404 
   1405 /line\nbreak/I,firstline
   1406     this is a line\nbreak
   1407 \= Expect no match
   1408     line one\nthis is a line\nbreak in the second line
   1409 
   1410 /line\nbreak/Im,firstline
   1411     this is a line\nbreak
   1412 \= Expect no match
   1413     line one\nthis is a line\nbreak in the second line
   1414 
   1415 /(?i)(?-i)AbCd/I
   1416     AbCd
   1417 \= Expect no match
   1418     abcd
   1419 
   1420 /a{11111111111111111111}/I
   1421 
   1422 /(){64294967295}/I
   1423 
   1424 /(){2,4294967295}/I
   1425 
   1426 "(?i:a)(?i:b)(?i:c)(?i:d)(?i:e)(?i:f)(?i:g)(?i:h)(?i:i)(?i:j)(k)(?i:l)A\1B"I
   1427     abcdefghijklAkB
   1428 
   1429 "(?P<n0>a)(?P<n1>b)(?P<n2>c)(?P<n3>d)(?P<n4>e)(?P<n5>f)(?P<n6>g)(?P<n7>h)(?P<n8>i)(?P<n9>j)(?P<n10>k)(?P<n11>l)A\11B"I
   1430     abcdefghijklAkB
   1431 
   1432 "(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)A\11B"I
   1433     abcdefghijklAkB
   1434 
   1435 "(?P<name0>a)(?P<name1>a)(?P<name2>a)(?P<name3>a)(?P<name4>a)(?P<name5>a)(?P<name6>a)(?P<name7>a)(?P<name8>a)(?P<name9>a)(?P<name10>a)(?P<name11>a)(?P<name12>a)(?P<name13>a)(?P<name14>a)(?P<name15>a)(?P<name16>a)(?P<name17>a)(?P<name18>a)(?P<name19>a)(?P<name20>a)(?P<name21>a)(?P<name22>a)(?P<name23>a)(?P<name24>a)(?P<name25>a)(?P<name26>a)(?P<name27>a)(?P<name28>a)(?P<name29>a)(?P<name30>a)(?P<name31>a)(?P<name32>a)(?P<name33>a)(?P<name34>a)(?P<name35>a)(?P<name36>a)(?P<name37>a)(?P<name38>a)(?P<name39>a)(?P<name40>a)(?P<name41>a)(?P<name42>a)(?P<name43>a)(?P<name44>a)(?P<name45>a)(?P<name46>a)(?P<name47>a)(?P<name48>a)(?P<name49>a)(?P<name50>a)(?P<name51>a)(?P<name52>a)(?P<name53>a)(?P<name54>a)(?P<name55>a)(?P<name56>a)(?P<name57>a)(?P<name58>a)(?P<name59>a)(?P<name60>a)(?P<name61>a)(?P<name62>a)(?P<name63>a)(?P<name64>a)(?P<name65>a)(?P<name66>a)(?P<name67>a)(?P<name68>a)(?P<name69>a)(?P<name70>a)(?P<name71>a)(?P<name72>a)(?P<name73>a)(?P<name74>a)(?P<name75>a)(?P<name76>a)(?P<name77>a)(?P<name78>a)(?P<name79>a)(?P<name80>a)(?P<name81>a)(?P<name82>a)(?P<name83>a)(?P<name84>a)(?P<name85>a)(?P<name86>a)(?P<name87>a)(?P<name88>a)(?P<name89>a)(?P<name90>a)(?P<name91>a)(?P<name92>a)(?P<name93>a)(?P<name94>a)(?P<name95>a)(?P<name96>a)(?P<name97>a)(?P<name98>a)(?P<name99>a)(?P<name100>a)"I
   1436     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
   1437 
   1438 "(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)"I
   1439     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
   1440 
   1441 /[^()]*(?:\((?R)\)[^()]*)*/I
   1442     (this(and)that
   1443     (this(and)that)
   1444     (this(and)that)stuff
   1445 
   1446 /[^()]*(?:\((?>(?R))\)[^()]*)*/I
   1447     (this(and)that
   1448     (this(and)that)
   1449 
   1450 /[^()]*(?:\((?R)\))*[^()]*/I
   1451     (this(and)that
   1452     (this(and)that)
   1453 
   1454 /(?:\((?R)\))*[^()]*/I
   1455     (this(and)that
   1456     (this(and)that)
   1457     ((this))
   1458 
   1459 /(?:\((?R)\))|[^()]*/I
   1460     (this(and)that
   1461     (this(and)that)
   1462     (this)
   1463     ((this))
   1464 
   1465 /\x{0000ff}/I
   1466 
   1467 /^((?P<A>a1)|(?P<A>a2)b)/I
   1468 
   1469 /^((?P<A>a1)|(?P<A>a2)b)/I,dupnames
   1470     a1b\=copy=A
   1471     a2b\=copy=A
   1472     a1b\=copy=Z,copy=A
   1473 
   1474 /(?|(?<a>)(?<b>)(?<a>)|(?<a>)(?<b>)(?<a>))/I,dupnames
   1475 
   1476 /^(?P<A>a)(?P<A>b)/I,dupnames
   1477     ab\=copy=A
   1478 
   1479 /^(?P<A>a)(?P<A>b)|cd/I,dupnames
   1480     ab\=copy=A
   1481     cd\=copy=A
   1482 
   1483 /^(?P<A>a)(?P<A>b)|cd(?P<A>ef)(?P<A>gh)/I,dupnames
   1484     cdefgh\=copy=A
   1485 
   1486 /^((?P<A>a1)|(?P<A>a2)b)/I,dupnames
   1487     a1b\=get=A
   1488     a2b\=get=A
   1489     a1b\=get=Z,get=A
   1490 
   1491 /^(?P<A>a)(?P<A>b)/I,dupnames
   1492     ab\=get=A
   1493 
   1494 /^(?P<A>a)(?P<A>b)|cd/I,dupnames
   1495     ab\=get=A
   1496     cd\=get=A
   1497 
   1498 /^(?P<A>a)(?P<A>b)|cd(?P<A>ef)(?P<A>gh)/I,dupnames
   1499     cdefgh\=get=A
   1500 
   1501 /(?J)^((?P<A>a1)|(?P<A>a2)b)/I
   1502     a1b\=copy=A
   1503     a2b\=copy=A
   1504 
   1505 /^(?P<A>a) (?J:(?P<B>b)(?P<B>c)) (?P<A>d)/I
   1506 
   1507 # In this next test, J is not set at the outer level; consequently it isn't set
   1508 # in the pattern's options; consequently pcre2_substring_get_byname() produces
   1509 # a random value.
   1510 
   1511 /^(?P<A>a) (?J:(?P<B>b)(?P<B>c)) (?P<C>d)/I
   1512     a bc d\=copy=A,copy=B,copy=C
   1513 
   1514 /^(?P<A>a)?(?(A)a|b)/I
   1515     aabc
   1516     bc
   1517 \= Expect no match
   1518     abc
   1519 
   1520 /(?:(?(ZZ)a|b)(?P<ZZ>X))+/I
   1521     bXaX
   1522 
   1523 /(?:(?(2y)a|b)(X))+/I
   1524 
   1525 /(?:(?(ZA)a|b)(?P<ZZ>X))+/I
   1526 
   1527 /(?:(?(ZZ)a|b)(?(ZZ)a|b)(?P<ZZ>X))+/I
   1528     bbXaaX
   1529 
   1530 /(?:(?(ZZ)a|\(b\))\\(?P<ZZ>X))+/I
   1531     (b)\\Xa\\X
   1532 
   1533 /(?P<ABC/I
   1534 
   1535 /(?:(?(A)(?P=A)a|b)(?P<A>X|Y))+/I
   1536     bXXaYYaY
   1537     bXYaXXaX
   1538 
   1539 /()()()()()()()()()(?:(?(A)(?P=A)a|b)(?P<A>X|Y))+/I
   1540     bXXaYYaY
   1541 
   1542 /\s*,\s*/I
   1543     \x0b,\x0b
   1544     \x0c,\x0d
   1545 
   1546 /^abc/Im,newline=lf
   1547     xyz\nabc
   1548     xyz\r\nabc
   1549 \= Expect no match
   1550     xyz\rabc
   1551     xyzabc\r
   1552     xyzabc\rpqr
   1553     xyzabc\r\n
   1554     xyzabc\r\npqr
   1555 
   1556 /^abc/Im,newline=crlf
   1557     xyz\r\nabclf>
   1558 \= Expect no match
   1559     xyz\nabclf
   1560     xyz\rabclf
   1561 
   1562 /^abc/Im,newline=cr
   1563     xyz\rabc
   1564 \= Expect no match
   1565     xyz\nabc
   1566     xyz\r\nabc
   1567 
   1568 /^abc/Im,newline=bad
   1569 
   1570 /.*/I,newline=lf
   1571     abc\ndef
   1572     abc\rdef
   1573     abc\r\ndef
   1574 
   1575 /.*/I,newline=cr
   1576     abc\ndef
   1577     abc\rdef
   1578     abc\r\ndef
   1579 
   1580 /.*/I,newline=crlf
   1581     abc\ndef
   1582     abc\rdef
   1583     abc\r\ndef
   1584 
   1585 /\w+(.)(.)?def/Is
   1586     abc\ndef
   1587     abc\rdef
   1588     abc\r\ndef
   1589 
   1590 /(?P<B>25[0-5]|2[0-4]\d|[01]?\d?\d)(?:\.(?P>B)){3}/I
   1591 
   1592 /()()()()()()()()()()()()()()()()()()()()
   1593  ()()()()()()()()()()()()()()()()()()()()
   1594  ()()()()()()()()()()()()()()()()()()()()
   1595  ()()()()()()()()()()()()()()()()()()()()
   1596  ()()()()()()()()()()()()()()()()()()()()
   1597  (.(.))/Ix
   1598     XY\=ovector=133
   1599 
   1600 /(a*b|(?i:c*(?-i)d))/I
   1601 
   1602 /()[ab]xyz/I
   1603 
   1604 /(|)[ab]xyz/I
   1605 
   1606 /(|c)[ab]xyz/I
   1607 
   1608 /(|c?)[ab]xyz/I
   1609 
   1610 /(d?|c?)[ab]xyz/I
   1611 
   1612 /(d?|c)[ab]xyz/I
   1613 
   1614 /^a*b\d/IB
   1615 
   1616 /^a*+b\d/IB
   1617 
   1618 /^a*?b\d/IB
   1619 
   1620 /^a+A\d/IB
   1621     aaaA5
   1622 \= Expect no match
   1623     aaaa5
   1624 
   1625 /^a*A\d/IBi
   1626     aaaA5
   1627     aaaa5
   1628 
   1629 /(a*|b*)[cd]/I
   1630 
   1631 /(a+|b*)[cd]/I
   1632 
   1633 /(a*|b+)[cd]/I
   1634 
   1635 /(a+|b+)[cd]/I
   1636 
   1637 /((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
   1638  ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
   1639  (((
   1640  a
   1641  ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
   1642  ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
   1643  )))
   1644 /Ix
   1645   large nest
   1646 
   1647 /a*\d/B
   1648 
   1649 /a*\D/B
   1650 
   1651 /0*\d/B
   1652 
   1653 /0*\D/B
   1654 
   1655 /a*\s/B
   1656 
   1657 /a*\S/B
   1658 
   1659 / *\s/B
   1660 
   1661 / *\S/B
   1662 
   1663 /a*\w/B
   1664 
   1665 /a*\W/B
   1666 
   1667 /=*\w/B
   1668 
   1669 /=*\W/B
   1670 
   1671 /\d*a/B
   1672 
   1673 /\d*2/B
   1674 
   1675 /\d*\d/B
   1676 
   1677 /\d*\D/B
   1678 
   1679 /\d*\s/B
   1680 
   1681 /\d*\S/B
   1682 
   1683 /\d*\w/B
   1684 
   1685 /\d*\W/B
   1686 
   1687 /\D*a/B
   1688 
   1689 /\D*2/B
   1690 
   1691 /\D*\d/B
   1692 
   1693 /\D*\D/B
   1694 
   1695 /\D*\s/B
   1696 
   1697 /\D*\S/B
   1698 
   1699 /\D*\w/B
   1700 
   1701 /\D*\W/B
   1702 
   1703 /\s*a/B
   1704 
   1705 /\s*2/B
   1706 
   1707 /\s*\d/B
   1708 
   1709 /\s*\D/B
   1710 
   1711 /\s*\s/B
   1712 
   1713 /\s*\S/B
   1714 
   1715 /\s*\w/B
   1716 
   1717 /\s*\W/B
   1718 
   1719 /\S*a/B
   1720 
   1721 /\S*2/B
   1722 
   1723 /\S*\d/B
   1724 
   1725 /\S*\D/B
   1726 
   1727 /\S*\s/B
   1728 
   1729 /\S*\S/B
   1730 
   1731 /\S*\w/B
   1732 
   1733 /\S*\W/B
   1734 
   1735 /\w*a/B
   1736 
   1737 /\w*2/B
   1738 
   1739 /\w*\d/B
   1740 
   1741 /\w*\D/B
   1742 
   1743 /\w*\s/B
   1744 
   1745 /\w*\S/B
   1746 
   1747 /\w*\w/B
   1748 
   1749 /\w*\W/B
   1750 
   1751 /\W*a/B
   1752 
   1753 /\W*2/B
   1754 
   1755 /\W*\d/B
   1756 
   1757 /\W*\D/B
   1758 
   1759 /\W*\s/B
   1760 
   1761 /\W*\S/B
   1762 
   1763 /\W*\w/B
   1764 
   1765 /\W*\W/B
   1766 
   1767 /[^a]+a/B
   1768 
   1769 /[^a]+a/Bi
   1770 
   1771 /[^a]+A/Bi
   1772 
   1773 /[^a]+b/B
   1774 
   1775 /[^a]+\d/B
   1776 
   1777 /a*[^a]/B
   1778 
   1779 /(?P<abc>x)(?P<xyz>y)/I
   1780     xy\=copy=abc,copy=xyz
   1781 
   1782 /(?<abc>x)(?'xyz'y)/I
   1783     xy\=copy=abc,copy=xyz
   1784 
   1785 /(?<abc'x)(?'xyz'y)/I
   1786 
   1787 /(?<abc>x)(?'xyz>y)/I
   1788 
   1789 /(?P'abc'x)(?P<xyz>y)/I
   1790 
   1791 /^(?:(?(ZZ)a|b)(?<ZZ>X))+/
   1792     bXaX
   1793     bXbX
   1794 \= Expect no match
   1795     aXaX
   1796     aXbX
   1797 
   1798 /^(?P>abc)(?<abcd>xxx)/
   1799 
   1800 /^(?P>abc)(?<abc>x|y)/
   1801     xx
   1802     xy
   1803     yy
   1804     yx
   1805 
   1806 /^(?P>abc)(?P<abc>x|y)/
   1807     xx
   1808     xy
   1809     yy
   1810     yx
   1811 
   1812 /^((?(abc)a|b)(?<abc>x|y))+/
   1813     bxay
   1814     bxby
   1815 \= Expect no match
   1816     axby
   1817 
   1818 /^(((?P=abc)|X)(?<abc>x|y))+/
   1819     XxXxxx
   1820     XxXyyx
   1821     XxXyxx
   1822 \= Expect no match
   1823     x
   1824 
   1825 /^(?1)(abc)/
   1826     abcabc
   1827 
   1828 /^(?:(?:\1|X)(a|b))+/
   1829     Xaaa
   1830     Xaba
   1831 
   1832 /^[\E\Qa\E-\Qz\E]+/B
   1833 
   1834 /^[a\Q]bc\E]/B
   1835 
   1836 /^[a-\Q\E]/B
   1837 
   1838 /^(?P>abc)[()](?<abc>)/B
   1839 
   1840 /^((?(abc)y)[()](?P<abc>x))+/B
   1841     (xy)x
   1842 
   1843 /^(?P>abc)\Q()\E(?<abc>)/B
   1844 
   1845 /^(?P>abc)[a\Q(]\E(](?<abc>)/B
   1846 
   1847 /^(?P>abc) # this is (a comment)
   1848   (?<abc>)/Bx
   1849 
   1850 /^\W*(?:(?<one>(?<two>.)\W*(?&one)\W*\k<two>|)|(?<three>(?<four>.)\W*(?&three)\W*\k'four'|\W*.\W*))\W*$/Ii
   1851     1221
   1852     Satan, oscillate my metallic sonatas!
   1853     A man, a plan, a canal: Panama!
   1854     Able was I ere I saw Elba.
   1855 \= Expect no match
   1856     The quick brown fox
   1857 
   1858 /(?=(\w+))\1:/I
   1859     abcd:
   1860 
   1861 /(?=(?'abc'\w+))\k<abc>:/I
   1862     abcd:
   1863 
   1864 /(?'abc'a|b)(?<abc>d|e)\k<abc>{2}/dupnames
   1865     adaa
   1866 \= Expect no match
   1867     addd
   1868     adbb
   1869 
   1870 /(?'abc'a|b)(?<abc>d|e)(?&abc){2}/dupnames
   1871     bdaa
   1872     bdab
   1873 \= Expect no match
   1874     bddd
   1875 
   1876 /(?(<bc))/
   1877 
   1878 /(?(''))/
   1879 
   1880 /(?('R')stuff)/
   1881 
   1882 /((abc (?(R) (?(R1)1) (?(R2)2) X  |  (?1)  (?2)   (?R) ))) /x
   1883     abcabc1Xabc2XabcXabcabc
   1884 
   1885 /(?<A> (?'B' abc (?(R) (?(R&A)1) (?(R&B)2) X  |  (?1)  (?2)   (?R) ))) /x
   1886     abcabc1Xabc2XabcXabcabc
   1887 
   1888 /(?<A> (?'B' abc (?(R) (?(R&C)1) (?(R&B)2) X  |  (?1)  (?2)   (?R) ))) /x
   1889 
   1890 /^(?(DEFINE) abc | xyz ) /x
   1891 
   1892 /(?(DEFINE) abc) xyz/Ix
   1893 
   1894 /(a|)*\d/
   1895   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4\=ovector=0
   1896 \= Expect no match
   1897   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\=ovector=0
   1898 
   1899 /^a.b/newline=lf
   1900     a\rb
   1901 \= Expect no match
   1902     a\nb
   1903 
   1904 /^a.b/newline=cr
   1905     a\nb
   1906 \= Expect no match
   1907     a\rb
   1908 
   1909 /^a.b/newline=anycrlf
   1910     a\x85b
   1911 \= Expect no match
   1912     a\rb
   1913 
   1914 /^a.b/newline=any
   1915 \= Expect no match
   1916     a\nb
   1917     a\rb
   1918     a\x85b
   1919 
   1920 /^abc./gmx,newline=any
   1921     abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x85abc7 JUNK
   1922 
   1923 /abc.$/gmx,newline=any
   1924     abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc7 abc9
   1925 
   1926 /^a\Rb/bsr=unicode
   1927     a\nb
   1928     a\rb
   1929     a\r\nb
   1930     a\x0bb
   1931     a\x0cb
   1932     a\x85b
   1933 \= Expect no match
   1934     a\n\rb
   1935 
   1936 /^a\R*b/bsr=unicode
   1937     ab
   1938     a\nb
   1939     a\rb
   1940     a\r\nb
   1941     a\x0bb
   1942     a\x0cb
   1943     a\x85b
   1944     a\n\rb
   1945     a\n\r\x85\x0cb
   1946 
   1947 /^a\R+b/bsr=unicode
   1948     a\nb
   1949     a\rb
   1950     a\r\nb
   1951     a\x0bb
   1952     a\x0cb
   1953     a\x85b
   1954     a\n\rb
   1955     a\n\r\x85\x0cb
   1956 \= Expect no match
   1957     ab
   1958 
   1959 /^a\R{1,3}b/bsr=unicode
   1960     a\nb
   1961     a\n\rb
   1962     a\n\r\x85b
   1963     a\r\n\r\nb
   1964     a\r\n\r\n\r\nb
   1965     a\n\r\n\rb
   1966     a\n\n\r\nb
   1967 \= Expect no match
   1968     a\n\n\n\rb
   1969     a\r
   1970 
   1971 /(?&abc)X(?<abc>P)/I
   1972     abcPXP123
   1973 
   1974 /(?1)X(?<abc>P)/I
   1975     abcPXP123
   1976 
   1977 /(?:a(?&abc)b)*(?<abc>x)/
   1978     123axbaxbaxbx456
   1979     123axbaxbaxb456
   1980 
   1981 /(?:a(?&abc)b){1,5}(?<abc>x)/
   1982     123axbaxbaxbx456
   1983 
   1984 /(?:a(?&abc)b){2,5}(?<abc>x)/
   1985     123axbaxbaxbx456
   1986 
   1987 /(?:a(?&abc)b){2,}(?<abc>x)/
   1988     123axbaxbaxbx456
   1989 
   1990 /(abc)(?i:(?1))/
   1991     defabcabcxyz
   1992 \= Expect no match
   1993     DEFabcABCXYZ
   1994 
   1995 /(abc)(?:(?i)(?1))/
   1996     defabcabcxyz
   1997 \= Expect no match
   1998     DEFabcABCXYZ
   1999 
   2000 /^(a)\g-2/
   2001 
   2002 /^(a)\g/
   2003 
   2004 /^(a)\g{0}/
   2005 
   2006 /^(a)\g{3/
   2007 
   2008 /^(a)\g{aa}/
   2009 
   2010 /^a.b/newline=lf
   2011     a\rb
   2012 \= Expect no match
   2013     a\nb
   2014 
   2015 /.+foo/
   2016     afoo
   2017 \= Expect no match
   2018     \r\nfoo
   2019     \nfoo
   2020 
   2021 /.+foo/newline=crlf
   2022     afoo
   2023     \nfoo
   2024 \= Expect no match
   2025     \r\nfoo
   2026 
   2027 /.+foo/newline=any
   2028     afoo
   2029 \= Expect no match
   2030     \nfoo
   2031     \r\nfoo
   2032 
   2033 /.+foo/s
   2034     afoo
   2035     \r\nfoo
   2036     \nfoo
   2037 
   2038 /^$/gm,newline=any
   2039     abc\r\rxyz
   2040     abc\n\rxyz
   2041 \= Expect no match
   2042     abc\r\nxyz
   2043 
   2044 /(?m)^$/g,newline=any,aftertext
   2045     abc\r\n\r\n
   2046 
   2047 /(?m)^$|^\r\n/g,newline=any,aftertext
   2048     abc\r\n\r\n
   2049 
   2050 /(?m)$/g,newline=any,aftertext
   2051     abc\r\n\r\n
   2052 
   2053 /abc.$/gmx,newline=anycrlf
   2054     abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc9
   2055 
   2056 /^X/m
   2057     XABC
   2058 \= Expect no match
   2059     XABC\=notbol
   2060 
   2061 /(ab|c)(?-1)/B
   2062     abc
   2063 
   2064 /xy(?+1)(abc)/B
   2065     xyabcabc
   2066 \= Expect no match
   2067     xyabc
   2068 
   2069 /x(?-0)y/
   2070 
   2071 /x(?-1)y/
   2072 
   2073 /x(?+0)y/
   2074 
   2075 /x(?+1)y/
   2076 
   2077 /^(abc)?(?(-1)X|Y)/B
   2078     abcX
   2079     Y
   2080 \= Expect no match
   2081     abcY
   2082 
   2083 /^((?(+1)X|Y)(abc))+/B
   2084     YabcXabc
   2085     YabcXabcXabc
   2086 \= Expect no match
   2087     XabcXabc
   2088 
   2089 /(?(-1)a)/B
   2090 
   2091 /((?(-1)a))/B
   2092 
   2093 /((?(-2)a))/B
   2094 
   2095 /^(?(+1)X|Y)(.)/B
   2096     Y!
   2097 
   2098 /(?<A>tom|bon)-\k{A}/
   2099     tom-tom
   2100     bon-bon
   2101 \= Expect no match
   2102     tom-bon
   2103 
   2104 /\g{A/
   2105 
   2106 /(?|(abc)|(xyz))/B
   2107    >abc<
   2108    >xyz<
   2109 
   2110 /(x)(?|(abc)|(xyz))(x)/B
   2111     xabcx
   2112     xxyzx
   2113 
   2114 /(x)(?|(abc)(pqr)|(xyz))(x)/B
   2115     xabcpqrx
   2116     xxyzx
   2117 
   2118 /\H++X/B
   2119 \= Expect no match
   2120     XXXX
   2121 
   2122 /\H+\hY/B
   2123     XXXX Y
   2124 
   2125 /\H+ Y/B
   2126 
   2127 /\h+A/B
   2128 
   2129 /\v*B/B
   2130 
   2131 /\V+\x0a/B
   2132 
   2133 /A+\h/B
   2134 
   2135 / *\H/B
   2136 
   2137 /A*\v/B
   2138 
   2139 /\x0b*\V/B
   2140 
   2141 /\d+\h/B
   2142 
   2143 /\d*\v/B
   2144 
   2145 /S+\h\S+\v/B
   2146 
   2147 /\w{3,}\h\w+\v/B
   2148 
   2149 /\h+\d\h+\w\h+\S\h+\H/B
   2150 
   2151 /\v+\d\v+\w\v+\S\v+\V/B
   2152 
   2153 /\H+\h\H+\d/B
   2154 
   2155 /\V+\v\V+\w/B
   2156 
   2157 /\( (?: [^()]* | (?R) )* \)/x
   2158 (0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(00)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)\=jitstack=1024
   2159 
   2160 /[\E]AAA/
   2161 
   2162 /[\Q\E]AAA/
   2163 
   2164 /[^\E]AAA/
   2165 
   2166 /[^\Q\E]AAA/
   2167 
   2168 /[\E^]AAA/
   2169 
   2170 /[\Q\E^]AAA/
   2171 
   2172 /A(*PRUNE)B(*SKIP)C(*THEN)D(*COMMIT)E(*F)F(*FAIL)G(?!)H(*ACCEPT)I/B
   2173 
   2174 /^a+(*FAIL)/auto_callout
   2175 \= Expect no match
   2176     aaaaaa
   2177 
   2178 /a+b?c+(*FAIL)/auto_callout
   2179 \= Expect no match
   2180     aaabccc
   2181 
   2182 /a+b?(*PRUNE)c+(*FAIL)/auto_callout
   2183 \= Expect no match
   2184     aaabccc
   2185 
   2186 /a+b?(*COMMIT)c+(*FAIL)/auto_callout
   2187 \= Expect no match
   2188     aaabccc
   2189 
   2190 /a+b?(*SKIP)c+(*FAIL)/auto_callout
   2191 \= Expect no match
   2192     aaabcccaaabccc
   2193 
   2194 /a+b?(*THEN)c+(*FAIL)/auto_callout
   2195 \= Expect no match
   2196     aaabccc
   2197 
   2198 /a(*MARK)b/
   2199 
   2200 /(?i:A{1,}\6666666666)/
   2201 
   2202 /\g6666666666/
   2203 
   2204 /[\g6666666666]/B
   2205 
   2206 /(?1)\c[/
   2207 
   2208 /.+A/newline=crlf
   2209 \= Expect no match
   2210     \r\nA
   2211 
   2212 /\nA/newline=crlf
   2213     \r\nA
   2214 
   2215 /[\r\n]A/newline=crlf
   2216     \r\nA
   2217 
   2218 /(\r|\n)A/newline=crlf
   2219     \r\nA
   2220 
   2221 /a(*CR)b/
   2222 
   2223 /(*CR)a.b/
   2224     a\nb
   2225 \= Expect no match
   2226     a\rb
   2227 
   2228 /(*CR)a.b/newline=lf
   2229     a\nb
   2230 \= Expect no match
   2231     a\rb
   2232 
   2233 /(*LF)a.b/newline=CRLF
   2234     a\rb
   2235 \= Expect no match
   2236     a\nb
   2237 
   2238 /(*CRLF)a.b/
   2239     a\rb
   2240     a\nb
   2241 \= Expect no match
   2242     a\r\nb
   2243 
   2244 /(*ANYCRLF)a.b/newline=CR
   2245 \= Expect no match
   2246     a\rb
   2247     a\nb
   2248     a\r\nb
   2249 
   2250 /(*ANY)a.b/newline=cr
   2251 \= Expect no match
   2252     a\rb
   2253     a\nb
   2254     a\r\nb
   2255     a\x85b
   2256 
   2257 /(*ANY).*/g
   2258     abc\r\ndef
   2259 
   2260 /(*ANYCRLF).*/g
   2261     abc\r\ndef
   2262 
   2263 /(*CRLF).*/g
   2264     abc\r\ndef
   2265 
   2266 /(*NUL)^.*/
   2267     a\nb\x00ccc
   2268 
   2269 /(*NUL)^.*/s
   2270     a\nb\x00ccc
   2271 
   2272 /^x/m,newline=NUL
   2273     ab\x00xy
   2274 
   2275 /'#comment' 0d 0a 00 '^x\' 0a 'y'/x,newline=nul,hex
   2276     x\nyz
   2277 
   2278 /(*NUL)^X\NY/
   2279     X\nY
   2280     X\rY
   2281 \= Expect no match
   2282     X\x00Y
   2283 
   2284 /a\Rb/I,bsr=anycrlf
   2285     a\rb
   2286     a\nb
   2287     a\r\nb
   2288 \= Expect no match
   2289     a\x85b
   2290     a\x0bb
   2291 
   2292 /a\Rb/I,bsr=unicode
   2293     a\rb
   2294     a\nb
   2295     a\r\nb
   2296     a\x85b
   2297     a\x0bb
   2298 
   2299 /a\R?b/I,bsr=anycrlf
   2300     a\rb
   2301     a\nb
   2302     a\r\nb
   2303 \= Expect no match
   2304     a\x85b
   2305     a\x0bb
   2306 
   2307 /a\R?b/I,bsr=unicode
   2308     a\rb
   2309     a\nb
   2310     a\r\nb
   2311     a\x85b
   2312     a\x0bb
   2313 
   2314 /a\R{2,4}b/I,bsr=anycrlf
   2315     a\r\n\nb
   2316     a\n\r\rb
   2317     a\r\n\r\n\r\n\r\nb
   2318 \= Expect no match
   2319     a\x85\x85b
   2320     a\x0b\x0bb
   2321 
   2322 /a\R{2,4}b/I,bsr=unicode
   2323     a\r\rb
   2324     a\n\n\nb
   2325     a\r\n\n\r\rb
   2326     a\x85\x85b
   2327     a\x0b\x0bb
   2328 \= Expect no match
   2329     a\r\r\r\r\rb
   2330 
   2331 /(*BSR_ANYCRLF)a\Rb/I
   2332     a\nb
   2333     a\rb
   2334 
   2335 /(*BSR_UNICODE)a\Rb/I
   2336     a\x85b
   2337 
   2338 /(*BSR_ANYCRLF)(*CRLF)a\Rb/I
   2339     a\nb
   2340     a\rb
   2341 
   2342 /(*CRLF)(*BSR_UNICODE)a\Rb/I
   2343     a\x85b
   2344 
   2345 /(*CRLF)(*BSR_ANYCRLF)(*CR)ab/I
   2346 
   2347 /(?<a>)(?&)/
   2348 
   2349 /(?<abc>)(?&a)/
   2350 
   2351 /(?<a>)(?&aaaaaaaaaaaaaaaaaaaaaaa)/
   2352 
   2353 /(?+-a)/
   2354 
   2355 /(?-+a)/
   2356 
   2357 /(?(-1))/
   2358 
   2359 /(?(+10))/
   2360 
   2361 /(?(10))/
   2362 
   2363 /(?(+2))()()/
   2364 
   2365 /(?(2))()()/
   2366 
   2367 /\k''/
   2368 
   2369 /\k<>/
   2370 
   2371 /\k{}/
   2372 
   2373 /\k/
   2374 
   2375 /\kabc/
   2376 
   2377 /(?P=)/
   2378 
   2379 /(?P>)/
   2380 
   2381 /[[:foo:]]/
   2382 
   2383 /[[:1234:]]/
   2384 
   2385 /[[:f\oo:]]/
   2386 
   2387 /[[: :]]/
   2388 
   2389 /[[:...:]]/
   2390 
   2391 /[[:l\ower:]]/
   2392 
   2393 /[[:abc\:]]/
   2394 
   2395 /[abc[:x\]pqr:]]/
   2396 
   2397 /[[:a\dz:]]/
   2398 
   2399 /(^(a|b\g<-1'c))/
   2400 
   2401 /^(?+1)(?<a>x|y){0}z/
   2402     xzxx
   2403     yzyy
   2404 \= Expect no match
   2405     xxz
   2406 
   2407 /(\3)(\1)(a)/
   2408 \= Expect no match
   2409     cat
   2410 
   2411 /(\3)(\1)(a)/alt_bsux,allow_empty_class,match_unset_backref,dupnames
   2412     cat
   2413 
   2414 /TA]/
   2415     The ACTA] comes
   2416 
   2417 /TA]/alt_bsux,allow_empty_class,match_unset_backref,dupnames
   2418     The ACTA] comes
   2419 
   2420 /(?2)[]a()b](abc)/
   2421     abcbabc
   2422 
   2423 /(?2)[^]a()b](abc)/
   2424     abcbabc
   2425 
   2426 /(?1)[]a()b](abc)/
   2427     abcbabc
   2428 \= Expect no match
   2429     abcXabc
   2430 
   2431 /(?1)[^]a()b](abc)/
   2432     abcXabc
   2433 \= Expect no match
   2434     abcbabc
   2435 
   2436 /(?2)[]a()b](abc)(xyz)/
   2437     xyzbabcxyz
   2438 
   2439 /(?&N)[]a(?<N>)](?<M>abc)/
   2440    abc<abc
   2441 
   2442 /(?&N)[]a(?<N>)](abc)/
   2443    abc<abc
   2444 
   2445 /a[]b/
   2446 
   2447 /a[^]b/
   2448 
   2449 /a[]b/alt_bsux,allow_empty_class,match_unset_backref,dupnames
   2450 \= Expect no match
   2451     ab
   2452 
   2453 /a[]+b/alt_bsux,allow_empty_class,match_unset_backref,dupnames
   2454 \= Expect no match
   2455     ab
   2456 
   2457 /a[]*+b/alt_bsux,allow_empty_class,match_unset_backref,dupnames
   2458 \= Expect no match
   2459     ab
   2460 
   2461 /a[^]b/alt_bsux,allow_empty_class,match_unset_backref,dupnames
   2462     aXb
   2463     a\nb
   2464 \= Expect no match
   2465     ab
   2466 
   2467 /a[^]+b/alt_bsux,allow_empty_class,match_unset_backref,dupnames
   2468     aXb
   2469     a\nX\nXb
   2470 \= Expect no match
   2471     ab
   2472 
   2473 /a(?!)b/B
   2474 
   2475 /(?!)?a/B
   2476     ab
   2477 
   2478 /a(*FAIL)+b/
   2479 
   2480 /(abc|pqr|123){0}[xyz]/I
   2481 
   2482 /(?(?=.*b)b|^)/I,auto_callout
   2483    adc
   2484    abc
   2485 
   2486 /(?(?=b).*b|^d)/I
   2487 
   2488 /(?(?=.*b).*b|^d)/I
   2489 
   2490 /xyz/auto_callout
   2491   xyz
   2492   abcxyz
   2493 \= Expect no match
   2494   abc
   2495   abcxypqr
   2496 
   2497 /xyz/auto_callout,no_start_optimize
   2498   abcxyz
   2499 \= Expect no match
   2500   abc
   2501   abcxypqr
   2502 
   2503 /(*NO_START_OPT)xyz/auto_callout
   2504   abcxyz
   2505 
   2506 /(*NO_AUTO_POSSESS)a+b/B
   2507 
   2508 /xyz/auto_callout,no_start_optimize
   2509   abcxyz
   2510 
   2511 /^"((?(?=[a])[^"])|b)*"$/auto_callout
   2512     "ab"
   2513 
   2514 /^"((?(?=[a])[^"])|b)*"$/
   2515     "ab"
   2516 
   2517 /^X(?5)(a)(?|(b)|(q))(c)(d)Y/
   2518     XYabcdY
   2519 
   2520 /^X(?&N)(a)(?|(b)|(q))(c)(d)(?<N>Y)/
   2521     XYabcdY
   2522 
   2523 /Xa{2,4}b/
   2524     X\=ps
   2525     Xa\=ps
   2526     Xaa\=ps
   2527     Xaaa\=ps
   2528     Xaaaa\=ps
   2529 
   2530 /Xa{2,4}?b/
   2531     X\=ps
   2532     Xa\=ps
   2533     Xaa\=ps
   2534     Xaaa\=ps
   2535     Xaaaa\=ps
   2536 
   2537 /Xa{2,4}+b/
   2538     X\=ps
   2539     Xa\=ps
   2540     Xaa\=ps
   2541     Xaaa\=ps
   2542     Xaaaa\=ps
   2543 
   2544 /X\d{2,4}b/
   2545     X\=ps
   2546     X3\=ps
   2547     X33\=ps
   2548     X333\=ps
   2549     X3333\=ps
   2550 
   2551 /X\d{2,4}?b/
   2552     X\=ps
   2553     X3\=ps
   2554     X33\=ps
   2555     X333\=ps
   2556     X3333\=ps
   2557 
   2558 /X\d{2,4}+b/
   2559     X\=ps
   2560     X3\=ps
   2561     X33\=ps
   2562     X333\=ps
   2563     X3333\=ps
   2564 
   2565 /X\D{2,4}b/
   2566     X\=ps
   2567     Xa\=ps
   2568     Xaa\=ps
   2569     Xaaa\=ps
   2570     Xaaaa\=ps
   2571 
   2572 /X\D{2,4}?b/
   2573     X\=ps
   2574     Xa\=ps
   2575     Xaa\=ps
   2576     Xaaa\=ps
   2577     Xaaaa\=ps
   2578 
   2579 /X\D{2,4}+b/
   2580     X\=ps
   2581     Xa\=ps
   2582     Xaa\=ps
   2583     Xaaa\=ps
   2584     Xaaaa\=ps
   2585 
   2586 /X[abc]{2,4}b/
   2587     X\=ps
   2588     Xa\=ps
   2589     Xaa\=ps
   2590     Xaaa\=ps
   2591     Xaaaa\=ps
   2592 
   2593 /X[abc]{2,4}?b/
   2594     X\=ps
   2595     Xa\=ps
   2596     Xaa\=ps
   2597     Xaaa\=ps
   2598     Xaaaa\=ps
   2599 
   2600 /X[abc]{2,4}+b/
   2601     X\=ps
   2602     Xa\=ps
   2603     Xaa\=ps
   2604     Xaaa\=ps
   2605     Xaaaa\=ps
   2606 
   2607 /X[^a]{2,4}b/
   2608     X\=ps
   2609     Xz\=ps
   2610     Xzz\=ps
   2611     Xzzz\=ps
   2612     Xzzzz\=ps
   2613 
   2614 /X[^a]{2,4}?b/
   2615     X\=ps
   2616     Xz\=ps
   2617     Xzz\=ps
   2618     Xzzz\=ps
   2619     Xzzzz\=ps
   2620 
   2621 /X[^a]{2,4}+b/
   2622     X\=ps
   2623     Xz\=ps
   2624     Xzz\=ps
   2625     Xzzz\=ps
   2626     Xzzzz\=ps
   2627 
   2628 /(Y)X\1{2,4}b/
   2629     YX\=ps
   2630     YXY\=ps
   2631     YXYY\=ps
   2632     YXYYY\=ps
   2633     YXYYYY\=ps
   2634 
   2635 /(Y)X\1{2,4}?b/
   2636     YX\=ps
   2637     YXY\=ps
   2638     YXYY\=ps
   2639     YXYYY\=ps
   2640     YXYYYY\=ps
   2641 
   2642 /(Y)X\1{2,4}+b/
   2643     YX\=ps
   2644     YXY\=ps
   2645     YXYY\=ps
   2646     YXYYY\=ps
   2647     YXYYYY\=ps
   2648 
   2649 /\++\KZ|\d+X|9+Y/startchar
   2650     ++++123999\=ps
   2651     ++++123999Y\=ps
   2652     ++++Z1234\=ps
   2653 
   2654 /Z(*F)/
   2655 \= Expect no match
   2656     Z\=ps
   2657     ZA\=ps
   2658 
   2659 /Z(?!)/
   2660 \= Expect no match
   2661     Z\=ps
   2662     ZA\=ps
   2663 
   2664 /dog(sbody)?/
   2665     dogs\=ps
   2666     dogs\=ph
   2667 
   2668 /dog(sbody)??/
   2669     dogs\=ps
   2670     dogs\=ph
   2671 
   2672 /dog|dogsbody/
   2673     dogs\=ps
   2674     dogs\=ph
   2675 
   2676 /dogsbody|dog/
   2677     dogs\=ps
   2678     dogs\=ph
   2679 
   2680 /\bthe cat\b/
   2681     the cat\=ps
   2682     the cat\=ph
   2683 
   2684 /abc/
   2685    abc\=ps
   2686    abc\=ph
   2687 
   2688 /abc\K123/startchar
   2689     xyzabc123pqr
   2690     xyzabc12\=ps
   2691     xyzabc12\=ph
   2692 
   2693 /(?<=abc)123/
   2694     xyzabc123pqr
   2695     xyzabc12\=ps
   2696     xyzabc12\=ph
   2697 
   2698 /\babc\b/
   2699     +++abc+++
   2700     +++ab\=ps
   2701     +++ab\=ph
   2702 
   2703 /(?&word)(?&element)(?(DEFINE)(?<element><[^m][^>]>[^<])(?<word>\w*+))/B
   2704 
   2705 /(?&word)(?&element)(?(DEFINE)(?<element><[^\d][^>]>[^<])(?<word>\w*+))/B
   2706 
   2707 /(ab)(x(y)z(cd(*ACCEPT)))pq/B
   2708 
   2709 /abc\K/aftertext,startchar
   2710     abcdef
   2711     abcdef\=notempty_atstart
   2712     xyzabcdef\=notempty_atstart
   2713 \= Expect no match
   2714     abcdef\=notempty
   2715     xyzabcdef\=notempty
   2716 
   2717 /^(?:(?=abc)|abc\K)/aftertext,startchar
   2718     abcdef
   2719     abcdef\=notempty_atstart
   2720 \= Expect no match
   2721     abcdef\=notempty
   2722 
   2723 /a?b?/aftertext
   2724     xyz
   2725     xyzabc
   2726     xyzabc\=notempty
   2727     xyzabc\=notempty_atstart
   2728     xyz\=notempty_atstart
   2729 \= Expect no match
   2730     xyz\=notempty
   2731 
   2732 /^a?b?/aftertext
   2733     xyz
   2734     xyzabc
   2735 \= Expect no match
   2736     xyzabc\=notempty
   2737     xyzabc\=notempty_atstart
   2738     xyz\=notempty_atstart
   2739     xyz\=notempty
   2740 
   2741 /^(?<name>a|b\g<name>c)/
   2742     aaaa
   2743     bacxxx
   2744     bbaccxxx
   2745     bbbacccxx
   2746 
   2747 /^(?<name>a|b\g'name'c)/
   2748     aaaa
   2749     bacxxx
   2750     bbaccxxx
   2751     bbbacccxx
   2752 
   2753 /^(a|b\g<1>c)/
   2754     aaaa
   2755     bacxxx
   2756     bbaccxxx
   2757     bbbacccxx
   2758 
   2759 /^(a|b\g'1'c)/
   2760     aaaa
   2761     bacxxx
   2762     bbaccxxx
   2763     bbbacccxx
   2764 
   2765 /^(a|b\g'-1'c)/
   2766     aaaa
   2767     bacxxx
   2768     bbaccxxx
   2769     bbbacccxx
   2770 
   2771 /(^(a|b\g<-1>c))/
   2772     aaaa
   2773     bacxxx
   2774     bbaccxxx
   2775     bbbacccxx
   2776 
   2777 /(?-i:\g<name>)(?i:(?<name>a))/
   2778     XaaX
   2779     XAAX
   2780 
   2781 /(?i:\g<name>)(?-i:(?<name>a))/
   2782     XaaX
   2783 \= Expect no match
   2784     XAAX
   2785 
   2786 /(?-i:\g<+1>)(?i:(a))/
   2787     XaaX
   2788     XAAX
   2789 
   2790 /(?=(?<regex>(?#simplesyntax)\$(?<name>[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)(?:\[(?<index>[a-zA-Z0-9_\x{7f}-\x{ff}]+|\$\g<name>)\]|->\g<name>(\(.*?\))?)?|(?#simple syntax withbraces)\$\{(?:\g<name>(?<indices>\[(?:\g<index>|'(?:\\.|[^'\\])*'|"(?:\g<regex>|\\.|[^"\\])*")\])?|\g<complex>|\$\{\g<complex>\})\}|(?#complexsyntax)\{(?<complex>\$(?<segment>\g<name>(\g<indices>*|\(.*?\))?)(?:->\g<segment>)*|\$\g<complex>|\$\{\g<complex>\})\}))\{/
   2791 
   2792 /(?<n>a|b|c)\g<n>*/
   2793    abc
   2794    accccbbb
   2795 
   2796 /^X(?7)(a)(?|(b)|(q)(r)(s))(c)(d)(Y)/
   2797     XYabcdY
   2798 
   2799 /(?<=b(?1)|zzz)(a)/
   2800     xbaax
   2801     xzzzax
   2802 
   2803 /(a)(?<=b\1)/
   2804 
   2805 /(a)(?<=b+(?1))/
   2806 
   2807 /(a+)(?<=b(?1))/
   2808 
   2809 /(a(?<=b(?1)))/
   2810 
   2811 /(?<=b(?1))xyz/
   2812 
   2813 /(?<=b(?1))xyz(b+)pqrstuvew/
   2814 
   2815 /(a|bc)\1/I
   2816 
   2817 /(a|bc)\1{2,3}/I
   2818 
   2819 /(a|bc)(?1)/I
   2820 
   2821 /(a|b\1)(a|b\1)/I
   2822 
   2823 /(a|b\1){2}/I
   2824 
   2825 /(a|bbbb\1)(a|bbbb\1)/I
   2826 
   2827 /(a|bbbb\1){2}/I
   2828 
   2829 /^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]/I
   2830 
   2831 /<tr([\w\W\s\d][^<>]{0,})><TD([\w\W\s\d][^<>]{0,})>([\d]{0,}\.)(.*)((<BR>([\w\W\s\d][^<>]{0,})|[\s]{0,}))<\/a><\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><\/TR>/Iis
   2832 
   2833 "(?>.*/)foo"I
   2834 
   2835 /(?(?=[^a-z]+[a-z])  \d{2}-[a-z]{3}-\d{2}  |  \d{2}-\d{2}-\d{2} ) /Ix
   2836 
   2837 /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/Ii
   2838 
   2839 /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/I
   2840 
   2841 /<a[\s]+href[\s]*=[\s]*          # find <a href=
   2842  ([\"\'])?                       # find single or double quote
   2843  (?(1) (.*?)\1 | ([^\s]+))       # if quote found, match up to next matching
   2844                                  # quote, otherwise match up to next space
   2845 /Iisx
   2846 
   2847 /^(?!:)                       # colon disallowed at start
   2848   (?:                         # start of item
   2849     (?: [0-9a-f]{1,4} |       # 1-4 hex digits or
   2850     (?(1)0 | () ) )           # if null previously matched, fail; else null
   2851     :                         # followed by colon
   2852   ){1,7}                      # end item; 1-7 of them required
   2853   [0-9a-f]{1,4} $             # final hex number at end of string
   2854   (?(1)|.)                    # check that there was an empty component
   2855   /Iix
   2856 
   2857 /(?|(?<a>A)|(?<a>B))/I
   2858     AB\=copy=a
   2859     BA\=copy=a
   2860 
   2861 /(?|(?<a>A)|(?<b>B))/
   2862 
   2863 /(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) |
   2864     b(?<quote> (?<apostrophe>')|(?<realquote>")) )
   2865     (?('quote')[a-z]+|[0-9]+)/Ix,dupnames
   2866     a"aaaaa
   2867     b"aaaaa
   2868 \= Expect no match
   2869     b"11111
   2870     a"11111
   2871 
   2872 /^(?|(a)(b)(c)(?<D>d)|(?<D>e)) (?('D')X|Y)/IBx,dupnames
   2873     abcdX
   2874     eX
   2875 \= Expect no match
   2876     abcdY
   2877     ey
   2878 
   2879 /(?<A>a) (b)(c)  (?<A>d  (?(R&A)$ | (?4)) )/IBx,dupnames
   2880     abcdd
   2881 \= Expect no match
   2882     abcdde
   2883 
   2884 /abcd*/
   2885     xxxxabcd\=ps
   2886     xxxxabcd\=ph
   2887 
   2888 /abcd*/i
   2889     xxxxabcd\=ps
   2890     xxxxabcd\=ph
   2891     XXXXABCD\=ps
   2892     XXXXABCD\=ph
   2893 
   2894 /abc\d*/
   2895     xxxxabc1\=ps
   2896     xxxxabc1\=ph
   2897 
   2898 /(a)bc\1*/
   2899     xxxxabca\=ps
   2900     xxxxabca\=ph
   2901 
   2902 /abc[de]*/
   2903     xxxxabcde\=ps
   2904     xxxxabcde\=ph
   2905 
   2906 /(\3)(\1)(a)/alt_bsux,allow_empty_class,match_unset_backref,dupnames
   2907     cat
   2908 
   2909 /(\3)(\1)(a)/I,alt_bsux,allow_empty_class,match_unset_backref,dupnames
   2910     cat
   2911 
   2912 /(\3)(\1)(a)/I
   2913 \= Expect no match
   2914     cat
   2915 
   2916 /i(?(DEFINE)(?<s>a))/I
   2917     i
   2918 
   2919 /()i(?(1)a)/I
   2920     ia
   2921 
   2922 /(?i)a(?-i)b|c/B
   2923     XabX
   2924     XAbX
   2925     CcC
   2926 \= Expect no match
   2927     XABX
   2928 
   2929 /(?i)a(?s)b|c/B
   2930 
   2931 /(?i)a(?s-i)b|c/B
   2932 
   2933 /^(ab(c\1)d|x){2}$/B
   2934     xabcxd
   2935 
   2936 /^(?&t)*+(?(DEFINE)(?<t>.))$/B
   2937 
   2938 /^(?&t)*(?(DEFINE)(?<t>.))$/B
   2939 
   2940 # This one is here because Perl gives the match as "b" rather than "ab". I
   2941 # believe this to be a Perl bug.
   2942 
   2943 /(?>a\Kb)z|(ab)/
   2944     ab\=startchar
   2945 
   2946 /(?P<L1>(?P<L2>0|)|(?P>L2)(?P>L1))/
   2947     abcd
   2948     0abc
   2949 
   2950 /abc(*MARK:)pqr/
   2951 
   2952 /abc(*:)pqr/
   2953 
   2954 /(*COMMIT:X)/B
   2955 
   2956 # This should, and does, fail. In Perl, it does not, which I think is a
   2957 # bug because replacing the B in the pattern by (B|D) does make it fail.
   2958 # Turning off Perl's optimization by inserting (??{""}) also makes it fail.
   2959 
   2960 /A(*COMMIT)B/aftertext,mark
   2961 \= Expect no match
   2962     ACABX
   2963 
   2964 # These should be different, but in Perl they are not, which I think
   2965 # is a bug in Perl.
   2966 
   2967 /A(*THEN)B|A(*THEN)C/mark
   2968     AC
   2969 
   2970 /A(*PRUNE)B|A(*PRUNE)C/mark
   2971 \= Expect no match
   2972     AC
   2973 
   2974 # Mark names can be duplicated. Perl doesn't give a mark for this one,
   2975 # though PCRE2 does.
   2976 
   2977 /^A(*:A)B|^X(*:A)Y/mark
   2978 \= Expect no match
   2979     XAQQ
   2980 
   2981 # COMMIT at the start of a pattern should be the same as an anchor. Perl
   2982 # optimizations defeat this. So does the PCRE2 optimization unless we disable
   2983 # it.
   2984 
   2985 /(*COMMIT)ABC/
   2986     ABCDEFG
   2987 
   2988 /(*COMMIT)ABC/no_start_optimize
   2989 \= Expect no match
   2990     DEFGABC
   2991 
   2992 /^(ab (c+(*THEN)cd) | xyz)/x
   2993 \= Expect no match
   2994     abcccd
   2995 
   2996 /^(ab (c+(*PRUNE)cd) | xyz)/x
   2997 \= Expect no match
   2998     abcccd
   2999 
   3000 /^(ab (c+(*FAIL)cd) | xyz)/x
   3001 \= Expect no match
   3002     abcccd
   3003 
   3004 # Perl gets some of these wrong
   3005 
   3006 /(?>.(*ACCEPT))*?5/
   3007     abcde
   3008 
   3009 /(.(*ACCEPT))*?5/
   3010     abcde
   3011 
   3012 /(.(*ACCEPT))5/
   3013     abcde
   3014 
   3015 /(.(*ACCEPT))*5/
   3016     abcde
   3017 
   3018 /A\NB./B
   3019     ACBD
   3020 \= Expect no match
   3021     A\nB
   3022     ACB\n
   3023 
   3024 /A\NB./Bs
   3025     ACBD
   3026     ACB\n
   3027 \= Expect no match
   3028     A\nB
   3029 
   3030 /A\NB/newline=crlf
   3031     A\nB
   3032     A\rB
   3033 \= Expect no match
   3034     A\r\nB
   3035 
   3036 /\R+b/B
   3037 
   3038 /\R+\n/B
   3039 
   3040 /\R+\d/B
   3041 
   3042 /\d*\R/B
   3043 
   3044 /\s*\R/B
   3045     \x20\x0a
   3046     \x20\x0d
   3047     \x20\x0d\x0a
   3048 
   3049 /\S*\R/B
   3050     a\x0a
   3051 
   3052 /X\h*\R/B
   3053     X\x20\x0a
   3054 
   3055 /X\H*\R/B
   3056     X\x0d\x0a
   3057 
   3058 /X\H+\R/B
   3059     X\x0d\x0a
   3060 
   3061 /X\H++\R/B
   3062 \= Expect no match
   3063     X\x0d\x0a
   3064 
   3065 /(?<=abc)def/
   3066     abc\=ph
   3067 
   3068 /abc$/
   3069     abc
   3070     abc\=ps
   3071     abc\=ph
   3072 
   3073 /abc$/m
   3074     abc
   3075     abc\n
   3076     abc\=ph
   3077     abc\n\=ph
   3078     abc\=ps
   3079     abc\n\=ps
   3080 
   3081 /abc\z/
   3082     abc
   3083     abc\=ps
   3084     abc\=ph
   3085 
   3086 /abc\Z/
   3087     abc
   3088     abc\=ps
   3089     abc\=ph
   3090 
   3091 /abc\b/
   3092     abc
   3093     abc\=ps
   3094     abc\=ph
   3095 
   3096 /abc\B/
   3097     abc\=ps
   3098     abc\=ph
   3099 \= Expect no match
   3100     abc
   3101 
   3102 /.+/
   3103 \= Bad offsets
   3104     abc\=offset=4
   3105     abc\=offset=-4
   3106 \= Valid data
   3107     abc\=offset=0
   3108     abc\=offset=1
   3109     abc\=offset=2
   3110 \= Expect no match
   3111     abc\=offset=3
   3112 
   3113 /^\c/
   3114 
   3115 /(?P<abn>(?P=abn)xxx)/B
   3116 
   3117 /(a\1z)/B
   3118 
   3119 /(?P<abn>(?P=abn)(?<badstufxxx)/B
   3120 
   3121 /(?P<abn>(?P=axn)xxx)/B
   3122 
   3123 /(?P<abn>(?P=axn)xxx)(?<axn>yy)/B
   3124 
   3125 # These tests are here because Perl gets the first one wrong.
   3126 
   3127 /(\R*)(.)/s
   3128     \r\n
   3129     \r\r\n\n\r
   3130     \r\r\n\n\r\n
   3131 
   3132 /(\R)*(.)/s
   3133     \r\n
   3134     \r\r\n\n\r
   3135     \r\r\n\n\r\n
   3136 
   3137 /((?>\r\n|\n|\x0b|\f|\r|\x85)*)(.)/s
   3138     \r\n
   3139     \r\r\n\n\r
   3140     \r\r\n\n\r\n
   3141 
   3142 # -------------
   3143 
   3144 /^abc$/B
   3145 
   3146 /^abc$/Bm
   3147 
   3148 /^(a)*+(\w)/
   3149     aaaaX
   3150 \= Expect no match
   3151     aaaa
   3152 
   3153 /^(?:a)*+(\w)/
   3154     aaaaX
   3155 \= Expect no match
   3156     aaaa
   3157 
   3158 /(a)++1234/IB
   3159 
   3160 /([abc])++1234/I
   3161 
   3162 /(?<=(abc)+)X/
   3163 
   3164 /(^ab)/I
   3165 
   3166 /(^ab)++/I
   3167 
   3168 /(^ab|^)+/I
   3169 
   3170 /(^ab|^)++/I
   3171 
   3172 /(?:^ab)/I
   3173 
   3174 /(?:^ab)++/I
   3175 
   3176 /(?:^ab|^)+/I
   3177 
   3178 /(?:^ab|^)++/I
   3179 
   3180 /(.*ab)/I
   3181 
   3182 /(.*ab)++/I
   3183 
   3184 /(.*ab|.*)+/I
   3185 
   3186 /(.*ab|.*)++/I
   3187 
   3188 /(?:.*ab)/I
   3189 
   3190 /(?:.*ab)++/I
   3191 
   3192 /(?:.*ab|.*)+/I
   3193 
   3194 /(?:.*ab|.*)++/I
   3195 
   3196 /(?=a)[bcd]/I
   3197 
   3198 /((?=a))[bcd]/I
   3199 
   3200 /((?=a))+[bcd]/I
   3201 
   3202 /((?=a))++[bcd]/I
   3203 
   3204 /(?=a+)[bcd]/Ii
   3205 
   3206 /(?=a+?)[bcd]/Ii
   3207 
   3208 /(?=a++)[bcd]/Ii
   3209 
   3210 /(?=a{3})[bcd]/Ii
   3211 
   3212 /(abc)\1+/
   3213 
   3214 # Perl doesn't get these right IMO (the 3rd is PCRE2-specific)
   3215 
   3216 /(?1)(?:(b(*ACCEPT))){0}/
   3217     b
   3218 
   3219 /(?1)(?:(b(*ACCEPT))){0}c/
   3220     bc
   3221 \= Expect no match
   3222     b
   3223 
   3224 /(?1)(?:((*ACCEPT))){0}c/
   3225     c
   3226     c\=notempty
   3227 
   3228 /^.*?(?(?=a)a|b(*THEN)c)/
   3229 \= Expect no match
   3230     ba
   3231 
   3232 /^.*?(?(?=a)a|bc)/
   3233     ba
   3234 
   3235 /^.*?(?(?=a)a(*THEN)b|c)/
   3236 \= Expect no match
   3237     ac
   3238 
   3239 /^.*?(?(?=a)a(*THEN)b)c/
   3240 \= Expect no match
   3241     ac
   3242 
   3243 /^.*?(a(*THEN)b)c/
   3244 \= Expect no match
   3245     aabc
   3246 
   3247 /^.*? (?1) c (?(DEFINE)(a(*THEN)b))/x
   3248     aabc
   3249 
   3250 /^.*?(a(*THEN)b|z)c/
   3251     aabc
   3252 
   3253 /^.*?(z|a(*THEN)b)c/
   3254     aabc
   3255 
   3256 # These are here because they are not Perl-compatible; the studying means the
   3257 # mark is not seen.
   3258 
   3259 /(*MARK:A)(*SKIP:B)(C|X)/mark
   3260     C
   3261 \= Expect no match
   3262     D
   3263 
   3264 /(*:A)A+(*SKIP:A)(B|Z)/mark
   3265 \= Expect no match
   3266     AAAC
   3267 
   3268 # ----------------------------
   3269 
   3270 "(?=a*(*ACCEPT)b)c"
   3271     c
   3272     c\=notempty
   3273 
   3274 /(?1)c(?(DEFINE)((*ACCEPT)b))/
   3275     c
   3276     c\=notempty
   3277 
   3278 /(?>(*ACCEPT)b)c/
   3279     c
   3280 \= Expect no match
   3281     c\=notempty
   3282 
   3283 /(?:(?>(a)))+a%/allaftertext
   3284     %aa%
   3285 
   3286 /(a)b|ac/allaftertext
   3287     ac\=ovector=1
   3288 
   3289 /(a)(b)x|abc/allaftertext
   3290      abc\=ovector=2
   3291 
   3292 /(a)bc|(a)(b)\2/
   3293     abc\=ovector=1
   3294     abc\=ovector=2
   3295     aba\=ovector=1
   3296     aba\=ovector=2
   3297     aba\=ovector=3
   3298     aba\=ovector=4
   3299 
   3300 /(?(DEFINE)(a(?2)|b)(b(?1)|a))(?:(?1)|(?2))/I
   3301 
   3302 /(a(?2)|b)(b(?1)|a)(?:(?1)|(?2))/I
   3303 
   3304 /(a(?2)|b)(b(?1)|a)(?1)(?2)/I
   3305 
   3306 /(abc)(?1)/I
   3307 
   3308 /(?:(foo)|(bar)|(baz))X/allcaptures
   3309     bazfooX
   3310     foobazbarX
   3311     barfooX
   3312     bazX
   3313     foobarbazX
   3314     bazfooX\=ovector=0
   3315     bazfooX\=ovector=1
   3316     bazfooX\=ovector=2
   3317     bazfooX\=ovector=3
   3318 
   3319 /(?=abc){3}abc/B
   3320 
   3321 /(?=abc)+abc/B
   3322 
   3323 /(?=abc)++abc/B
   3324 
   3325 /(?=abc){0}xyz/B
   3326 
   3327 /(?=(a))?./B
   3328 
   3329 /(?=(a))??./B
   3330 
   3331 /^(?=(a)){0}b(?1)/B
   3332 
   3333 /(?(DEFINE)(a))?b(?1)/B
   3334 
   3335 /^(?=(?1))?[az]([abc])d/B
   3336 
   3337 /^(?!a){0}\w+/B
   3338 
   3339 /(?<=(abc))?xyz/B
   3340 
   3341 /[:a[:abc]b:]/B
   3342 
   3343 /^(a(*:A)(d|e(*:B))z|aeq)/auto_callout
   3344     adz
   3345     aez
   3346     aeqwerty
   3347 
   3348 /.(*F)/
   3349 \= Expect no match
   3350     abc\=ph
   3351 
   3352 /\btype\b\W*?\btext\b\W*?\bjavascript\b/I
   3353 
   3354 /\btype\b\W*?\btext\b\W*?\bjavascript\b|\burl\b\W*?\bshell:|<input\b.*?\btype\b\W*?\bimage\b|\bonkeyup\b\W*?\=/I
   3355 
   3356 /a(*SKIP)c|b(*ACCEPT)|/I,aftertext
   3357     a
   3358 
   3359 /a(*SKIP)c|b(*ACCEPT)cd(*ACCEPT)|x/I
   3360     ax
   3361 
   3362 'a*(*ACCEPT)b'aftertext
   3363     abc\=notempty_atstart
   3364     bbb\=notempty_atstart
   3365 \= Expect no match
   3366     \=notempty_atstart
   3367 
   3368 /(*ACCEPT)a/I,aftertext
   3369     bax
   3370 
   3371 /z(*ACCEPT)a/I,aftertext
   3372     baxzbx
   3373 
   3374 /^(?>a+)(?>(z+))\w/B
   3375     aaaazzzzb
   3376 \= Expect no match
   3377     aazz
   3378 
   3379 /(.)(\1|a(?2))/
   3380     bab
   3381 
   3382 /\1|(.)(?R)\1/
   3383     cbbbc
   3384 
   3385 /(.)((?(1)c|a)|a(?2))/
   3386 \= Expect no match
   3387     baa
   3388 
   3389 /(?P<abn>(?P=abn)xxx)/B
   3390 
   3391 /(a\1z)/B
   3392 
   3393 /^a\x41z/alt_bsux,allow_empty_class,match_unset_backref,dupnames
   3394     aAz
   3395 \= Expect no match
   3396     ax41z
   3397 
   3398 /^a[m\x41]z/alt_bsux,allow_empty_class,match_unset_backref,dupnames
   3399     aAz
   3400 
   3401 /^a\x1z/alt_bsux,allow_empty_class,match_unset_backref,dupnames
   3402     ax1z
   3403 
   3404 /^a\u0041z/alt_bsux,allow_empty_class,match_unset_backref,dupnames
   3405     aAz
   3406 \= Expect no match
   3407     au0041z
   3408 
   3409 /^a[m\u0041]z/alt_bsux,allow_empty_class,match_unset_backref,dupnames
   3410     aAz
   3411 
   3412 /^a\u041z/alt_bsux,allow_empty_class,match_unset_backref,dupnames
   3413     au041z
   3414 \= Expect no match
   3415     aAz
   3416 
   3417 /^a\U0041z/alt_bsux,allow_empty_class,match_unset_backref,dupnames
   3418     aU0041z
   3419 \= Expect no match
   3420     aAz
   3421 
   3422 /(?(?=c)c|d)++Y/B
   3423 
   3424 /(?(?=c)c|d)*+Y/B
   3425 
   3426 /a[\NB]c/
   3427     aNc
   3428 
   3429 /a[B-\Nc]/
   3430 
   3431 /a[B\Nc]/
   3432 
   3433 /(a)(?2){0,1999}?(b)/
   3434 
   3435 /(a)(?(DEFINE)(b))(?2){0,1999}?(?2)/
   3436 
   3437 # This test, with something more complicated than individual letters, causes
   3438 # different behaviour in Perl. Perhaps it disables some optimization; no tag is
   3439 # passed back for the failures, whereas in PCRE2 there is a tag.
   3440 
   3441 /(A|P)(*:A)(B|P) | (X|P)(X|P)(*:B)(Y|P)/x,mark
   3442     AABC
   3443     XXYZ
   3444 \= Expect no match
   3445     XAQQ
   3446     XAQQXZZ
   3447     AXQQQ
   3448     AXXQQQ
   3449 
   3450 # Perl doesn't give marks for these, though it does if the alternatives are
   3451 # replaced by single letters.
   3452 
   3453 /(b|q)(*:m)f|a(*:n)w/mark
   3454     aw
   3455 \= Expect no match
   3456     abc
   3457 
   3458 /(q|b)(*:m)f|a(*:n)w/mark
   3459     aw
   3460 \= Expect no match
   3461     abc
   3462 
   3463 # After a partial match, the behaviour is as for a failure.
   3464 
   3465 /^a(*:X)bcde/mark
   3466    abc\=ps
   3467 
   3468 # These are here because Perl doesn't return a mark, except for the first.
   3469 
   3470 /(?=(*:x))(q|)/aftertext,mark
   3471     abc
   3472 
   3473 /(?=(*:x))((*:y)q|)/aftertext,mark
   3474     abc
   3475 
   3476 /(?=(*:x))(?:(*:y)q|)/aftertext,mark
   3477     abc
   3478 
   3479 /(?=(*:x))(?>(*:y)q|)/aftertext,mark
   3480     abc
   3481 
   3482 /(?=a(*:x))(?!a(*:y)c)/aftertext,mark
   3483     ab
   3484 
   3485 /(?=a(*:x))(?=a(*:y)c|)/aftertext,mark
   3486     ab
   3487 
   3488 /(..)\1/
   3489     ab\=ps
   3490     aba\=ps
   3491     abab\=ps
   3492 
   3493 /(..)\1/i
   3494     ab\=ps
   3495     abA\=ps
   3496     aBAb\=ps
   3497 
   3498 /(..)\1{2,}/
   3499     ab\=ps
   3500     aba\=ps
   3501     abab\=ps
   3502     ababa\=ps
   3503     ababab\=ps
   3504     ababab\=ph
   3505     abababa\=ps
   3506     abababa\=ph
   3507 
   3508 /(..)\1{2,}/i
   3509     ab\=ps
   3510     aBa\=ps
   3511     aBAb\=ps
   3512     AbaBA\=ps
   3513     abABAb\=ps
   3514     aBAbaB\=ph
   3515     abABabA\=ps
   3516     abaBABa\=ph
   3517 
   3518 /(..)\1{2,}?x/i
   3519     ab\=ps
   3520     abA\=ps
   3521     aBAb\=ps
   3522     abaBA\=ps
   3523     abAbaB\=ps
   3524     abaBabA\=ps
   3525     abAbABaBx\=ps
   3526 
   3527 /^(..)\1/
   3528     aba\=ps
   3529 
   3530 /^(..)\1{2,3}x/
   3531     aba\=ps
   3532     ababa\=ps
   3533     ababa\=ph
   3534     abababx
   3535     ababababx
   3536 
   3537 /^(..)\1{2,3}?x/
   3538     aba\=ps
   3539     ababa\=ps
   3540     ababa\=ph
   3541     abababx
   3542     ababababx
   3543 
   3544 /^(..)(\1{2,3})ab/
   3545     abababab
   3546 
   3547 /^\R/
   3548     \r\=ps
   3549     \r\=ph
   3550 
   3551 /^\R{2,3}x/
   3552     \r\=ps
   3553     \r\=ph
   3554     \r\r\=ps
   3555     \r\r\=ph
   3556     \r\r\r\=ps
   3557     \r\r\r\=ph
   3558     \r\rx
   3559     \r\r\rx
   3560 
   3561 /^\R{2,3}?x/
   3562     \r\=ps
   3563     \r\=ph
   3564     \r\r\=ps
   3565     \r\r\=ph
   3566     \r\r\r\=ps
   3567     \r\r\r\=ph
   3568     \r\rx
   3569     \r\r\rx
   3570 
   3571 /^\R?x/
   3572     \r\=ps
   3573     \r\=ph
   3574     x
   3575     \rx
   3576 
   3577 /^\R+x/
   3578     \r\=ps
   3579     \r\=ph
   3580     \r\n\=ps
   3581     \r\n\=ph
   3582     \rx
   3583 
   3584 /^a$/newline=crlf
   3585     a\r\=ps
   3586     a\r\=ph
   3587 
   3588 /^a$/m,newline=crlf
   3589     a\r\=ps
   3590     a\r\=ph
   3591 
   3592 /^(a$|a\r)/newline=crlf
   3593     a\r\=ps
   3594     a\r\=ph
   3595 
   3596 /^(a$|a\r)/m,newline=crlf
   3597     a\r\=ps
   3598     a\r\=ph
   3599 
   3600 /./newline=crlf
   3601     \r\=ps
   3602     \r\=ph
   3603 
   3604 /.{2,3}/newline=crlf
   3605     \r\=ps
   3606     \r\=ph
   3607     \r\r\=ps
   3608     \r\r\=ph
   3609     \r\r\r\=ps
   3610     \r\r\r\=ph
   3611 
   3612 /.{2,3}?/newline=crlf
   3613     \r\=ps
   3614     \r\=ph
   3615     \r\r\=ps
   3616     \r\r\=ph
   3617     \r\r\r\=ps
   3618     \r\r\r\=ph
   3619 
   3620 "AB(C(D))(E(F))?(?(?=\2)(?=\4))"
   3621     ABCDGHI\=ovector=01
   3622 
   3623 # These are all run as real matches in test 1; here we are just checking the
   3624 # settings of the anchored and startline bits.
   3625 
   3626 /(?>.*?a)(?<=ba)/I
   3627 
   3628 /(?:.*?a)(?<=ba)/I
   3629 
   3630 /.*?a(*PRUNE)b/I
   3631 
   3632 /.*?a(*PRUNE)b/Is
   3633 
   3634 /^a(*PRUNE)b/Is
   3635 
   3636 /.*?a(*SKIP)b/I
   3637 
   3638 /(?>.*?a)b/Is
   3639 
   3640 /(?>.*?a)b/I
   3641 
   3642 /(?>^a)b/Is
   3643 
   3644 /(?>.*?)(?<=(abcd)|(wxyz))/I
   3645 
   3646 /(?>.*)(?<=(abcd)|(wxyz))/I
   3647 
   3648 "(?>.*)foo"I
   3649 
   3650 "(?>.*?)foo"I
   3651 
   3652 /(?>^abc)/Im
   3653 
   3654 /(?>.*abc)/Im
   3655 
   3656 /(?:.*abc)/Im
   3657 
   3658 /(?:(a)+(?C1)bb|aa(?C2)b)/
   3659     aab\=callout_capture
   3660 
   3661 /(?:(a)++(?C1)bb|aa(?C2)b)/
   3662     aab\=callout_capture
   3663 
   3664 /(?:(?>(a))(?C1)bb|aa(?C2)b)/
   3665     aab\=callout_capture
   3666 
   3667 /(?:(?1)(?C1)x|ab(?C2))((a)){0}/
   3668     aab\=callout_capture
   3669 
   3670 /(?1)(?C1)((a)(?C2)){0}/
   3671     aab\=callout_capture
   3672 
   3673 /(?:(a)+(?C1)bb|aa(?C2)b)++/
   3674     aab\=callout_capture
   3675     aab\=callout_capture,ovector=1
   3676 
   3677 /(ab)x|ab/
   3678     ab\=ovector=0
   3679     ab\=ovector=1
   3680 
   3681 /(?<=123)(*MARK:xx)abc/mark
   3682     xxxx123a\=ph
   3683     xxxx123a\=ps
   3684 
   3685 /123\Kabc/startchar
   3686     xxxx123a\=ph
   3687     xxxx123a\=ps
   3688 
   3689 /^(?(?=a)aa|bb)/auto_callout
   3690     bb
   3691 
   3692 /(?C1)^(?C2)(?(?C99)(?=(?C3)a(?C4))(?C5)a(?C6)a(?C7)|(?C8)b(?C9)b(?C10))(?C11)/
   3693     bb
   3694 
   3695 # Perl seems to have a bug with this one.
   3696 
   3697 /aaaaa(*COMMIT)(*PRUNE)b|a+c/
   3698     aaaaaac
   3699 
   3700 # Here are some that Perl treats differently because of the way it handles
   3701 # backtracking verbs.
   3702 
   3703 /(?!a(*COMMIT)b)ac|ad/
   3704      ac
   3705      ad
   3706 
   3707 /^(?!a(*THEN)b|ac)../
   3708      ad
   3709 \= Expect no match
   3710      ac
   3711 
   3712 /^(?=a(*THEN)b|ac)/
   3713     ac
   3714 
   3715 /\A.*?(?:a|b(*THEN)c)/
   3716     ba
   3717 
   3718 /\A.*?(?:a|b(*THEN)c)++/
   3719     ba
   3720 
   3721 /\A.*?(?:a|b(*THEN)c|d)/
   3722     ba
   3723 
   3724 /(?:(a(*MARK:X)a+(*SKIP:X)b)){0}(?:(?1)|aac)/
   3725     aac
   3726 
   3727 /\A.*?(a|b(*THEN)c)/
   3728     ba
   3729 
   3730 /^(A(*THEN)B|A(*THEN)D)/
   3731     AD
   3732 
   3733 /(?!b(*THEN)a)bn|bnn/
   3734     bnn
   3735 
   3736 /(?(?=b(*SKIP)a)bn|bnn)/
   3737     bnn
   3738 
   3739 /(?=b(*THEN)a|)bn|bnn/
   3740     bnn
   3741 
   3742 # This test causes a segfault with Perl 5.18.0
   3743 
   3744 /^(?=(a)){0}b(?1)/
   3745     backgammon
   3746 
   3747 /(?|(?<n>f)|(?<n>b))/I,dupnames
   3748 
   3749 /(?<a>abc)(?<a>z)\k<a>()/IB,dupnames
   3750 
   3751 /a*[bcd]/B
   3752 
   3753 /[bcd]*a/B
   3754 
   3755 # A complete set of tests for auto-possessification of character types, but
   3756 # omitting \C because it might be disabled (it has its own tests).
   3757 
   3758 /\D+\D \D+\d \D+\S \D+\s \D+\W \D+\w \D+. \D+\R \D+\H \D+\h \D+\V \D+\v \D+\Z \D+\z \D+$/Bx
   3759 
   3760 /\d+\D \d+\d \d+\S \d+\s \d+\W \d+\w \d+. \d+\R \d+\H \d+\h \d+\V \d+\v \d+\Z \d+\z \d+$/Bx
   3761 
   3762 /\S+\D \S+\d \S+\S \S+\s \S+\W \S+\w \S+. \S+\R \S+\H \S+\h \S+\V \S+\v \S+\Z \S+\z \S+$/Bx
   3763 
   3764 /\s+\D \s+\d \s+\S \s+\s \s+\W \s+\w \s+. \s+\R \s+\H \s+\h \s+\V \s+\v \s+\Z \s+\z \s+$/Bx
   3765 
   3766 /\W+\D \W+\d \W+\S \W+\s \W+\W \W+\w \W+. \W+\R \W+\H \W+\h \W+\V \W+\v \W+\Z \W+\z \W+$/Bx
   3767 
   3768 /\w+\D \w+\d \w+\S \w+\s \w+\W \w+\w \w+. \w+\R \w+\H \w+\h \w+\V \w+\v \w+\Z \w+\z \w+$/Bx
   3769 
   3770 /\R+\D \R+\d \R+\S \R+\s \R+\W \R+\w \R+. \R+\R \R+\H \R+\h \R+\V \R+\v \R+\Z \R+\z \R+$/Bx
   3771 
   3772 /\H+\D \H+\d \H+\S \H+\s \H+\W \H+\w \H+. \H+\R \H+\H \H+\h \H+\V \H+\v \H+\Z \H+\z \H+$/Bx
   3773 
   3774 /\h+\D \h+\d \h+\S \h+\s \h+\W \h+\w \h+. \h+\R \h+\H \h+\h \h+\V \h+\v \h+\Z \h+\z \h+$/Bx
   3775 
   3776 /\V+\D \V+\d \V+\S \V+\s \V+\W \V+\w \V+. \V+\R \V+\H \V+\h \V+\V \V+\v \V+\Z \V+\z \V+$/Bx
   3777 
   3778 /\v+\D \v+\d \v+\S \v+\s \v+\W \v+\w \v+. \v+\R \v+\H \v+\h \v+\V \v+\v \v+\Z \v+\z \v+$/Bx
   3779 
   3780 / a+\D  a+\d  a+\S  a+\s  a+\W  a+\w  a+.  a+\R  a+\H  a+\h  a+\V  a+\v  a+\Z  a+\z  a+$/Bx
   3781 
   3782 /\n+\D \n+\d \n+\S \n+\s \n+\W \n+\w \n+. \n+\R \n+\H \n+\h \n+\V \n+\v \n+\Z \n+\z \n+$/Bx
   3783 
   3784 / .+\D  .+\d  .+\S  .+\s  .+\W  .+\w  .+.  .+\R  .+\H  .+\h  .+\V  .+\v  .+\Z  .+\z  .+$/Bx
   3785 
   3786 / .+\D  .+\d  .+\S  .+\s  .+\W  .+\w  .+.  .+\R  .+\H  .+\h  .+\V  .+\v  .+\Z  .+\z  .+$/Bsx
   3787 
   3788 / \D+$  \d+$  \S+$  \s+$  \W+$  \w+$  \R+$  \H+$  \h+$  \V+$ \v+$  a+$   \n+$  .+$  .+$/Bmx
   3789 
   3790 /(?=a+)a(a+)++a/B
   3791 
   3792 /a+(bb|cc)a+(?:bb|cc)a+(?>bb|cc)a+(?:bb|cc)+a+(aa)a+(?:bb|aa)/B
   3793 
   3794 /a+(bb|cc)?#a+(?:bb|cc)??#a+(?:bb|cc)?+#a+(?:bb|cc)*#a+(bb|cc)?a#a+(?:aa)?/B
   3795 
   3796 /a+(?:bb)?a#a+(?:|||)#a+(?:|b)a#a+(?:|||)?a/B
   3797 
   3798 /[ab]*/B
   3799     aaaa
   3800 
   3801 /[ab]*?/B
   3802     aaaa
   3803 
   3804 /[ab]?/B
   3805     aaaa
   3806 
   3807 /[ab]??/B
   3808     aaaa
   3809 
   3810 /[ab]+/B
   3811     aaaa
   3812 
   3813 /[ab]+?/B
   3814     aaaa
   3815 
   3816 /[ab]{2,3}/B
   3817     aaaa
   3818 
   3819 /[ab]{2,3}?/B
   3820     aaaa
   3821 
   3822 /[ab]{2,}/B
   3823     aaaa
   3824 
   3825 /[ab]{2,}?/B
   3826     aaaa
   3827 
   3828 /\d+\s{0,5}=\s*\S?=\w{0,4}\W*/B
   3829 
   3830 /[a-d]{5,12}[e-z0-9]*#[^a-z]+[b-y]*a[2-7]?[^0-9a-z]+/B
   3831 
   3832 /[a-z]*\s#[ \t]?\S#[a-c]*\S#[C-G]+?\d#[4-8]*\D#[4-9,]*\D#[!$]{0,5}\w#[M-Xf-l]+\W#[a-c,]?\W/B
   3833 
   3834 /a+(aa|bb)*c#a*(bb|cc)*a#a?(bb|cc)*d#[a-f]*(g|hh)*f/B
   3835 
   3836 /[a-f]*(g|hh|i)*i#[a-x]{4,}(y{0,6})*y#[a-k]+(ll|mm)+n/B
   3837 
   3838 /[a-f]*(?>gg|hh)+#[a-f]*(?>gg|hh)?#[a-f]*(?>gg|hh)*a#[a-f]*(?>gg|hh)*h/B
   3839 
   3840 /[a-c]*d/IB
   3841 
   3842 /[a-c]+d/IB
   3843 
   3844 /[a-c]?d/IB
   3845 
   3846 /[a-c]{4,6}d/IB
   3847 
   3848 /[a-c]{0,6}d/IB
   3849 
   3850 # End of special auto-possessive tests
   3851 
   3852 /^A\o{1239}B/
   3853     A\123B
   3854 
   3855 /^A\oB/
   3856 
   3857 /^A\x{zz}B/
   3858 
   3859 /^A\x{12Z/
   3860 
   3861 /^A\x{/
   3862 
   3863 /[ab]++/B,no_auto_possess
   3864 
   3865 /[^ab]*+/B,no_auto_possess
   3866 
   3867 /a{4}+/B,no_auto_possess
   3868 
   3869 /a{4}+/Bi,no_auto_possess
   3870 
   3871 /[a-[:digit:]]+/
   3872 
   3873 /[A-[:digit:]]+/
   3874 
   3875 /[a-[.xxx.]]+/
   3876 
   3877 /[a-[=xxx=]]+/
   3878 
   3879 /[a-[!xxx!]]+/
   3880 
   3881 /[A-[!xxx!]]+/
   3882     A]]]
   3883 
   3884 /[a-\d]+/
   3885 
   3886 /(?<0abc>xx)/
   3887 
   3888 /(?&1abc)xx(?<1abc>y)/
   3889 
   3890 /(?<ab-cd>xx)/
   3891 
   3892 /(?'0abc'xx)/
   3893 
   3894 /(?P<0abc>xx)/
   3895 
   3896 /\k<5ghj>/
   3897 
   3898 /\k'5ghj'/
   3899 
   3900 /\k{2fgh}/
   3901 
   3902 /(?P=8yuki)/
   3903 
   3904 /\g{4df}/
   3905 
   3906 /(?&1abc)xx(?<1abc>y)/
   3907 
   3908 /(?P>1abc)xx(?<1abc>y)/
   3909 
   3910 /\g'3gh'/
   3911 
   3912 /\g<5fg>/
   3913 
   3914 /(?(<4gh>)abc)/
   3915 
   3916 /(?('4gh')abc)/
   3917 
   3918 /(?(4gh)abc)/
   3919 
   3920 /(?(R&6yh)abc)/
   3921 
   3922 /(((a\2)|(a*)\g<-1>))*a?/B
   3923 
   3924 # Test the ugly "start or end of word" compatibility syntax.
   3925 
   3926 /[[:<:]]red[[:>:]]/B
   3927     little red riding hood
   3928     a /red/ thing
   3929     red is a colour
   3930     put it all on red
   3931 \= Expect no match
   3932     no reduction
   3933     Alfred Winifred
   3934 
   3935 /[a[:<:]] should give error/
   3936 
   3937 /(?=ab\K)/aftertext
   3938     abcd\=startchar
   3939 
   3940 /abcd/newline=lf,firstline
   3941 \= Expect no match
   3942     xx\nxabcd
   3943 
   3944 # Test stack guard external calls.
   3945 
   3946 /(((a)))/stackguard=1
   3947 
   3948 /(((a)))/stackguard=2
   3949 
   3950 /(((a)))/stackguard=3
   3951 
   3952 /(((((a)))))/
   3953 
   3954 # End stack guard tests
   3955 
   3956 /^\w+(?>\s*)(?<=\w)/B
   3957 
   3958 /\othing/
   3959 
   3960 /\o{}/
   3961 
   3962 /\o{whatever}/
   3963 
   3964 /\xthing/
   3965 
   3966 /\x{}/
   3967 
   3968 /\x{whatever}/
   3969 
   3970 /A\8B/
   3971 
   3972 /A\9B/
   3973 
   3974 # This one is here because Perl fails to match "12" for this pattern when the $
   3975 # is present.
   3976 
   3977 /^(?(?=abc)\w{3}:|\d\d)$/
   3978     abc:
   3979     12
   3980 \= Expect no match
   3981     123
   3982     xyz
   3983 
   3984 # Perl gets this one wrong, giving "a" as the after text for ca and failing to
   3985 # match for cd.
   3986 
   3987 /(?(?=ab)ab)/aftertext
   3988     abxxx
   3989     ca
   3990     cd
   3991 
   3992 # This should test both paths for processing OP_RECURSE.
   3993 
   3994 /(?(R)a+|(?R)b)/
   3995     aaaabcde
   3996     aaaabcde\=ovector=100
   3997 
   3998 /a*?b*?/
   3999     ab
   4000 
   4001 /(*NOTEMPTY)a*?b*?/
   4002     ab
   4003     ba
   4004     cb
   4005 
   4006 /(*NOTEMPTY_ATSTART)a*?b*?/aftertext
   4007     ab
   4008     cdab
   4009 
   4010 /(?(VERSION>=10.0)yes|no)/I
   4011     yesno
   4012 
   4013 /(?(VERSION>=10.04)yes|no)/
   4014     yesno
   4015 
   4016 /(?(VERSION=8)yes){3}/BI,aftertext
   4017     yesno
   4018 
   4019 /(?(VERSION=8)yes|no){3}/I
   4020     yesnononoyes
   4021 \= Expect no match
   4022     yesno
   4023 
   4024 /(?:(?<VERSION>abc)|xyz)(?(VERSION)yes|no)/I
   4025     abcyes
   4026     xyzno
   4027 \= Expect no match
   4028     abcno
   4029     xyzyes
   4030 
   4031 /(?(VERSION<10)yes|no)/
   4032 
   4033 /(?(VERSION>10)yes|no)/
   4034 
   4035 /(?(VERSION>=10.0.0)yes|no)/
   4036 
   4037 /(?(VERSION=10.101)yes|no)/
   4038 
   4039 /abcd/I
   4040 
   4041 /abcd/I,no_start_optimize
   4042 
   4043 /(|ab)*?d/I
   4044    abd
   4045    xyd
   4046 
   4047 /(|ab)*?d/I,no_start_optimize
   4048    abd
   4049    xyd
   4050 
   4051 /\k<A>*(?<A>aa)(?<A>bb)/match_unset_backref,dupnames
   4052     aabb
   4053 
   4054 /(((((a)))))/parens_nest_limit=2
   4055 
   4056 /abc/replace=XYZ
   4057     123123
   4058     123abc123
   4059     123abc123abc123
   4060     123123\=zero_terminate
   4061     123abc123\=zero_terminate
   4062     123abc123abc123\=zero_terminate
   4063 
   4064 /abc/g,replace=XYZ
   4065     123abc123
   4066     123abc123abc123
   4067 
   4068 /abc/replace=X$$Z
   4069     123abc123
   4070 
   4071 /abc/g,replace=X$$Z
   4072     123abc123abc123
   4073 
   4074 /a(b)c(d)e/replace=X$1Y${2}Z
   4075     "abcde"
   4076 
   4077 /a(b)c(d)e/replace=X$1Y${2}Z,global
   4078     "abcde-abcde"
   4079 
   4080 /a(?<ONE>b)c(?<TWO>d)e/replace=X$ONE+${TWO}Z
   4081     "abcde"
   4082 
   4083 /a(?<ONE>b)c(?<TWO>d)e/g,replace=X$ONE+${TWO}Z
   4084     "abcde-abcde-"
   4085 
   4086 /abc/replace=a$++
   4087     123abc
   4088 
   4089 /abc/replace=a$bad
   4090     123abc
   4091 
   4092 /abc/replace=a${A234567890123456789_123456789012}z
   4093     123abc
   4094 
   4095 /abc/replace=a${A23456789012345678901234567890123}z
   4096     123abc
   4097 
   4098 /abc/replace=a${bcd
   4099     123abc
   4100 
   4101 /abc/replace=a${b+d}z
   4102     123abc
   4103 
   4104 /abc/replace=[10]XYZ
   4105     123abc123
   4106 
   4107 /abc/replace=[9]XYZ
   4108     123abc123
   4109 
   4110 /abc/replace=xyz
   4111     1abc2\=partial_hard
   4112 
   4113 /abc/replace=xyz
   4114     123abc456
   4115     123abc456\=replace=pqr
   4116     123abc456abc789
   4117     123abc456abc789\=g
   4118 
   4119 /(?<=abc)(|def)/g,replace=<$0>
   4120     123abcxyzabcdef789abcpqr
   4121 
   4122 /./replace=$0
   4123     a
   4124 
   4125 /(.)(.)/replace=$2+$1
   4126     abc
   4127 
   4128 /(?<A>.)(?<B>.)/replace=$B+$A
   4129     abc
   4130 
   4131 /(.)(.)/g,replace=$2$1
   4132     abcdefgh
   4133 
   4134 /(*:pear)apple|(*:orange)lemon|(*:strawberry)blackberry/g,replace=${*MARK}
   4135     apple lemon blackberry
   4136     apple strudel
   4137     fruitless
   4138 
   4139 /(*:pear)apple|(*:orange)lemon|(*:strawberry)blackberry/replace=${*MARK} sauce,
   4140     apple lemon blackberry
   4141 
   4142 /(*:pear)apple|(*:orange)lemon|(*:strawberry)blackberry/g,replace=<$*MARK>
   4143     apple lemon blackberry
   4144     apple strudel
   4145     fruitless
   4146 
   4147 /(*:pear)apple/g,replace=${*MARKING}
   4148     apple lemon blackberry
   4149 
   4150 /(*:pear)apple/g,replace=${*MARK-time
   4151     apple lemon blackberry
   4152 
   4153 /(*:pear)apple/g,replace=${*mark}
   4154     apple lemon blackberry
   4155 
   4156 /(*:pear)apple|(*:orange)lemon|(*:strawberry)blackberry/g,replace=<$*MARKET>
   4157     apple lemon blackberry
   4158 
   4159 /(*:pear)apple|(*:orange)lemon|(*:strawberry)blackberry/g,replace=[22]${*MARK}
   4160     apple lemon blackberry
   4161     apple lemon blackberry\=substitute_overflow_length
   4162 
   4163 /(*:pear)apple|(*:orange)lemon|(*:strawberry)blackberry/g,replace=[23]${*MARK}
   4164     apple lemon blackberry
   4165 
   4166 /abc/
   4167     123abc123\=replace=[9]XYZ
   4168     123abc123\=substitute_overflow_length,replace=[9]XYZ
   4169     123abc123\=substitute_overflow_length,replace=[6]XYZ
   4170     123abc123\=substitute_overflow_length,replace=[1]XYZ
   4171     123abc123\=substitute_overflow_length,replace=[0]XYZ
   4172 
   4173 /a(b)c/
   4174     123abc123\=replace=[9]x$1z
   4175     123abc123\=substitute_overflow_length,replace=[9]x$1z
   4176     123abc123\=substitute_overflow_length,replace=[6]x$1z
   4177     123abc123\=substitute_overflow_length,replace=[1]x$1z
   4178     123abc123\=substitute_overflow_length,replace=[0]x$1z
   4179 
   4180 "((?=(?(?=(?(?=(?(?=()))))))))"
   4181     a
   4182 
   4183 "(?(?=)==)(((((((((?=)))))))))"
   4184 \= Expect no match
   4185     a
   4186 
   4187 /(a)(b)|(c)/
   4188     XcX\=ovector=2,get=1,get=2,get=3,get=4,getall
   4189 
   4190 /x(?=ab\K)/
   4191     xab\=get=0
   4192     xab\=copy=0
   4193     xab\=getall
   4194 
   4195 /(?<A>a)|(?<A>b)/dupnames
   4196     a\=ovector=1,copy=A,get=A,get=2
   4197     a\=ovector=2,copy=A,get=A,get=2
   4198     b\=ovector=2,copy=A,get=A,get=2
   4199 
   4200 /a(b)c(d)/
   4201     abc\=ph,copy=0,copy=1,getall
   4202 
   4203 /^abc/info
   4204 
   4205 /^abc/info,no_dotstar_anchor
   4206 
   4207 /.*\d/info,auto_callout
   4208 \= Expect no match
   4209     aaa
   4210 
   4211 /.*\d/info,no_dotstar_anchor,auto_callout
   4212 \= Expect no match
   4213     aaa
   4214 
   4215 /.*\d/dotall,info
   4216 
   4217 /.*\d/dotall,no_dotstar_anchor,info
   4218 
   4219 /(*NO_DOTSTAR_ANCHOR)(?s).*\d/info
   4220 
   4221 '^(?:(a)|b)(?(1)A|B)'
   4222     aA123\=ovector=1
   4223     aA123\=ovector=2
   4224 
   4225 '^(?:(?<AA>a)|b)(?(<AA>)A|B)'
   4226     aA123\=ovector=1
   4227     aA123\=ovector=2
   4228 
   4229 '^(?<AA>)(?:(?<AA>a)|b)(?(<AA>)A|B)'dupnames
   4230     aA123\=ovector=1
   4231     aA123\=ovector=2
   4232     aA123\=ovector=3
   4233 
   4234 '^(?:(?<AA>X)|)(?:(?<AA>a)|b)\k{AA}'dupnames
   4235     aa123\=ovector=1
   4236     aa123\=ovector=2
   4237     aa123\=ovector=3
   4238 
   4239 /(?<N111>(?J)(?<N111>1(111111)11|)1|1|)(?(<N111>)1)/
   4240 
   4241 /(?<N>(?J)(?<N>))(?-J)\k<N>/
   4242 
   4243 # Quantifiers are not allowed on condition assertions, but are otherwise
   4244 # OK in conditions.
   4245 
   4246 /(?(?=0)?)+/
   4247 
   4248 /(?(?=0)(?=00)?00765)/
   4249      00765
   4250 
   4251 /(?(?=0)(?=00)?00765|(?!3).56)/
   4252      00765
   4253      456
   4254 \= Expect no match
   4255      356
   4256 
   4257 '^(a)*+(\w)'
   4258     g
   4259     g\=ovector=1
   4260 
   4261 '^(?:a)*+(\w)'
   4262     g
   4263     g\=ovector=1
   4264 
   4265 # These two pattern showeds up compile-time bugs
   4266 
   4267 "((?2){0,1999}())?"
   4268 
   4269 /((?+1)(\1))/B
   4270 
   4271 # Callouts with string arguments
   4272 
   4273 /a(?C"/
   4274 
   4275 /a(?C"a/
   4276 
   4277 /a(?C"a"/
   4278 
   4279 /a(?C"a"bcde(?C"b")xyz/
   4280 
   4281 /a(?C"a)b""c")/B
   4282 
   4283 /ab(?C" any text with spaces ")cde/B
   4284     abcde
   4285     12abcde
   4286 
   4287 /^a(b)c(?C1)def/
   4288       abcdef
   4289 
   4290 /^a(b)c(?C"AB")def/
   4291       abcdef
   4292 
   4293 /^a(b)c(?C1)def/
   4294       abcdef\=callout_capture
   4295 
   4296 /^a(b)c(?C{AB})def/B
   4297       abcdef\=callout_capture
   4298 
   4299 /(?C`a``b`)(?C'a''b')(?C"a""b")(?C^a^^b^)(?C%a%%b%)(?C#a##b#)(?C$a$$b$)(?C{a}}b})/B,callout_info
   4300 
   4301 /(?:a(?C`code`)){3}/B
   4302 
   4303 /^(?(?C25)(?=abc)abcd|xyz)/B,callout_info
   4304     abcdefg
   4305     xyz123
   4306 
   4307 /^(?(?C$abc$)(?=abc)abcd|xyz)/B
   4308     abcdefg
   4309     xyz123
   4310 
   4311 /^ab(?C'first')cd(?C"second")ef/
   4312     abcdefg
   4313 
   4314 /(?:a(?C`code`)){3}X/
   4315     aaaXY
   4316 
   4317 # Binary zero in callout string
   4318 #  a  (  ?  C  '  x     z  '  )  b
   4319 / 61 28 3f 43 27 78 00 7a 27 29 62/hex,callout_info
   4320     abcdefgh
   4321 
   4322 /(?(?!)^)/
   4323 
   4324 /(?(?!)a|b)/
   4325     bbb
   4326 \= Expect no match
   4327     aaa
   4328 
   4329 # JIT gives a different error message for the infinite recursion
   4330 
   4331 "(*NO_JIT)((?2)+)((?1)){"
   4332     abcd{
   4333 
   4334 # Perl fails to diagnose the absence of an assertion
   4335 
   4336 "(?(?<E>.*!.*)?)"
   4337 
   4338 "X((?2)()*+){2}+"B
   4339 
   4340 "X((?2)()*+){2}"B
   4341 
   4342 /(?<=\bABQ(3(?-7)))/
   4343 
   4344 /(?<=\bABQ(3(?+7)))/
   4345 
   4346 ";(?<=()((?3))((?2)))"
   4347 
   4348 # Perl loops on this (PCRE2 used to!)
   4349 
   4350 /(?<=\Ka)/g,aftertext
   4351     aaaaa
   4352 
   4353 /(?<=\Ka)/altglobal,aftertext
   4354     aaaaa
   4355 
   4356 /((?2){73}(?2))((?1))/info
   4357 
   4358 /abc/
   4359 \= Expect no match
   4360     \[9x!xxx(]{9999}
   4361 
   4362 /(abc)*/
   4363     \[abc]{5}
   4364 
   4365 /^/gm
   4366     \n\n\n
   4367 
   4368 /^/gm,alt_circumflex
   4369     \n\n\n
   4370 
   4371 /((((((((x))))))))\81/
   4372     xx1
   4373 
   4374 /((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((x))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))\80/
   4375     xx
   4376 
   4377 /\80/
   4378 
   4379 /A\8B\9C/
   4380     A8B9C
   4381 
   4382 /(?x:((?'a')) # comment (with parentheses) and | vertical
   4383 (?-x:#not a comment (?'b')) # this is a comment ()
   4384 (?'c')) # not a comment (?'d')/info
   4385 
   4386 /(?|(?'a')(2)(?'b')|(?'a')(?'a')(3))/I,dupnames
   4387     A23B
   4388     B32A
   4389 
   4390 # These are some patterns that used to cause buffer overflows or other errors
   4391 # while compiling.
   4392 
   4393 /.((?2)(?R)|\1|$)()/B
   4394 
   4395 /.((?3)(?R)()(?2)|\1|$)()/B
   4396 
   4397 /(\9*+(?2);\3++()2|)++{/
   4398 
   4399 /\V\x85\9*+((?2)\3++()2)*:2/
   4400 
   4401 /(((?(R)){0,2}) (?'x'((?'R')((?'R')))))/dupnames
   4402 
   4403 /(((?(X)){0,2}) (?'x'((?'X')((?'X')))))/dupnames
   4404 
   4405 /(((?(R)){0,2}) (?'x'((?'X')((?'R')))))/
   4406 
   4407 "(?J)(?'d'(?'d'\g{d}))"
   4408 
   4409 "(?=!((?2)(?))({8(?<=(?1){29}8bbbb\x16\xd\xc6^($(\xa9H4){4}h}?1)B))\x15')"
   4410 
   4411 /A(?'')Z/
   4412 
   4413 "(?J:(?|(?'R')(\k'R')|((?'R'))))"
   4414 
   4415 /(?<=|(\,\$(?73591620449005828816)\xa8.{7}){6}\x09)/
   4416 
   4417 /^(?:(?(1)x|)+)+$()/B
   4418 
   4419 /[[:>:]](?<)/
   4420 
   4421 /((?x)(*:0))#(?'/
   4422 
   4423 /(?C$[$)(?<]/
   4424 
   4425 /(?C$)$)(?<]/
   4426 
   4427 /(?(R))*+/B
   4428     abcd
   4429 
   4430 /((?x)(?#))#(?'/
   4431 
   4432 /((?x)(?#))#(?'abc')/I
   4433 
   4434 /[[:\\](?<[::]/
   4435 
   4436 /[[:\\](?'abc')[a:]/I
   4437 
   4438 "[[[.\xe8Nq\xffq\xff\xe0\x2|||::Nq\xffq\xff\xe0\x6\x2|||::[[[:[::::::[[[[[::::::::[:[[[:[:::[[[[[[[[[[[[:::::::::::::::::[[.\xe8Nq\xffq\xff\xe0\x2|||::Nq\xffq\xff\xe0\x6\x2|||::[[[:[::::::[[[[[::::::::[:[[[:[:::[[[[[[[[[[[[[[:::E[[[:[:[[:[:::[[:::E[[[:[:[[:'[:::::E[[[:[::::::[[[:[[[[[[[::E[[[:[::::::[[[:[[[[[[[[:[[::[::::[[:::::::[[:[[[[[[[:[[::[:[[:[~"
   4439 
   4440 /()(?(R)0)*+/B
   4441 
   4442 /(?R-:(?</
   4443 
   4444 /(?R-:(?<)/
   4445 
   4446 /(?(?C{\Q})(?!(?'/
   4447 
   4448 /(?(?C{\Q})(?!(?'abc')))/I
   4449 
   4450 /(?1){3918}(((((0(\k'R'))))(?J)(?'R'(?'R'\3){99})))/I
   4451 
   4452 /(?|(aaa)|(b))\g{1}/I
   4453 
   4454 /(?|(aaa)|(b))(?1)/I
   4455 
   4456 /(?|(aaa)|(b))/I
   4457 
   4458 /(?|(?'a'aaa)|(?'a'b))\k'a'/I
   4459 
   4460 /(?|(?'a'aaa)|(?'a'b))(?'a'cccc)\k'a'/I,dupnames
   4461 
   4462 /ab{3cd/
   4463     ab{3cd
   4464 
   4465 /ab{3,cd/
   4466     ab{3,cd
   4467 
   4468 /ab{3,4a}cd/
   4469     ab{3,4a}cd
   4470 
   4471 /{4,5a}bc/
   4472     {4,5a}bc
   4473 
   4474 /\x0{ab}/
   4475     \0{ab}
   4476 
   4477 /^(a(b))\1\g1\g{1}\g-1\g{-1}\g{-02}Z/
   4478     ababababbbabZXXXX
   4479 
   4480 /.*?a(*PRUNE)b/
   4481     aab
   4482 
   4483 /.*?a(*PRUNE)b/s
   4484     aab
   4485 
   4486 /^a(*PRUNE)b/s
   4487 \= Expect no match
   4488     aab
   4489 
   4490 /.*?a(*SKIP)b/
   4491     aab
   4492 
   4493 /(?(8000000000/
   4494 
   4495 /((?(R8000000000)))/
   4496 
   4497 /0(?0)|(1)(*THEN)(*SKIP:0)(*FAIL)/
   4498 \= Expect no match
   4499     01
   4500 
   4501 /(?(1)()\983040\2)/
   4502 
   4503 /(*LIMIT_MATCH=)abc/
   4504 
   4505 /(*CRLF)(*LIMIT_MATCH=)abc/
   4506 
   4507 /(?:ab)?(?:ab)(?:ab)/
   4508     abab
   4509     ababab
   4510 \= Expect no match
   4511     aba
   4512 
   4513 /((*MARK:A))++a(*SKIP:B)b/
   4514 \= Expect no match
   4515     aacb
   4516 
   4517 /(*MARK:a\zb)z/alt_verbnames
   4518 
   4519 /(*:ab\t(d\)c)xxx/
   4520 
   4521 /(*:ab\t(d\)c)xxx/alt_verbnames,mark
   4522     cxxxz
   4523 
   4524 /(*:A\Qxx)x\EB)x/alt_verbnames,mark
   4525     x
   4526 
   4527 /(*:A\ExxxB)x/alt_verbnames,mark
   4528     x
   4529 
   4530 /(*: A \ and #comment
   4531      \ B)x/x,alt_verbnames,mark
   4532     x
   4533 
   4534 /(*: A \ and #comment
   4535      \ B)x/alt_verbnames,mark
   4536     x
   4537 
   4538 /(*: A \ and #comment
   4539      \ B)x/x,mark
   4540     x
   4541 
   4542 /(*: A \ and #comment
   4543      \ B)x/mark
   4544     x
   4545 
   4546 /(*:A
   4547 B)x/alt_verbnames,mark
   4548     x
   4549 
   4550 /(*:abc\Qpqr)/alt_verbnames
   4551 
   4552 /abc/use_offset_limit
   4553     1234abcde\=offset_limit=100
   4554     1234abcde\=offset_limit=9
   4555     1234abcde\=offset_limit=4
   4556     1234abcde\=offset_limit=4,offset=4
   4557 \= Expect no match
   4558     1234abcde\=offset_limit=4,offset=5
   4559     1234abcde\=offset_limit=3
   4560 
   4561 /(?<=abc)/use_offset_limit
   4562     1234abc\=offset_limit=7
   4563 \= Expect no match
   4564     1234abc\=offset_limit=6
   4565 
   4566 /A/g,replace=-,use_offset_limit
   4567     XAXAXAXAXA\=offset_limit=4
   4568 
   4569 /abc/
   4570 \= Expect error
   4571     1234abcde\=offset_limit=4
   4572 
   4573 /^\w/m,use_offset_limit
   4574     \n..\naa\=offset_limit=3
   4575     \n..\naa\=offset_limit=4
   4576 
   4577 /abcd/null_context
   4578     abcd\=null_context
   4579 \= Expect error
   4580     abcd\=null_context,find_limits
   4581     abcd\=allusedtext,startchar
   4582 
   4583 /abcd/replace=w\rx\x82y\o{333}z(\Q12\$34$$\x34\E5$$),substitute_extended
   4584     abcd
   4585 
   4586 /a(bc)(DE)/replace=a\u$1\U$1\E$1\l$2\L$2\Eab\Uab\LYZ\EDone,substitute_extended
   4587     abcDE
   4588 
   4589 /abcd/replace=xy\kz,substitute_extended
   4590     abcd
   4591 
   4592 /a(?:(b)|(c))/substitute_extended,replace=X${1:+1:-1}X${2:+2:-2}
   4593     ab
   4594     ac
   4595     ab\=replace=${1:+$1\:$1:$2}
   4596     ac\=replace=${1:+$1\:$1:$2}
   4597 
   4598 /a(?:(b)|(c))/substitute_extended,replace=X${1:-1:-1}X${2:-2:-2}
   4599     ab
   4600     ac
   4601 
   4602 /(a)/substitute_extended,replace=>${1:+\Q$1:{}$$\E+\U$1}<
   4603     a
   4604 
   4605 /X(b)Y/substitute_extended
   4606     XbY\=replace=x${1:+$1\U$1}y
   4607     XbY\=replace=\Ux${1:+$1$1}y
   4608 
   4609 /a/substitute_extended,replace=${*MARK:+a:b}
   4610     a
   4611 
   4612 /(abcd)/replace=${1:+xy\kz},substitute_extended
   4613     abcd
   4614 
   4615 /(abcd)/
   4616     abcd\=replace=${1:+xy\kz},substitute_extended
   4617 
   4618 /abcd/substitute_extended,replace=>$1<
   4619     abcd
   4620 
   4621 /abcd/substitute_extended,replace=>xxx${xyz}<<<
   4622     abcd
   4623 
   4624 /(?J)(?:(?<A>a)|(?<A>b))/replace=<$A>
   4625     [a]
   4626     [b]
   4627 \= Expect error
   4628     (a)\=ovector=1
   4629 
   4630 /(a)|(b)/replace=<$1>
   4631 \= Expect error
   4632     b
   4633 
   4634 /(aa)(BB)/substitute_extended,replace=\U$1\L$2\E$1..\U$1\l$2$1
   4635     aaBB
   4636 
   4637 /^(o(\1{72}{\"{\\{00000059079}\d*){74}}){19}/I
   4638 
   4639 /((p(?'K/
   4640 
   4641 /((p(?'K/no_auto_capture
   4642 
   4643 /abc/replace=A$3123456789Z
   4644     abc
   4645 
   4646 /(?<!a{65535}a{5})x/I
   4647 
   4648 /(?<!a{65535})x/I
   4649 
   4650 /(?=a\K)/replace=z
   4651     BaCaD
   4652     
   4653 /(?<=\K.)/g,replace=-
   4654     ab
   4655 
   4656 /(?'abcdefghijklmnopqrstuvwxyzABCDEFG'toolong)/
   4657 
   4658 /(?'abcdefghijklmnopqrstuvwxyzABCDEF'justright)/
   4659 
   4660 # These two use zero-termination
   4661 /abcd/max_pattern_length=3
   4662 
   4663 /abc/max_pattern_length=3
   4664 
   4665 # These two, being hex, pass the length
   4666 /abcdefab/hex,max_pattern_length=3
   4667 
   4668 /abcdef/hex,max_pattern_length=3
   4669 
   4670 # These patterns used to take a long time to compile
   4671 
   4672 "(.*)
   4673 ((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))
   4674 ((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))
   4675 ((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))"xI
   4676 
   4677 "(?<=a()
   4678 ((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))
   4679 ((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))
   4680 ((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))
   4681 a)"xI
   4682 
   4683 "(?|()|())(.*)
   4684 ((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))
   4685 ((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))
   4686 ((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))"xI
   4687 
   4688 "(?|()|())(?<=a()
   4689 ((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))
   4690 ((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))
   4691 ((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))
   4692 a)"xI
   4693 
   4694 # Test the use of malloc for caching group information when there are more
   4695 # groups than fit into the on-stack workspace.
   4696 
   4697 /\[()]{1024}/I,expand
   4698 
   4699 # Test minlength capped at 65535
   4700 
   4701 /(A{65000})\1{65000}/I
   4702 
   4703 # Test group scans when numbers are not unique
   4704 
   4705 /(?|()+|(a)+)/BI
   4706 
   4707 /(?|(a)+|()+)/BI
   4708 
   4709 /(?|()|(a))/BI
   4710 
   4711 /(?|(a)|())/BI
   4712 
   4713 # Test CRLF handling in empty string substitutions
   4714 
   4715 /^$/gm,newline=anycrlf,replace=-
   4716     X\r\n\r\nY
   4717 
   4718 /^$/gm,newline=crlf,replace=-
   4719     X\r\n\r\nY
   4720 
   4721 /^$/gm,newline=any,replace=-
   4722     X\r\n\r\nY
   4723 
   4724 "(*ANYCRLF)(?m)^(.*[^0-9\r\n].*|)$"g,replace=NaN
   4725     15\r\nfoo\r\n20\r\nbar\r\nbaz\r\n\r\n20
   4726 
   4727 /a[[:punct:]b]/bincode
   4728 
   4729 /a[b[:punct:]]/bincode
   4730 
   4731 /L(?#(|++<!(2)?/B
   4732 
   4733 /L(?#(|++<!(2)?/B,no_auto_possess
   4734 
   4735 /L(?#(|++<!(2)?/B,auto_callout
   4736 
   4737 /L(?#(|++<!(2)?/B,no_auto_possess,auto_callout
   4738 
   4739 /(A*)\E+/B,auto_callout
   4740 
   4741 /()\Q\E*]/B,auto_callout
   4742     a[bc]d
   4743 
   4744 /\x8a+f|;T?(*:;.'?`(\xeap ){![^()!y*''C*(?';]{1;(\x08)/B,alt_verbnames,dupnames,extended
   4745 
   4746 # Tests for NULL characters in comments and verb "names" and callouts
   4747 
   4748 # /A#B\x00C\x0aZ/
   4749 /41 23 42 00 43 0a 5a/Bx,hex
   4750 
   4751 # /A+#B\x00C\x0a+/
   4752 /41 2b 23 42 00 43 0a 2b/Bx,hex
   4753 
   4754 # /A(*:B\x00W#X\00Y\x0aC)Z/
   4755 /41 28 2a 3a 42 00 57 23 58 00 59 0a 43 29 5a/Bx,hex,alt_verbnames
   4756 
   4757 # /A(*:B\x00W#X\00Y\x0aC)Z/
   4758 /41 28 2a 3a 42 00 57 23 58 00 59 0a 43 29 5a/Bx,hex
   4759 
   4760 # /A(?C{X\x00Y})B/
   4761 /41 28 3f 43 7b 58 00 59 7d 29 42/B,hex
   4762 
   4763 # /A(?#X\x00Y)B/
   4764 /41 28 3f 23 7b 00 7d 29 42/B,hex
   4765 
   4766 # Tests for leading comment in extended patterns
   4767 
   4768 / (?-x):?/extended
   4769 
   4770 /(?-x):?/extended
   4772 
   4773 /0b 28 3f 2d 78 29 3a/hex,extended
   4774 
   4775 /#comment
   4776 (?-x):?/extended
   4777 
   4778 /(8(*:6^\x09x\xa6l\)6!|\xd0:[^:|)\x09d\Z\d{85*m(?'(?<1!)*\W[*\xff]!!h\w]*\xbe;/alt_bsux,alt_verbnames,allow_empty_class,dollar_endonly,extended,multiline,never_utf,no_dotstar_anchor,no_start_optimize
   4779 
   4780 /a|(b)c/replace=>$1<,substitute_unset_empty
   4781     cat
   4782     xbcom
   4783 
   4784 /a|(b)c/
   4785     cat\=replace=>$1<
   4786     cat\=replace=>$1<,substitute_unset_empty
   4787     xbcom\=replace=>$1<,substitute_unset_empty
   4788 
   4789 /a|(b)c/substitute_extended
   4790     cat\=replace=>${2:-xx}<
   4791     cat\=replace=>${2:-xx}<,substitute_unknown_unset
   4792     cat\=replace=>${X:-xx}<,substitute_unknown_unset
   4793 
   4794 /a|(?'X'b)c/replace=>$X<,substitute_unset_empty
   4795     cat
   4796     xbcom
   4797 
   4798 /a|(?'X'b)c/replace=>$Y<,substitute_unset_empty
   4799     cat
   4800     cat\=substitute_unknown_unset
   4801     cat\=substitute_unknown_unset,-substitute_unset_empty
   4802 
   4803 /a|(b)c/replace=>$2<,substitute_unset_empty
   4804     cat
   4805     cat\=substitute_unknown_unset
   4806     cat\=substitute_unknown_unset,-substitute_unset_empty
   4807 
   4808 /()()()/use_offset_limit
   4809     \=ovector=11000000000
   4810     \=callout_fail=11000000000
   4811     \=callout_fail=1:11000000000
   4812     \=callout_data=11000000000
   4813     \=callout_data=-11000000000
   4814     \=offset_limit=1100000000000000000000
   4815     \=copy=11000000000
   4816 
   4817 /(*MARK:A\x00b)/mark
   4818     abc
   4819 
   4820 /(*MARK:A\x00b)/mark,alt_verbnames
   4821     abc
   4822 
   4823 /"(*MARK:A" 00 "b)"/mark,hex
   4824     abc
   4825 
   4826 /"(*MARK:A" 00 "b)"/mark,hex,alt_verbnames
   4827     abc
   4828 
   4829 /efg/hex
   4830 
   4831 /eff/hex
   4832 
   4833 /effg/hex
   4834 
   4835 /(?J)(?'a'))(?'a')/
   4836 
   4837 /(?<=((?C)0))/
   4838     9010
   4839 \= Expect no match
   4840     abc
   4841 
   4842 /aaa/
   4843 \[abc]{10000000000000000000000000000}
   4844 \[a]{3}
   4845 
   4846 /\[AB]{6000000000000000000000}/expand
   4847 
   4848 # Hex uses pattern length, not zero-terminated. This tests for overrunning
   4849 # the given length of a pattern.
   4850 
   4851 /'(*U'/hex
   4852 
   4853 /'(*'/hex
   4854 
   4855 /'('/hex
   4856 
   4857 //hex
   4858 
   4859 # These tests are here because Perl never allows a back reference in a
   4860 # lookbehind. PCRE2 supports some limited cases.
   4861 
   4862 /([ab])...(?<=\1)z/
   4863     a11az
   4864     b11bz
   4865 \= Expect no match
   4866     b11az
   4867 
   4868 /(?|([ab]))...(?<=\1)z/
   4869 
   4870 /([ab])(\1)...(?<=\2)z/
   4871     aa11az
   4872 
   4873 /(a\2)(b\1)(?<=\2)/
   4874 
   4875 /(?<A>[ab])...(?<=\k'A')z/
   4876     a11az
   4877     b11bz
   4878 \= Expect no match
   4879     b11az
   4880 
   4881 /(?<A>[ab])...(?<=\k'A')(?<A>)z/dupnames
   4882 
   4883 # Perl does not support \g+n
   4884 
   4885 /((\g+1X)?([ab]))+/
   4886     aaXbbXa
   4887 
   4888 /ab(?C1)c/auto_callout
   4889     abc
   4890 
   4891 /'ab(?C1)c'/hex,auto_callout
   4892     abc
   4893 
   4894 # Perl accepts these, but gives a warning. We can't warn, so give an error.
   4895 
   4896 /[a-[:digit:]]+/
   4897     a-a9-a
   4898 
   4899 /[A-[:digit:]]+/
   4900     A-A9-A
   4901 
   4902 /[a-\d]+/
   4903     a-a9-a
   4904 
   4905 /(?<RA>abc)(?(R)xyz)/B
   4906 
   4907 /(?<R>abc)(?(R)xyz)/B
   4908 
   4909 /(?=.*[A-Z])/I
   4910 
   4911 /()(?<=(?0))/
   4912 
   4913 /(?<!|!(?<!))/
   4914 
   4915 /(?<!|!|!||||||(?<!)||(?<!)!|!||(?<!)!|!(?<!)!|!|!|!||||!!|<!)!|!||||!|/
   4916 
   4917 /{2,2{2,2/use_length
   4918 
   4919 /.>*?\g'0/use_length
   4920 
   4921 /.>*?\g'0/
   4922 
   4923 /{{'{22{2{{2{'{22{{22{2{'{22{2{{2{{222{{2{'{22{2{22{2{'{22{2{{2{'{22{2{22{2{'{'{22{2{22{2{'{22{2{{2{'{22{2{22{2{'{222{2{'{22{2{{2{'{22{{11{2{'{22{2{{2{{'{22{2{{2{'{22{{22{1{'{22{2{{2{{222{{2{'{22{2{22{2{'{/auto_callout
   4924 
   4925 //
   4926 \=get=i00000000000000000000000000000000
   4927 \=get=i2345678901234567890123456789012,get=i1245678901234567890123456789012
   4928 
   4929 "(?(?C))"
   4930 
   4931 /(?(?(?(?(?(?))))))/
   4932 
   4933 /(?<=(?1))((?s))/anchored
   4934 
   4935 /(*:ab)*/
   4936 
   4937 %(*:(:(svvvvvvvvvv:]*[   Z!*;[]*[^[]*!^[+.+{{2,7}'      _\\\\\\\\\\\\\)?.:..    *w////\\\Q\\\\\\\\\\\\\\\T\\\\\+/?/////'+\\\EEE?/////'+/*+/[^K]?]//(w)%never_backslash_c,alt_verbnames,auto_callout
   4938 
   4939 /./newline=crlf
   4940     \=ph
   4941 
   4942 /(\x0e00\000000\xc)/replace=\P,substitute_extended
   4943     \x0e00\000000\xc
   4944 
   4945 //replace=0
   4946     \=offset=7
   4947 
   4948 /(?<=\G.)/g,replace=+
   4949     abc
   4950 
   4951 ".+\QX\E+"B,no_auto_possess
   4952 
   4953 ".+\QX\E+"B,auto_callout,no_auto_possess
   4954 
   4955 # This one is here because Perl gives an 'unmatched )' error which goes away
   4956 # if one of the \) sequences is removed - which is weird. PCRE finds it too
   4957 # complicated to find a minimum matching length.
   4958 
   4959 "()X|((((((((()))))))((((())))))\2())((((((\2\2)))\2)(\22((((\2\2)2))\2)))(2\ZZZ)+:)Z^|91ZiZZnter(ZZ |91Z(ZZ ZZ(\r2Z( or#(\Z2(Z\Z(\2\2)2))\2Z)Z(\22Z((\Z2(Z\Z(\2\2)2))\2Z+:)Z|91Z(ZZ ZZ(\r2Z( or#(\Z2(Z\Z((Z*(\2(Z\':))\0)i|||||||||||||||loZ\2\2)2))\2Z)Z(\22Z((\Z2(Z\Z(\2\2)2))\2Z)))int \)\0nte!rnal errpr\2\\21r(2\ZZZ)+:)Z!|91Z(ZZ ZZ(\r2Z( or#(\Z2(Z\Z(\2\2)2))\2Z)Z(\22Z((\Z2(Z\Z(\2\2)2))\2Z)))int \)\0(2\ZZZ)+:)Z^|91ZiZZnter(ZZ |91Z(ZZ ZZ(\r2Z( or#(\Z2(Z\Z(\2\2)2))\2Z)Z(\22Z((\Z2(Z\Z(\2\2)2))\2Z)))int \)\0(2\ZZZ)+:)Z^)))int \)\0(2\ZZZ)+:)Z^|91ZiZZnter(ZZernZal ZZ(\r2Z( or#(\Z2(Z\Z(\2\2)2))\2Z)Z(\22Z((\Z2(Z\Z(\2\2)2))\2Z)))int \))\ZZ(\r2Z( or#(\Z2(Z\Z(\2\2)2))\2Z)Z(\22Z((\Z2(Z\Z(\2\2)))\2))))((((((\2\2))))))"I
   4960 
   4961 # This checks that new code for handling groups that may match an empty string
   4962 # works on a very large number of alternatives. This pattern used to provoke a
   4963 # complaint that it was too complicated.
   4964 
   4965 /(?:\[A|B|C|D|E|F|G|H|I|J|]{200}Z)/expand
   4966 
   4967 # This one used to compile rubbish instead of a compile error, and then
   4968 # behave unpredictably at match time.
   4969 
   4970 /.+(?(?C'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'))?!XXXX.=X/
   4971     .+(?(?C'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'))?!XXXX.=X
   4972 
   4973 /[:[:alnum:]-[[a:lnum:]+/
   4974 
   4975 /((?(?C'')\QX\E(?!((?(?C'')(?!X=X));=)r*X=X));=)/
   4976 
   4977 /((?(?C'')\Q\E(?!((?(?C'')(?!X=X));=)r*X=X));=)/
   4978 
   4979 /abcd/auto_callout
   4980     abcd\=callout_error=255:2
   4981 
   4982 /()(\g+65534)/
   4983 
   4984 /()(\g+65533)/
   4985 
   4986 /\x00\x00\x00(\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\x00k\d+\x00\x00\x00\x00\x00\x00\2*\x00\x00\1*.){36}int^\x00\x00\x00(\1{50779}?)J\w2/I
   4987 
   4988 /(a)(b)\2\1\1\1\1/I
   4989 
   4990 /(?<a>a)(?<b>b)\g{b}\g{a}\g{a}\g{a}\g{a}(?<a>xx)(?<b>zz)/I,dupnames
   4991 
   4992 //
   4993     \=ovector=7777777777
   4994 
   4995 # This is here because Perl matches, even though a COMMIT is encountered
   4996 # outside of the recursion.
   4997 
   4998 /(?1)(A(*COMMIT)|B)D/
   4999     BAXBAD
   5000 
   5001 "(?1){2}(a)"B
   5002 
   5003 "(?1){2,4}(a)"B
   5004 
   5005 # This test differs from Perl for the first subject. Perl ends up with
   5006 # $1 set to 'B'; PCRE2 has it unset (which I think is right).
   5007 
   5008 /^(?:
   5009 (?:A| (?:B|B(*ACCEPT)) (?<=(.)) D)
   5010 (Z)
   5011 )+$/x
   5012     AZB
   5013     AZBDZ
   5014 
   5015 # The first of these, when run by Perl, gives the mark 'aa', which is wrong.
   5016 
   5017 '(?>a(*:aa))b|ac' mark
   5018     ac
   5019 
   5020 '(?:a(*:aa))b|ac' mark
   5021     ac
   5022 
   5023 /(R?){65}/
   5024     (R?){65}
   5025 
   5026 /\[(a)]{60}/expand
   5027     aaaa
   5028 
   5029 /(?<!\1((?U)1((?U))))(*F)/never_backslash_c,alt_bsux,anchored,extended
   5030 
   5031 /\g{3/
   5032 
   5033 /(a(?C1)(b)(c)d)+/
   5034   abcdabcd\=callout_capture
   5035 
   5036 # Perl matches this one, but PCRE does not because (*ACCEPT) clears out any
   5037 # pending backtracks in the recursion.
   5038 
   5039 /^ (?(DEFINE) (..(*ACCEPT)|...) ) (?1)$/x
   5040 \= Expect no match
   5041     abc
   5042 
   5043 # Perl gives no match for this one
   5044 
   5045 /(a(*MARK:m)(*ACCEPT)){0}(?1)/mark
   5046     abc
   5047 
   5048 /abc/endanchored
   5049     xyzabc
   5050 \= Expect no match
   5051     xyzabcdef
   5052 \= Expect error
   5053     xyzabc\=ph
   5054 
   5055 /abc/
   5056     xyzabc\=endanchored
   5057 \= Expect no match
   5058     xyzabcdef\=endanchored
   5059 \= Expect error
   5060     xyzabc\=ps,endanchored
   5061 
   5062 /abc(*ACCEPT)d/endanchored
   5063     xyzabc
   5064 \= Expect no match
   5065     xyzabcdef
   5066 
   5067 /abc|bcd/endanchored
   5068     xyzabcd
   5069 \= Expect no match
   5070     xyzabcdef
   5071 
   5072 /a(*ACCEPT)x|aa/endanchored
   5073     aaa
   5074 
   5075 # Check auto-anchoring when there is a group that is never obeyed at
   5076 # the start of a branch.
   5077 
   5078 /(?(DEFINE)(a))^bc/I
   5079 
   5080 /(a){0}.*bc/sI
   5081 
   5082 # This should be anchored, as the condition is always false and there is
   5083 # no alternative branch.
   5084 
   5085 /(?(VERSION>=999)yes)^bc/I
   5086 
   5087 # This should not be anchored.
   5088 
   5089 /(?(VERSION>=999)yes|no)^bc/I
   5090 
   5091 /(*LIMIT_HEAP=0)xxx/I
   5092 
   5093 /\d{0,3}(*:abc)(?C1)xxx/callout_info
   5094 
   5095 # ----------------------------------------------------------------------
   5096 
   5097 # These are a whole pile of tests that touch lines of code that are not
   5098 # used by any other tests (at least when these were created).
   5099 
   5100 /^a+?x/i,no_start_optimize,no_auto_possess
   5101 \= Expect no match
   5102     aaa
   5103 
   5104 /^[^a]{3,}?x/i,no_start_optimize,no_auto_possess
   5105 \= Expect no match
   5106     bbb
   5107     cc
   5108 
   5109 /^X\S/no_start_optimize,no_auto_possess
   5110 \= Expect no match
   5111     X
   5112 
   5113 /^X\W/no_start_optimize,no_auto_possess
   5114 \= Expect no match
   5115     X
   5116 
   5117 /^X\H/no_start_optimize,no_auto_possess
   5118 \= Expect no match
   5119     X
   5120 
   5121 /^X\h/no_start_optimize,no_auto_possess
   5122 \= Expect no match
   5123     X
   5124 
   5125 /^X\V/no_start_optimize,no_auto_possess
   5126 \= Expect no match
   5127     X
   5128 
   5129 /^X\v/no_start_optimize,no_auto_possess
   5130 \= Expect no match
   5131     X
   5132 
   5133 /^X\h/no_start_optimize,no_auto_possess
   5134 \= Expect no match
   5135     XY
   5136 
   5137 /^X\V/no_start_optimize,no_auto_possess
   5138 \= Expect no match
   5139     X\n
   5140 
   5141 /^X\v/no_start_optimize,no_auto_possess
   5142 \= Expect no match
   5143     XX
   5144 
   5145 /^X.+?/s,no_start_optimize,no_auto_possess
   5146 \= Expect no match
   5147     X
   5148 
   5149 /^X\R+?/no_start_optimize,no_auto_possess
   5150 \= Expect no match
   5151     XX
   5152 
   5153 /^X\H+?/no_start_optimize,no_auto_possess
   5154 \= Expect no match
   5155     X
   5156 
   5157 /^X\h+?/no_start_optimize,no_auto_possess
   5158 \= Expect no match
   5159     X
   5160 
   5161 /^X\V+?/no_start_optimize,no_auto_possess
   5162 \= Expect no match
   5163     X
   5164     X\n
   5165 
   5166 /^X\D+?/no_start_optimize,no_auto_possess
   5167 \= Expect no match
   5168     X
   5169     X9
   5170 
   5171 /^X\S+?/no_start_optimize,no_auto_possess
   5172 \= Expect no match
   5173     X
   5174     X\n
   5175 
   5176 /^X\W+?/no_start_optimize,no_auto_possess
   5177 \= Expect no match
   5178     X
   5179     XX
   5180 
   5181 /^X.+?Z/no_start_optimize,no_auto_possess
   5182 \= Expect no match
   5183     XY\n
   5184 
   5185 /(*CRLF)^X.+?Z/no_start_optimize,no_auto_possess
   5186 \= Expect no match
   5187     XY\r\=ps
   5188 
   5189 /^X\R+?Z/no_start_optimize,no_auto_possess
   5190 \= Expect no match
   5191     X\nX
   5192     X\n\r\n
   5193     X\n\rY
   5194     X\n\nY
   5195     X\n\x{0c}Y
   5196 
   5197 /(*BSR_ANYCRLF)^X\R+?Z/no_start_optimize,no_auto_possess
   5198 \= Expect no match
   5199     X\nX
   5200     X\n\r\n
   5201     X\n\rY
   5202     X\n\nY
   5203     X\n\x{0c}Y
   5204 
   5205 /^X\H+?Z/no_start_optimize,no_auto_possess
   5206 \= Expect no match
   5207     XY\t
   5208     XYY
   5209 
   5210 /^X\h+?Z/no_start_optimize,no_auto_possess
   5211 \= Expect no match
   5212     X\t\t
   5213     X\tY
   5214 
   5215 /^X\V+?Z/no_start_optimize,no_auto_possess
   5216 \= Expect no match
   5217     XY\n
   5218     XYY
   5219 
   5220 /^X\v+?Z/no_start_optimize,no_auto_possess
   5221 \= Expect no match
   5222     X\n\n
   5223     X\nY
   5224 
   5225 /^X\D+?Z/no_start_optimize,no_auto_possess
   5226 \= Expect no match
   5227     XY9
   5228     XYY
   5229 
   5230 /^X\d+?Z/no_start_optimize,no_auto_possess
   5231 \= Expect no match
   5232     X99
   5233     X9Y
   5234 
   5235 /^X\S+?Z/no_start_optimize,no_auto_possess
   5236 \= Expect no match
   5237     XY\n
   5238     XYY
   5239 
   5240 /^X\s+?Z/no_start_optimize,no_auto_possess
   5241 \= Expect no match
   5242     X\n\n
   5243     X\nY
   5244 
   5245 /^X\W+?Z/no_start_optimize,no_auto_possess
   5246 \= Expect no match
   5247     X.A
   5248     X++
   5249 
   5250 /^X\w+?Z/no_start_optimize,no_auto_possess
   5251 \= Expect no match
   5252     Xa.
   5253     Xaa
   5254 
   5255 /^X.{1,3}Z/s,no_start_optimize,no_auto_possess
   5256 \= Expect no match
   5257     Xa.bd
   5258 
   5259 /^X\h+Z/no_start_optimize,no_auto_possess
   5260 \= Expect no match
   5261     X\t\t
   5262     X\tY
   5263 
   5264 /^X\V+Z/no_start_optimize,no_auto_possess
   5265 \= Expect no match
   5266     XY\n
   5267     XYY
   5268 
   5269 /^(X(*THEN)Y|AB){0}(?1)/
   5270     ABX
   5271 \= Expect no match
   5272     XAB
   5273 
   5274 /^(?!A(?C1)B)C/
   5275     ABC\=callout_error=1,no_jit
   5276 
   5277 /^(?!A(?C1)B)C/no_start_optimize
   5278     ABC\=callout_error=1
   5279 
   5280 /^(?(?!A(?C1)B)C)/
   5281     ABC\=callout_error=1
   5282 
   5283 # ----------------------------------------------------------------------
   5284 
   5285 /[a b c]/BxxI
   5286 
   5287 /[a b c]/BxxxI
   5288 
   5289 /[a b c]/B,extended_more
   5290 
   5291 /[ a b c ]/B,extended_more
   5292 
   5293 /[a b](?xx: [ 12 ] (?-xx:[ 34 ]) )y z/B
   5294 
   5295 # Unsetting /x also unsets /xx
   5296 
   5297 /[a b](?xx: [ 12 ] (?-x:[ 34 ]) )y z/B
   5298 
   5299 /(a)(?-n:(b))(c)/nB
   5300 
   5301 # ----------------------------------------------------------------------
   5302 # These test the dangerous PCRE2_EXTRA_BAD_ESCAPE_IS_LITERAL option.
   5303 
   5304 /\j\x{z}\o{82}\L\uabcd\u\U\g{\g/B,\bad_escape_is_literal
   5305 
   5306 /\N{\c/IB,bad_escape_is_literal
   5307 
   5308 /[\j\x{z}\o\gA-\Nb-\g]/B,bad_escape_is_literal
   5309 
   5310 /[Q-\N]/B,bad_escape_is_literal
   5311 
   5312 # ----------------------------------------------------------------------
   5313 
   5314 /a\b(c/literal
   5315     a\\b(c
   5316 
   5317 /a\b(c/literal,caseless
   5318     a\\b(c
   5319     a\\B(c
   5320 
   5321 /a\b(c/literal,firstline
   5322     XYYa\\b(c
   5323 \= Expect no match
   5324     X\na\\b(c
   5325 
   5326 /a\b?c/literal,use_offset_limit
   5327     XXXXa\\b?c\=offset_limit=4
   5328 \= Expect no match
   5329     XXXXa\\b?c\=offset_limit=3
   5330 
   5331 /a\b(c/literal,anchored,endanchored
   5332     a\\b(c
   5333 \= Expect no match
   5334     Xa\\b(c
   5335     a\\b(cX
   5336     Xa\\b(cX
   5337 
   5338 //literal,extended
   5339 
   5340 /a\b(c/literal,auto_callout,no_start_optimize
   5341     XXXXa\\b(c
   5342 
   5343 /a\b(c/literal,auto_callout
   5344     XXXXa\\b(c
   5345 
   5346 /(*CR)abc/literal
   5347     (*CR)abc
   5348 
   5349 /cat|dog/I,match_word
   5350     the cat sat
   5351 \= Expect no match
   5352     caterpillar
   5353     snowcat
   5354     syndicate
   5355 
   5356 /(cat)|dog/I,match_line,literal
   5357     (cat)|dog
   5358 \= Expect no match
   5359     the cat sat
   5360     caterpillar
   5361     snowcat
   5362     syndicate
   5363 
   5364 /a whole line/match_line,multiline
   5365     Rhubarb \na whole line\n custard
   5366 \= Expect no match
   5367     Not a whole line
   5368 
   5369 # Perl gets this wrong, failing to capture 'b' in group 1.
   5370 
   5371 /^(b+|a){1,2}?bc/
   5372     bbc
   5373     
   5374 # And again here, for the "babc" subject string. 
   5375 
   5376 /^(b*|ba){1,2}?bc/
   5377     babc
   5378     bbabc
   5379     bababc
   5380 \= Expect no match
   5381     bababbc
   5382     babababc
   5383 
   5384 /[[:digit:]-a]/
   5385 
   5386 /[[:digit:]-[:print:]]/
   5387 
   5388 /[\d-a]/
   5389 
   5390 /[\H-z]/
   5391 
   5392 /[\d-[:print:]]/
   5393 
   5394 # Perl gets the second of these wrong, giving no match.
   5395 
   5396 "(?<=(a))\1?b"I
   5397     ab
   5398     aaab 
   5399 
   5400 "(?=(a))\1?b"I
   5401     ab
   5402     aaab
   5403     
   5404 # JIT does not support callout_extra  
   5405     
   5406 /(*NO_JIT)(a+)b/auto_callout,no_start_optimize,no_auto_possess
   5407 \= Expect no match
   5408     aac\=callout_extra 
   5409     
   5410 /(*NO_JIT)a+(?C'XXX')b/no_start_optimize,no_auto_possess
   5411 \= Expect no match
   5412     aac\=callout_extra 
   5413 
   5414 /\n/firstline
   5415     xyz\nabc
   5416 
   5417 /\nabc/firstline
   5418     xyz\nabc
   5419 
   5420 /\x{0a}abc/firstline,newline=crlf
   5421 \= Expect no match
   5422     xyz\r\nabc
   5423 
   5424 /[abc]/firstline
   5425 \= Expect no match
   5426     \na
   5427     
   5428 # These tests are matched in test 1 as they are Perl compatible. Here we are
   5429 # looking at what does and does not get auto-possessified. 
   5430 
   5431 /(?(DEFINE)(?<optional_a>a?))^(?&optional_a)a$/B
   5432 
   5433 /(?(DEFINE)(?<optional_a>a?)X)^(?&optional_a)a$/B
   5434     
   5435 /^(a?)b(?1)a/B
   5436 
   5437 /^(a?)+b(?1)a/B
   5438 
   5439 /^(a?)++b(?1)a/B
   5440 
   5441 /^(a?)+b/B
   5442 
   5443 /(?=a+)a(a+)++b/B
   5444 
   5445 /(?<=(?=.){4,5}x)/B
   5446 
   5447 # Perl behaves differently with these when optimization is turned off
   5448 
   5449 /a(*PRUNE:X)bc|qq/mark,no_start_optimize
   5450 \= Expect no match
   5451     axy
   5452 
   5453 /a(*THEN:X)bc|qq/mark,no_start_optimize
   5454 \= Expect no match
   5455     axy
   5456 
   5457 /(?^x-i)AB/ 
   5458 
   5459 /(?^-i)AB/ 
   5460 
   5461 /(?x-i-i)/
   5462 
   5463 /(?(?=^))b/I
   5464     abc
   5465 
   5466 /(?(?=^)|)b/I
   5467     abc
   5468 
   5469 /(?(?=^)|^)b/I
   5470     bbc
   5471 \= Expect no match
   5472     abc     
   5473 
   5474 /(?(1)^|^())/I
   5475 
   5476 /(?(1)^())b/I
   5477 
   5478 /(?(1)^())+b/I,aftertext
   5479     abc
   5480 
   5481 /(?(1)^()|^)+b/I,aftertext
   5482     bbc 
   5483 \= Expect no match     
   5484     abc
   5485 
   5486 /(?(1)^()|^)*b/I,aftertext
   5487     bbc 
   5488     abc
   5489     xbc 
   5490 
   5491 /(?(1)^())+b/I,aftertext
   5492     abc
   5493 
   5494 /(?(1)^a()|^a)+b/I,aftertext
   5495     abc 
   5496 \= Expect no match     
   5497     bbc
   5498 
   5499 /(?(1)^|^(a))+b/I,aftertext
   5500     abc 
   5501 \= Expect no match     
   5502     bbc
   5503 
   5504 /(?(1)^a()|^a)*b/I,aftertext
   5505     abc 
   5506     bbc
   5507     xbc 
   5508 
   5509 # End of testinput2
   5510