Home | History | Annotate | Download | only in testdata
      1 /-- This set of tests is for features that are compatible with all versions of
      2     Perl 5, in non-UTF-8 mode. --/
      3 
      4 /the quick brown fox/
      5     the quick brown fox
      6  0: the quick brown fox
      7     The quick brown FOX
      8 No match
      9     What do you know about the quick brown fox?
     10  0: the quick brown fox
     11     What do you know about THE QUICK BROWN FOX?
     12 No match
     13 
     14 /The quick brown fox/i
     15     the quick brown fox
     16  0: the quick brown fox
     17     The quick brown FOX
     18  0: The quick brown FOX
     19     What do you know about the quick brown fox?
     20  0: the quick brown fox
     21     What do you know about THE QUICK BROWN FOX?
     22  0: THE QUICK BROWN FOX
     23 
     24 /abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
     25     abcd\t\n\r\f\a\e9;\$\\?caxyz
     26  0: abcd\x09\x0a\x0d\x0c\x07\x1b9;$\?caxyz
     27 
     28 /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
     29     abxyzpqrrrabbxyyyypqAzz
     30  0: abxyzpqrrrabbxyyyypqAzz
     31     abxyzpqrrrabbxyyyypqAzz
     32  0: abxyzpqrrrabbxyyyypqAzz
     33     aabxyzpqrrrabbxyyyypqAzz
     34  0: aabxyzpqrrrabbxyyyypqAzz
     35     aaabxyzpqrrrabbxyyyypqAzz
     36  0: aaabxyzpqrrrabbxyyyypqAzz
     37     aaaabxyzpqrrrabbxyyyypqAzz
     38  0: aaaabxyzpqrrrabbxyyyypqAzz
     39     abcxyzpqrrrabbxyyyypqAzz
     40  0: abcxyzpqrrrabbxyyyypqAzz
     41     aabcxyzpqrrrabbxyyyypqAzz
     42  0: aabcxyzpqrrrabbxyyyypqAzz
     43     aaabcxyzpqrrrabbxyyyypAzz
     44  0: aaabcxyzpqrrrabbxyyyypAzz
     45     aaabcxyzpqrrrabbxyyyypqAzz
     46  0: aaabcxyzpqrrrabbxyyyypqAzz
     47     aaabcxyzpqrrrabbxyyyypqqAzz
     48  0: aaabcxyzpqrrrabbxyyyypqqAzz
     49     aaabcxyzpqrrrabbxyyyypqqqAzz
     50  0: aaabcxyzpqrrrabbxyyyypqqqAzz
     51     aaabcxyzpqrrrabbxyyyypqqqqAzz
     52  0: aaabcxyzpqrrrabbxyyyypqqqqAzz
     53     aaabcxyzpqrrrabbxyyyypqqqqqAzz
     54  0: aaabcxyzpqrrrabbxyyyypqqqqqAzz
     55     aaabcxyzpqrrrabbxyyyypqqqqqqAzz
     56  0: aaabcxyzpqrrrabbxyyyypqqqqqqAzz
     57     aaaabcxyzpqrrrabbxyyyypqAzz
     58  0: aaaabcxyzpqrrrabbxyyyypqAzz
     59     abxyzzpqrrrabbxyyyypqAzz
     60  0: abxyzzpqrrrabbxyyyypqAzz
     61     aabxyzzzpqrrrabbxyyyypqAzz
     62  0: aabxyzzzpqrrrabbxyyyypqAzz
     63     aaabxyzzzzpqrrrabbxyyyypqAzz
     64  0: aaabxyzzzzpqrrrabbxyyyypqAzz
     65     aaaabxyzzzzpqrrrabbxyyyypqAzz
     66  0: aaaabxyzzzzpqrrrabbxyyyypqAzz
     67     abcxyzzpqrrrabbxyyyypqAzz
     68  0: abcxyzzpqrrrabbxyyyypqAzz
     69     aabcxyzzzpqrrrabbxyyyypqAzz
     70  0: aabcxyzzzpqrrrabbxyyyypqAzz
     71     aaabcxyzzzzpqrrrabbxyyyypqAzz
     72  0: aaabcxyzzzzpqrrrabbxyyyypqAzz
     73     aaaabcxyzzzzpqrrrabbxyyyypqAzz
     74  0: aaaabcxyzzzzpqrrrabbxyyyypqAzz
     75     aaaabcxyzzzzpqrrrabbbxyyyypqAzz
     76  0: aaaabcxyzzzzpqrrrabbbxyyyypqAzz
     77     aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
     78  0: aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
     79     aaabcxyzpqrrrabbxyyyypABzz
     80  0: aaabcxyzpqrrrabbxyyyypABzz
     81     aaabcxyzpqrrrabbxyyyypABBzz
     82  0: aaabcxyzpqrrrabbxyyyypABBzz
     83     >>>aaabxyzpqrrrabbxyyyypqAzz
     84  0: aaabxyzpqrrrabbxyyyypqAzz
     85     >aaaabxyzpqrrrabbxyyyypqAzz
     86  0: aaaabxyzpqrrrabbxyyyypqAzz
     87     >>>>abcxyzpqrrrabbxyyyypqAzz
     88  0: abcxyzpqrrrabbxyyyypqAzz
     89     *** Failers
     90 No match
     91     abxyzpqrrabbxyyyypqAzz
     92 No match
     93     abxyzpqrrrrabbxyyyypqAzz
     94 No match
     95     abxyzpqrrrabxyyyypqAzz
     96 No match
     97     aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
     98 No match
     99     aaaabcxyzzzzpqrrrabbbxyyypqAzz
    100 No match
    101     aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
    102 No match
    103 
    104 /^(abc){1,2}zz/
    105     abczz
    106  0: abczz
    107  1: abc
    108     abcabczz
    109  0: abcabczz
    110  1: abc
    111     *** Failers
    112 No match
    113     zz
    114 No match
    115     abcabcabczz
    116 No match
    117     >>abczz
    118 No match
    119 
    120 /^(b+?|a){1,2}?c/
    121     bc
    122  0: bc
    123  1: b
    124     bbc
    125  0: bbc
    126  1: b
    127     bbbc
    128  0: bbbc
    129  1: bb
    130     bac
    131  0: bac
    132  1: a
    133     bbac
    134  0: bbac
    135  1: a
    136     aac
    137  0: aac
    138  1: a
    139     abbbbbbbbbbbc
    140  0: abbbbbbbbbbbc
    141  1: bbbbbbbbbbb
    142     bbbbbbbbbbbac
    143  0: bbbbbbbbbbbac
    144  1: a
    145     *** Failers
    146 No match
    147     aaac
    148 No match
    149     abbbbbbbbbbbac
    150 No match
    151 
    152 /^(b+|a){1,2}c/
    153     bc
    154  0: bc
    155  1: b
    156     bbc
    157  0: bbc
    158  1: bb
    159     bbbc
    160  0: bbbc
    161  1: bbb
    162     bac
    163  0: bac
    164  1: a
    165     bbac
    166  0: bbac
    167  1: a
    168     aac
    169  0: aac
    170  1: a
    171     abbbbbbbbbbbc
    172  0: abbbbbbbbbbbc
    173  1: bbbbbbbbbbb
    174     bbbbbbbbbbbac
    175  0: bbbbbbbbbbbac
    176  1: a
    177     *** Failers
    178 No match
    179     aaac
    180 No match
    181     abbbbbbbbbbbac
    182 No match
    183 
    184 /^(b+|a){1,2}?bc/
    185     bbc
    186  0: bbc
    187  1: b
    188 
    189 /^(b*|ba){1,2}?bc/
    190     babc
    191  0: babc
    192  1: ba
    193     bbabc
    194  0: bbabc
    195  1: ba
    196     bababc
    197  0: bababc
    198  1: ba
    199     *** Failers
    200 No match
    201     bababbc
    202 No match
    203     babababc
    204 No match
    205 
    206 /^(ba|b*){1,2}?bc/
    207     babc
    208  0: babc
    209  1: ba
    210     bbabc
    211  0: bbabc
    212  1: ba
    213     bababc
    214  0: bababc
    215  1: ba
    216     *** Failers
    217 No match
    218     bababbc
    219 No match
    220     babababc
    221 No match
    222 
    223 /^\ca\cA\c[\c{\c:/
    224     \x01\x01\e;z
    225  0: \x01\x01\x1b;z
    226 
    227 /^[ab\]cde]/
    228     athing
    229  0: a
    230     bthing
    231  0: b
    232     ]thing
    233  0: ]
    234     cthing
    235  0: c
    236     dthing
    237  0: d
    238     ething
    239  0: e
    240     *** Failers
    241 No match
    242     fthing
    243 No match
    244     [thing
    245 No match
    246     \\thing
    247 No match
    248 
    249 /^[]cde]/
    250     ]thing
    251  0: ]
    252     cthing
    253  0: c
    254     dthing
    255  0: d
    256     ething
    257  0: e
    258     *** Failers
    259 No match
    260     athing
    261 No match
    262     fthing
    263 No match
    264 
    265 /^[^ab\]cde]/
    266     fthing
    267  0: f
    268     [thing
    269  0: [
    270     \\thing
    271  0: \
    272     *** Failers
    273  0: *
    274     athing
    275 No match
    276     bthing
    277 No match
    278     ]thing
    279 No match
    280     cthing
    281 No match
    282     dthing
    283 No match
    284     ething
    285 No match
    286 
    287 /^[^]cde]/
    288     athing
    289  0: a
    290     fthing
    291  0: f
    292     *** Failers
    293  0: *
    294     ]thing
    295 No match
    296     cthing
    297 No match
    298     dthing
    299 No match
    300     ething
    301 No match
    302 
    303 /^\/
    304     
    305  0: \x81
    306 
    307 /^/
    308     
    309  0: \xff
    310 
    311 /^[0-9]+$/
    312     0
    313  0: 0
    314     1
    315  0: 1
    316     2
    317  0: 2
    318     3
    319  0: 3
    320     4
    321  0: 4
    322     5
    323  0: 5
    324     6
    325  0: 6
    326     7
    327  0: 7
    328     8
    329  0: 8
    330     9
    331  0: 9
    332     10
    333  0: 10
    334     100
    335  0: 100
    336     *** Failers
    337 No match
    338     abc
    339 No match
    340 
    341 /^.*nter/
    342     enter
    343  0: enter
    344     inter
    345  0: inter
    346     uponter
    347  0: uponter
    348 
    349 /^xxx[0-9]+$/
    350     xxx0
    351  0: xxx0
    352     xxx1234
    353  0: xxx1234
    354     *** Failers
    355 No match
    356     xxx
    357 No match
    358 
    359 /^.+[0-9][0-9][0-9]$/
    360     x123
    361  0: x123
    362     xx123
    363  0: xx123
    364     123456
    365  0: 123456
    366     *** Failers
    367 No match
    368     123
    369 No match
    370     x1234
    371  0: x1234
    372 
    373 /^.+?[0-9][0-9][0-9]$/
    374     x123
    375  0: x123
    376     xx123
    377  0: xx123
    378     123456
    379  0: 123456
    380     *** Failers
    381 No match
    382     123
    383 No match
    384     x1234
    385  0: x1234
    386 
    387 /^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
    388     abc!pqr=apquxz.ixr.zzz.ac.uk
    389  0: abc!pqr=apquxz.ixr.zzz.ac.uk
    390  1: abc
    391  2: pqr
    392     *** Failers
    393 No match
    394     !pqr=apquxz.ixr.zzz.ac.uk
    395 No match
    396     abc!=apquxz.ixr.zzz.ac.uk
    397 No match
    398     abc!pqr=apquxz:ixr.zzz.ac.uk
    399 No match
    400     abc!pqr=apquxz.ixr.zzz.ac.ukk
    401 No match
    402 
    403 /:/
    404     Well, we need a colon: somewhere
    405  0: :
    406     *** Fail if we don't
    407 No match
    408 
    409 /([\da-f:]+)$/i
    410     0abc
    411  0: 0abc
    412  1: 0abc
    413     abc
    414  0: abc
    415  1: abc
    416     fed
    417  0: fed
    418  1: fed
    419     E
    420  0: E
    421  1: E
    422     ::
    423  0: ::
    424  1: ::
    425     5f03:12C0::932e
    426  0: 5f03:12C0::932e
    427  1: 5f03:12C0::932e
    428     fed def
    429  0: def
    430  1: def
    431     Any old stuff
    432  0: ff
    433  1: ff
    434     *** Failers
    435 No match
    436     0zzz
    437 No match
    438     gzzz
    439 No match
    440     fed\x20
    441 No match
    442     Any old rubbish
    443 No match
    444 
    445 /^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
    446     .1.2.3
    447  0: .1.2.3
    448  1: 1
    449  2: 2
    450  3: 3
    451     A.12.123.0
    452  0: A.12.123.0
    453  1: 12
    454  2: 123
    455  3: 0
    456     *** Failers
    457 No match
    458     .1.2.3333
    459 No match
    460     1.2.3
    461 No match
    462     1234.2.3
    463 No match
    464 
    465 /^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
    466     1 IN SOA non-sp1 non-sp2(
    467  0: 1 IN SOA non-sp1 non-sp2(
    468  1: 1
    469  2: non-sp1
    470  3: non-sp2
    471     1    IN    SOA    non-sp1    non-sp2   (
    472  0: 1    IN    SOA    non-sp1    non-sp2   (
    473  1: 1
    474  2: non-sp1
    475  3: non-sp2
    476     *** Failers
    477 No match
    478     1IN SOA non-sp1 non-sp2(
    479 No match
    480 
    481 /^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/
    482     a.
    483  0: a.
    484     Z.
    485  0: Z.
    486     2.
    487  0: 2.
    488     ab-c.pq-r.
    489  0: ab-c.pq-r.
    490  1: .pq-r
    491     sxk.zzz.ac.uk.
    492  0: sxk.zzz.ac.uk.
    493  1: .uk
    494     x-.y-.
    495  0: x-.y-.
    496  1: .y-
    497     *** Failers
    498 No match
    499     -abc.peq.
    500 No match
    501 
    502 /^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/
    503     *.a
    504  0: *.a
    505     *.b0-a
    506  0: *.b0-a
    507  1: 0-a
    508     *.c3-b.c
    509  0: *.c3-b.c
    510  1: 3-b
    511  2: .c
    512     *.c-a.b-c
    513  0: *.c-a.b-c
    514  1: -a
    515  2: .b-c
    516  3: -c
    517     *** Failers
    518 No match
    519     *.0
    520 No match
    521     *.a-
    522 No match
    523     *.a-b.c-
    524 No match
    525     *.c-a.0-c
    526 No match
    527 
    528 /^(?=ab(de))(abd)(e)/
    529     abde
    530  0: abde
    531  1: de
    532  2: abd
    533  3: e
    534 
    535 /^(?!(ab)de|x)(abd)(f)/
    536     abdf
    537  0: abdf
    538  1: <unset>
    539  2: abd
    540  3: f
    541 
    542 /^(?=(ab(cd)))(ab)/
    543     abcd
    544  0: ab
    545  1: abcd
    546  2: cd
    547  3: ab
    548 
    549 /^[\da-f](\.[\da-f])*$/i
    550     a.b.c.d
    551  0: a.b.c.d
    552  1: .d
    553     A.B.C.D
    554  0: A.B.C.D
    555  1: .D
    556     a.b.c.1.2.3.C
    557  0: a.b.c.1.2.3.C
    558  1: .C
    559 
    560 /^\".*\"\s*(;.*)?$/
    561     \"1234\"
    562  0: "1234"
    563     \"abcd\" ;
    564  0: "abcd" ;
    565  1: ;
    566     \"\" ; rhubarb
    567  0: "" ; rhubarb
    568  1: ; rhubarb
    569     *** Failers
    570 No match
    571     \"1234\" : things
    572 No match
    573 
    574 /^$/
    575     \
    576  0: 
    577     *** Failers
    578 No match
    579 
    580 /   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/x
    581     ab c
    582  0: ab c
    583     *** Failers
    584 No match
    585     abc
    586 No match
    587     ab cde
    588 No match
    589 
    590 /(?x)   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/
    591     ab c
    592  0: ab c
    593     *** Failers
    594 No match
    595     abc
    596 No match
    597     ab cde
    598 No match
    599 
    600 /^   a\ b[c ]d       $/x
    601     a bcd
    602  0: a bcd
    603     a b d
    604  0: a b d
    605     *** Failers
    606 No match
    607     abcd
    608 No match
    609     ab d
    610 No match
    611 
    612 /^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
    613     abcdefhijklm
    614  0: abcdefhijklm
    615  1: abc
    616  2: bc
    617  3: c
    618  4: def
    619  5: ef
    620  6: f
    621  7: hij
    622  8: ij
    623  9: j
    624 10: klm
    625 11: lm
    626 12: m
    627 
    628 /^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
    629     abcdefhijklm
    630  0: abcdefhijklm
    631  1: bc
    632  2: c
    633  3: ef
    634  4: f
    635  5: ij
    636  6: j
    637  7: lm
    638  8: m
    639 
    640 /^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
    641     a+ Z0+\x08\n\x1d\x12
    642  0: a+ Z0+\x08\x0a\x1d\x12
    643 
    644 /^[.^$|()*+?{,}]+/
    645     .^\$(*+)|{?,?}
    646  0: .^$(*+)|{?,?}
    647 
    648 /^a*\w/
    649     z
    650  0: z
    651     az
    652  0: az
    653     aaaz
    654  0: aaaz
    655     a
    656  0: a
    657     aa
    658  0: aa
    659     aaaa
    660  0: aaaa
    661     a+
    662  0: a
    663     aa+
    664  0: aa
    665 
    666 /^a*?\w/
    667     z
    668  0: z
    669     az
    670  0: a
    671     aaaz
    672  0: a
    673     a
    674  0: a
    675     aa
    676  0: a
    677     aaaa
    678  0: a
    679     a+
    680  0: a
    681     aa+
    682  0: a
    683 
    684 /^a+\w/
    685     az
    686  0: az
    687     aaaz
    688  0: aaaz
    689     aa
    690  0: aa
    691     aaaa
    692  0: aaaa
    693     aa+
    694  0: aa
    695 
    696 /^a+?\w/
    697     az
    698  0: az
    699     aaaz
    700  0: aa
    701     aa
    702  0: aa
    703     aaaa
    704  0: aa
    705     aa+
    706  0: aa
    707 
    708 /^\d{8}\w{2,}/
    709     1234567890
    710  0: 1234567890
    711     12345678ab
    712  0: 12345678ab
    713     12345678__
    714  0: 12345678__
    715     *** Failers
    716 No match
    717     1234567
    718 No match
    719 
    720 /^[aeiou\d]{4,5}$/
    721     uoie
    722  0: uoie
    723     1234
    724  0: 1234
    725     12345
    726  0: 12345
    727     aaaaa
    728  0: aaaaa
    729     *** Failers
    730 No match
    731     123456
    732 No match
    733 
    734 /^[aeiou\d]{4,5}?/
    735     uoie
    736  0: uoie
    737     1234
    738  0: 1234
    739     12345
    740  0: 1234
    741     aaaaa
    742  0: aaaa
    743     123456
    744  0: 1234
    745 
    746 /\A(abc|def)=(\1){2,3}\Z/
    747     abc=abcabc
    748  0: abc=abcabc
    749  1: abc
    750  2: abc
    751     def=defdefdef
    752  0: def=defdefdef
    753  1: def
    754  2: def
    755     *** Failers
    756 No match
    757     abc=defdef
    758 No match
    759 
    760 /^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\11*(\3\4)\1(?#)2$/
    761     abcdefghijkcda2
    762  0: abcdefghijkcda2
    763  1: a
    764  2: b
    765  3: c
    766  4: d
    767  5: e
    768  6: f
    769  7: g
    770  8: h
    771  9: i
    772 10: j
    773 11: k
    774 12: cd
    775     abcdefghijkkkkcda2
    776  0: abcdefghijkkkkcda2
    777  1: a
    778  2: b
    779  3: c
    780  4: d
    781  5: e
    782  6: f
    783  7: g
    784  8: h
    785  9: i
    786 10: j
    787 11: k
    788 12: cd
    789 
    790 /(cat(a(ract|tonic)|erpillar)) \1()2(3)/
    791     cataract cataract23
    792  0: cataract cataract23
    793  1: cataract
    794  2: aract
    795  3: ract
    796  4: 
    797  5: 3
    798     catatonic catatonic23
    799  0: catatonic catatonic23
    800  1: catatonic
    801  2: atonic
    802  3: tonic
    803  4: 
    804  5: 3
    805     caterpillar caterpillar23
    806  0: caterpillar caterpillar23
    807  1: caterpillar
    808  2: erpillar
    809  3: <unset>
    810  4: 
    811  5: 3
    812 
    813 
    814 /^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]/
    815     From abcd  Mon Sep 01 12:33:02 1997
    816  0: From abcd  Mon Sep 01 12:33
    817  1: abcd
    818 
    819 /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
    820     From abcd  Mon Sep 01 12:33:02 1997
    821  0: From abcd  Mon Sep 01 12:33
    822  1: Sep 
    823     From abcd  Mon Sep  1 12:33:02 1997
    824  0: From abcd  Mon Sep  1 12:33
    825  1: Sep  
    826     *** Failers
    827 No match
    828     From abcd  Sep 01 12:33:02 1997
    829 No match
    830 
    831 /^12.34/s
    832     12\n34
    833  0: 12\x0a34
    834     12\r34
    835  0: 12\x0d34
    836 
    837 /\w+(?=\t)/
    838     the quick brown\t fox
    839  0: brown
    840 
    841 /foo(?!bar)(.*)/
    842     foobar is foolish see?
    843  0: foolish see?
    844  1: lish see?
    845 
    846 /(?:(?!foo)...|^.{0,2})bar(.*)/
    847     foobar crowbar etc
    848  0: rowbar etc
    849  1:  etc
    850     barrel
    851  0: barrel
    852  1: rel
    853     2barrel
    854  0: 2barrel
    855  1: rel
    856     A barrel
    857  0: A barrel
    858  1: rel
    859 
    860 /^(\D*)(?=\d)(?!123)/
    861     abc456
    862  0: abc
    863  1: abc
    864     *** Failers
    865 No match
    866     abc123
    867 No match
    868 
    869 /^1234(?# test newlines
    870   inside)/
    871     1234
    872  0: 1234
    873 
    874 /^1234 #comment in extended re
    875   /x
    876     1234
    877  0: 1234
    878 
    879 /#rhubarb
    880   abcd/x
    881     abcd
    882  0: abcd
    883 
    884 /^abcd#rhubarb/x
    885     abcd
    886  0: abcd
    887 
    888 /^(a)\1{2,3}(.)/
    889     aaab
    890  0: aaab
    891  1: a
    892  2: b
    893     aaaab
    894  0: aaaab
    895  1: a
    896  2: b
    897     aaaaab
    898  0: aaaaa
    899  1: a
    900  2: a
    901     aaaaaab
    902  0: aaaaa
    903  1: a
    904  2: a
    905 
    906 /(?!^)abc/
    907     the abc
    908  0: abc
    909     *** Failers
    910 No match
    911     abc
    912 No match
    913 
    914 /(?=^)abc/
    915     abc
    916  0: abc
    917     *** Failers
    918 No match
    919     the abc
    920 No match
    921 
    922 /^[ab]{1,3}(ab*|b)/
    923     aabbbbb
    924  0: aabb
    925  1: b
    926 
    927 /^[ab]{1,3}?(ab*|b)/
    928     aabbbbb
    929  0: aabbbbb
    930  1: abbbbb
    931 
    932 /^[ab]{1,3}?(ab*?|b)/
    933     aabbbbb
    934  0: aa
    935  1: a
    936 
    937 /^[ab]{1,3}(ab*?|b)/
    938     aabbbbb
    939  0: aabb
    940  1: b
    941 
    942 /  (?: [\040\t] |  \(
    943 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
    944 \)  )*                          # optional leading comment
    945 (?:    (?:
    946 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
    947 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
    948 |
    949 " (?:                      # opening quote...
    950 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
    951 |                     #    or
    952 \\ [^\x80-\xff]           #   Escaped something (something != CR)
    953 )* "  # closing quote
    954 )                    # initial word
    955 (?:  (?: [\040\t] |  \(
    956 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
    957 \)  )*  \.  (?: [\040\t] |  \(
    958 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
    959 \)  )*   (?:
    960 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
    961 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
    962 |
    963 " (?:                      # opening quote...
    964 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
    965 |                     #    or
    966 \\ [^\x80-\xff]           #   Escaped something (something != CR)
    967 )* "  # closing quote
    968 )  )* # further okay, if led by a period
    969 (?: [\040\t] |  \(
    970 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
    971 \)  )*  @  (?: [\040\t] |  \(
    972 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
    973 \)  )*    (?:
    974 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
    975 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
    976 |   \[                         # [
    977 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
    978 \]                        #           ]
    979 )                           # initial subdomain
    980 (?:                                  #
    981 (?: [\040\t] |  \(
    982 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
    983 \)  )*  \.                        # if led by a period...
    984 (?: [\040\t] |  \(
    985 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
    986 \)  )*   (?:
    987 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
    988 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
    989 |   \[                         # [
    990 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
    991 \]                        #           ]
    992 )                     #   ...further okay
    993 )*
    994 # address
    995 |                     #  or
    996 (?:
    997 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
    998 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
    999 |
   1000 " (?:                      # opening quote...
   1001 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
   1002 |                     #    or
   1003 \\ [^\x80-\xff]           #   Escaped something (something != CR)
   1004 )* "  # closing quote
   1005 )             # one word, optionally followed by....
   1006 (?:
   1007 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]  |  # atom and space parts, or...
   1008 \(
   1009 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
   1010 \)       |  # comments, or...
   1011 
   1012 " (?:                      # opening quote...
   1013 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
   1014 |                     #    or
   1015 \\ [^\x80-\xff]           #   Escaped something (something != CR)
   1016 )* "  # closing quote
   1017 # quoted strings
   1018 )*
   1019 <  (?: [\040\t] |  \(
   1020 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
   1021 \)  )*                     # leading <
   1022 (?:  @  (?: [\040\t] |  \(
   1023 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
   1024 \)  )*    (?:
   1025 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
   1026 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
   1027 |   \[                         # [
   1028 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
   1029 \]                        #           ]
   1030 )                           # initial subdomain
   1031 (?:                                  #
   1032 (?: [\040\t] |  \(
   1033 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
   1034 \)  )*  \.                        # if led by a period...
   1035 (?: [\040\t] |  \(
   1036 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
   1037 \)  )*   (?:
   1038 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
   1039 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
   1040 |   \[                         # [
   1041 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
   1042 \]                        #           ]
   1043 )                     #   ...further okay
   1044 )*
   1045 
   1046 (?:  (?: [\040\t] |  \(
   1047 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
   1048 \)  )*  ,  (?: [\040\t] |  \(
   1049 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
   1050 \)  )*  @  (?: [\040\t] |  \(
   1051 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
   1052 \)  )*    (?:
   1053 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
   1054 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
   1055 |   \[                         # [
   1056 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
   1057 \]                        #           ]
   1058 )                           # initial subdomain
   1059 (?:                                  #
   1060 (?: [\040\t] |  \(
   1061 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
   1062 \)  )*  \.                        # if led by a period...
   1063 (?: [\040\t] |  \(
   1064 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
   1065 \)  )*   (?:
   1066 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
   1067 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
   1068 |   \[                         # [
   1069 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
   1070 \]                        #           ]
   1071 )                     #   ...further okay
   1072 )*
   1073 )* # further okay, if led by comma
   1074 :                                # closing colon
   1075 (?: [\040\t] |  \(
   1076 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
   1077 \)  )*  )? #       optional route
   1078 (?:
   1079 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
   1080 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
   1081 |
   1082 " (?:                      # opening quote...
   1083 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
   1084 |                     #    or
   1085 \\ [^\x80-\xff]           #   Escaped something (something != CR)
   1086 )* "  # closing quote
   1087 )                    # initial word
   1088 (?:  (?: [\040\t] |  \(
   1089 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
   1090 \)  )*  \.  (?: [\040\t] |  \(
   1091 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
   1092 \)  )*   (?:
   1093 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
   1094 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
   1095 |
   1096 " (?:                      # opening quote...
   1097 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
   1098 |                     #    or
   1099 \\ [^\x80-\xff]           #   Escaped something (something != CR)
   1100 )* "  # closing quote
   1101 )  )* # further okay, if led by a period
   1102 (?: [\040\t] |  \(
   1103 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
   1104 \)  )*  @  (?: [\040\t] |  \(
   1105 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
   1106 \)  )*    (?:
   1107 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
   1108 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
   1109 |   \[                         # [
   1110 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
   1111 \]                        #           ]
   1112 )                           # initial subdomain
   1113 (?:                                  #
   1114 (?: [\040\t] |  \(
   1115 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
   1116 \)  )*  \.                        # if led by a period...
   1117 (?: [\040\t] |  \(
   1118 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
   1119 \)  )*   (?:
   1120 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
   1121 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
   1122 |   \[                         # [
   1123 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
   1124 \]                        #           ]
   1125 )                     #   ...further okay
   1126 )*
   1127 #       address spec
   1128 (?: [\040\t] |  \(
   1129 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
   1130 \)  )*  > #                  trailing >
   1131 # name and address
   1132 )  (?: [\040\t] |  \(
   1133 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
   1134 \)  )*                       # optional trailing comment
   1135 /x
   1136     Alan Other <user\@dom.ain>
   1137  0: Alan Other <user (a] dom.ain>
   1138     <user\@dom.ain>
   1139  0: user (a] dom.ain
   1140     user\@dom.ain
   1141  0: user (a] dom.ain
   1142     \"A. Other\" <user.1234\@dom.ain> (a comment)
   1143  0: "A. Other" <user.1234 (a] dom.ain> (a comment)
   1144     A. Other <user.1234\@dom.ain> (a comment)
   1145  0:  Other <user.1234 (a] dom.ain> (a comment)
   1146     \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
   1147  0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
   1148     A missing angle <user\@some.where
   1149  0: user (a] some.where
   1150     *** Failers
   1151 No match
   1152     The quick brown fox
   1153 No match
   1154 
   1155 /[\040\t]*                    # Nab whitespace.
   1156 (?:
   1157 \(                              #  (
   1158 [^\\\x80-\xff\n\015()] *                             #     normal*
   1159 (?:                                 #       (
   1160 (?:  \\ [^\x80-\xff]  |
   1161 \(                            #  (
   1162 [^\\\x80-\xff\n\015()] *                            #     normal*
   1163 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
   1164 \)                           #                       )
   1165 )    #         special
   1166 [^\\\x80-\xff\n\015()] *                         #         normal*
   1167 )*                                  #            )*
   1168 \)                             #                )
   1169 [\040\t]* )*    # If comment found, allow more spaces.
   1170 # optional leading comment
   1171 (?:
   1172 (?:
   1173 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
   1174 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
   1175 # Atom
   1176 |                       #  or
   1177 "                                     # "
   1178 [^\\\x80-\xff\n\015"] *                            #   normal
   1179 (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
   1180 "                                     #        "
   1181 # Quoted string
   1182 )
   1183 [\040\t]*                    # Nab whitespace.
   1184 (?:
   1185 \(                              #  (
   1186 [^\\\x80-\xff\n\015()] *                             #     normal*
   1187 (?:                                 #       (
   1188 (?:  \\ [^\x80-\xff]  |
   1189 \(                            #  (
   1190 [^\\\x80-\xff\n\015()] *                            #     normal*
   1191 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
   1192 \)                           #                       )
   1193 )    #         special
   1194 [^\\\x80-\xff\n\015()] *                         #         normal*
   1195 )*                                  #            )*
   1196 \)                             #                )
   1197 [\040\t]* )*    # If comment found, allow more spaces.
   1198 (?:
   1199 \.
   1200 [\040\t]*                    # Nab whitespace.
   1201 (?:
   1202 \(                              #  (
   1203 [^\\\x80-\xff\n\015()] *                             #     normal*
   1204 (?:                                 #       (
   1205 (?:  \\ [^\x80-\xff]  |
   1206 \(                            #  (
   1207 [^\\\x80-\xff\n\015()] *                            #     normal*
   1208 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
   1209 \)                           #                       )
   1210 )    #         special
   1211 [^\\\x80-\xff\n\015()] *                         #         normal*
   1212 )*                                  #            )*
   1213 \)                             #                )
   1214 [\040\t]* )*    # If comment found, allow more spaces.
   1215 (?:
   1216 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
   1217 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
   1218 # Atom
   1219 |                       #  or
   1220 "                                     # "
   1221 [^\\\x80-\xff\n\015"] *                            #   normal
   1222 (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
   1223 "                                     #        "
   1224 # Quoted string
   1225 )
   1226 [\040\t]*                    # Nab whitespace.
   1227 (?:
   1228 \(                              #  (
   1229 [^\\\x80-\xff\n\015()] *                             #     normal*
   1230 (?:                                 #       (
   1231 (?:  \\ [^\x80-\xff]  |
   1232 \(                            #  (
   1233 [^\\\x80-\xff\n\015()] *                            #     normal*
   1234 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
   1235 \)                           #                       )
   1236 )    #         special
   1237 [^\\\x80-\xff\n\015()] *                         #         normal*
   1238 )*                                  #            )*
   1239 \)                             #                )
   1240 [\040\t]* )*    # If comment found, allow more spaces.
   1241 # additional words
   1242 )*
   1243 @
   1244 [\040\t]*                    # Nab whitespace.
   1245 (?:
   1246 \(                              #  (
   1247 [^\\\x80-\xff\n\015()] *                             #     normal*
   1248 (?:                                 #       (
   1249 (?:  \\ [^\x80-\xff]  |
   1250 \(                            #  (
   1251 [^\\\x80-\xff\n\015()] *                            #     normal*
   1252 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
   1253 \)                           #                       )
   1254 )    #         special
   1255 [^\\\x80-\xff\n\015()] *                         #         normal*
   1256 )*                                  #            )*
   1257 \)                             #                )
   1258 [\040\t]* )*    # If comment found, allow more spaces.
   1259 (?:
   1260 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
   1261 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
   1262 |
   1263 \[                            # [
   1264 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
   1265 \]                           #           ]
   1266 )
   1267 [\040\t]*                    # Nab whitespace.
   1268 (?:
   1269 \(                              #  (
   1270 [^\\\x80-\xff\n\015()] *                             #     normal*
   1271 (?:                                 #       (
   1272 (?:  \\ [^\x80-\xff]  |
   1273 \(                            #  (
   1274 [^\\\x80-\xff\n\015()] *                            #     normal*
   1275 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
   1276 \)                           #                       )
   1277 )    #         special
   1278 [^\\\x80-\xff\n\015()] *                         #         normal*
   1279 )*                                  #            )*
   1280 \)                             #                )
   1281 [\040\t]* )*    # If comment found, allow more spaces.
   1282 # optional trailing comments
   1283 (?:
   1284 \.
   1285 [\040\t]*                    # Nab whitespace.
   1286 (?:
   1287 \(                              #  (
   1288 [^\\\x80-\xff\n\015()] *                             #     normal*
   1289 (?:                                 #       (
   1290 (?:  \\ [^\x80-\xff]  |
   1291 \(                            #  (
   1292 [^\\\x80-\xff\n\015()] *                            #     normal*
   1293 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
   1294 \)                           #                       )
   1295 )    #         special
   1296 [^\\\x80-\xff\n\015()] *                         #         normal*
   1297 )*                                  #            )*
   1298 \)                             #                )
   1299 [\040\t]* )*    # If comment found, allow more spaces.
   1300 (?:
   1301 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
   1302 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
   1303 |
   1304 \[                            # [
   1305 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
   1306 \]                           #           ]
   1307 )
   1308 [\040\t]*                    # Nab whitespace.
   1309 (?:
   1310 \(                              #  (
   1311 [^\\\x80-\xff\n\015()] *                             #     normal*
   1312 (?:                                 #       (
   1313 (?:  \\ [^\x80-\xff]  |
   1314 \(                            #  (
   1315 [^\\\x80-\xff\n\015()] *                            #     normal*
   1316 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
   1317 \)                           #                       )
   1318 )    #         special
   1319 [^\\\x80-\xff\n\015()] *                         #         normal*
   1320 )*                                  #            )*
   1321 \)                             #                )
   1322 [\040\t]* )*    # If comment found, allow more spaces.
   1323 # optional trailing comments
   1324 )*
   1325 # address
   1326 |                             #  or
   1327 (?:
   1328 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
   1329 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
   1330 # Atom
   1331 |                       #  or
   1332 "                                     # "
   1333 [^\\\x80-\xff\n\015"] *                            #   normal
   1334 (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
   1335 "                                     #        "
   1336 # Quoted string
   1337 )
   1338 # leading word
   1339 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] *               # "normal" atoms and or spaces
   1340 (?:
   1341 (?:
   1342 \(                              #  (
   1343 [^\\\x80-\xff\n\015()] *                             #     normal*
   1344 (?:                                 #       (
   1345 (?:  \\ [^\x80-\xff]  |
   1346 \(                            #  (
   1347 [^\\\x80-\xff\n\015()] *                            #     normal*
   1348 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
   1349 \)                           #                       )
   1350 )    #         special
   1351 [^\\\x80-\xff\n\015()] *                         #         normal*
   1352 )*                                  #            )*
   1353 \)                             #                )
   1354 |
   1355 "                                     # "
   1356 [^\\\x80-\xff\n\015"] *                            #   normal
   1357 (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
   1358 "                                     #        "
   1359 ) # "special" comment or quoted string
   1360 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] *            #  more "normal"
   1361 )*
   1362 <
   1363 [\040\t]*                    # Nab whitespace.
   1364 (?:
   1365 \(                              #  (
   1366 [^\\\x80-\xff\n\015()] *                             #     normal*
   1367 (?:                                 #       (
   1368 (?:  \\ [^\x80-\xff]  |
   1369 \(                            #  (
   1370 [^\\\x80-\xff\n\015()] *                            #     normal*
   1371 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
   1372 \)                           #                       )
   1373 )    #         special
   1374 [^\\\x80-\xff\n\015()] *                         #         normal*
   1375 )*                                  #            )*
   1376 \)                             #                )
   1377 [\040\t]* )*    # If comment found, allow more spaces.
   1378 # <
   1379 (?:
   1380 @
   1381 [\040\t]*                    # Nab whitespace.
   1382 (?:
   1383 \(                              #  (
   1384 [^\\\x80-\xff\n\015()] *                             #     normal*
   1385 (?:                                 #       (
   1386 (?:  \\ [^\x80-\xff]  |
   1387 \(                            #  (
   1388 [^\\\x80-\xff\n\015()] *                            #     normal*
   1389 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
   1390 \)                           #                       )
   1391 )    #         special
   1392 [^\\\x80-\xff\n\015()] *                         #         normal*
   1393 )*                                  #            )*
   1394 \)                             #                )
   1395 [\040\t]* )*    # If comment found, allow more spaces.
   1396 (?:
   1397 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
   1398 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
   1399 |
   1400 \[                            # [
   1401 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
   1402 \]                           #           ]
   1403 )
   1404 [\040\t]*                    # Nab whitespace.
   1405 (?:
   1406 \(                              #  (
   1407 [^\\\x80-\xff\n\015()] *                             #     normal*
   1408 (?:                                 #       (
   1409 (?:  \\ [^\x80-\xff]  |
   1410 \(                            #  (
   1411 [^\\\x80-\xff\n\015()] *                            #     normal*
   1412 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
   1413 \)                           #                       )
   1414 )    #         special
   1415 [^\\\x80-\xff\n\015()] *                         #         normal*
   1416 )*                                  #            )*
   1417 \)                             #                )
   1418 [\040\t]* )*    # If comment found, allow more spaces.
   1419 # optional trailing comments
   1420 (?:
   1421 \.
   1422 [\040\t]*                    # Nab whitespace.
   1423 (?:
   1424 \(                              #  (
   1425 [^\\\x80-\xff\n\015()] *                             #     normal*
   1426 (?:                                 #       (
   1427 (?:  \\ [^\x80-\xff]  |
   1428 \(                            #  (
   1429 [^\\\x80-\xff\n\015()] *                            #     normal*
   1430 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
   1431 \)                           #                       )
   1432 )    #         special
   1433 [^\\\x80-\xff\n\015()] *                         #         normal*
   1434 )*                                  #            )*
   1435 \)                             #                )
   1436 [\040\t]* )*    # If comment found, allow more spaces.
   1437 (?:
   1438 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
   1439 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
   1440 |
   1441 \[                            # [
   1442 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
   1443 \]                           #           ]
   1444 )
   1445 [\040\t]*                    # Nab whitespace.
   1446 (?:
   1447 \(                              #  (
   1448 [^\\\x80-\xff\n\015()] *                             #     normal*
   1449 (?:                                 #       (
   1450 (?:  \\ [^\x80-\xff]  |
   1451 \(                            #  (
   1452 [^\\\x80-\xff\n\015()] *                            #     normal*
   1453 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
   1454 \)                           #                       )
   1455 )    #         special
   1456 [^\\\x80-\xff\n\015()] *                         #         normal*
   1457 )*                                  #            )*
   1458 \)                             #                )
   1459 [\040\t]* )*    # If comment found, allow more spaces.
   1460 # optional trailing comments
   1461 )*
   1462 (?: ,
   1463 [\040\t]*                    # Nab whitespace.
   1464 (?:
   1465 \(                              #  (
   1466 [^\\\x80-\xff\n\015()] *                             #     normal*
   1467 (?:                                 #       (
   1468 (?:  \\ [^\x80-\xff]  |
   1469 \(                            #  (
   1470 [^\\\x80-\xff\n\015()] *                            #     normal*
   1471 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
   1472 \)                           #                       )
   1473 )    #         special
   1474 [^\\\x80-\xff\n\015()] *                         #         normal*
   1475 )*                                  #            )*
   1476 \)                             #                )
   1477 [\040\t]* )*    # If comment found, allow more spaces.
   1478 @
   1479 [\040\t]*                    # Nab whitespace.
   1480 (?:
   1481 \(                              #  (
   1482 [^\\\x80-\xff\n\015()] *                             #     normal*
   1483 (?:                                 #       (
   1484 (?:  \\ [^\x80-\xff]  |
   1485 \(                            #  (
   1486 [^\\\x80-\xff\n\015()] *                            #     normal*
   1487 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
   1488 \)                           #                       )
   1489 )    #         special
   1490 [^\\\x80-\xff\n\015()] *                         #         normal*
   1491 )*                                  #            )*
   1492 \)                             #                )
   1493 [\040\t]* )*    # If comment found, allow more spaces.
   1494 (?:
   1495 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
   1496 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
   1497 |
   1498 \[                            # [
   1499 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
   1500 \]                           #           ]
   1501 )
   1502 [\040\t]*                    # Nab whitespace.
   1503 (?:
   1504 \(                              #  (
   1505 [^\\\x80-\xff\n\015()] *                             #     normal*
   1506 (?:                                 #       (
   1507 (?:  \\ [^\x80-\xff]  |
   1508 \(                            #  (
   1509 [^\\\x80-\xff\n\015()] *                            #     normal*
   1510 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
   1511 \)                           #                       )
   1512 )    #         special
   1513 [^\\\x80-\xff\n\015()] *                         #         normal*
   1514 )*                                  #            )*
   1515 \)                             #                )
   1516 [\040\t]* )*    # If comment found, allow more spaces.
   1517 # optional trailing comments
   1518 (?:
   1519 \.
   1520 [\040\t]*                    # Nab whitespace.
   1521 (?:
   1522 \(                              #  (
   1523 [^\\\x80-\xff\n\015()] *                             #     normal*
   1524 (?:                                 #       (
   1525 (?:  \\ [^\x80-\xff]  |
   1526 \(                            #  (
   1527 [^\\\x80-\xff\n\015()] *                            #     normal*
   1528 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
   1529 \)                           #                       )
   1530 )    #         special
   1531 [^\\\x80-\xff\n\015()] *                         #         normal*
   1532 )*                                  #            )*
   1533 \)                             #                )
   1534 [\040\t]* )*    # If comment found, allow more spaces.
   1535 (?:
   1536 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
   1537 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
   1538 |
   1539 \[                            # [
   1540 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
   1541 \]                           #           ]
   1542 )
   1543 [\040\t]*                    # Nab whitespace.
   1544 (?:
   1545 \(                              #  (
   1546 [^\\\x80-\xff\n\015()] *                             #     normal*
   1547 (?:                                 #       (
   1548 (?:  \\ [^\x80-\xff]  |
   1549 \(                            #  (
   1550 [^\\\x80-\xff\n\015()] *                            #     normal*
   1551 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
   1552 \)                           #                       )
   1553 )    #         special
   1554 [^\\\x80-\xff\n\015()] *                         #         normal*
   1555 )*                                  #            )*
   1556 \)                             #                )
   1557 [\040\t]* )*    # If comment found, allow more spaces.
   1558 # optional trailing comments
   1559 )*
   1560 )*  # additional domains
   1561 :
   1562 [\040\t]*                    # Nab whitespace.
   1563 (?:
   1564 \(                              #  (
   1565 [^\\\x80-\xff\n\015()] *                             #     normal*
   1566 (?:                                 #       (
   1567 (?:  \\ [^\x80-\xff]  |
   1568 \(                            #  (
   1569 [^\\\x80-\xff\n\015()] *                            #     normal*
   1570 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
   1571 \)                           #                       )
   1572 )    #         special
   1573 [^\\\x80-\xff\n\015()] *                         #         normal*
   1574 )*                                  #            )*
   1575 \)                             #                )
   1576 [\040\t]* )*    # If comment found, allow more spaces.
   1577 # optional trailing comments
   1578 )?     #       optional route
   1579 (?:
   1580 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
   1581 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
   1582 # Atom
   1583 |                       #  or
   1584 "                                     # "
   1585 [^\\\x80-\xff\n\015"] *                            #   normal
   1586 (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
   1587 "                                     #        "
   1588 # Quoted string
   1589 )
   1590 [\040\t]*                    # Nab whitespace.
   1591 (?:
   1592 \(                              #  (
   1593 [^\\\x80-\xff\n\015()] *                             #     normal*
   1594 (?:                                 #       (
   1595 (?:  \\ [^\x80-\xff]  |
   1596 \(                            #  (
   1597 [^\\\x80-\xff\n\015()] *                            #     normal*
   1598 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
   1599 \)                           #                       )
   1600 )    #         special
   1601 [^\\\x80-\xff\n\015()] *                         #         normal*
   1602 )*                                  #            )*
   1603 \)                             #                )
   1604 [\040\t]* )*    # If comment found, allow more spaces.
   1605 (?:
   1606 \.
   1607 [\040\t]*                    # Nab whitespace.
   1608 (?:
   1609 \(                              #  (
   1610 [^\\\x80-\xff\n\015()] *                             #     normal*
   1611 (?:                                 #       (
   1612 (?:  \\ [^\x80-\xff]  |
   1613 \(                            #  (
   1614 [^\\\x80-\xff\n\015()] *                            #     normal*
   1615 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
   1616 \)                           #                       )
   1617 )    #         special
   1618 [^\\\x80-\xff\n\015()] *                         #         normal*
   1619 )*                                  #            )*
   1620 \)                             #                )
   1621 [\040\t]* )*    # If comment found, allow more spaces.
   1622 (?:
   1623 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
   1624 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
   1625 # Atom
   1626 |                       #  or
   1627 "                                     # "
   1628 [^\\\x80-\xff\n\015"] *                            #   normal
   1629 (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
   1630 "                                     #        "
   1631 # Quoted string
   1632 )
   1633 [\040\t]*                    # Nab whitespace.
   1634 (?:
   1635 \(                              #  (
   1636 [^\\\x80-\xff\n\015()] *                             #     normal*
   1637 (?:                                 #       (
   1638 (?:  \\ [^\x80-\xff]  |
   1639 \(                            #  (
   1640 [^\\\x80-\xff\n\015()] *                            #     normal*
   1641 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
   1642 \)                           #                       )
   1643 )    #         special
   1644 [^\\\x80-\xff\n\015()] *                         #         normal*
   1645 )*                                  #            )*
   1646 \)                             #                )
   1647 [\040\t]* )*    # If comment found, allow more spaces.
   1648 # additional words
   1649 )*
   1650 @
   1651 [\040\t]*                    # Nab whitespace.
   1652 (?:
   1653 \(                              #  (
   1654 [^\\\x80-\xff\n\015()] *                             #     normal*
   1655 (?:                                 #       (
   1656 (?:  \\ [^\x80-\xff]  |
   1657 \(                            #  (
   1658 [^\\\x80-\xff\n\015()] *                            #     normal*
   1659 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
   1660 \)                           #                       )
   1661 )    #         special
   1662 [^\\\x80-\xff\n\015()] *                         #         normal*
   1663 )*                                  #            )*
   1664 \)                             #                )
   1665 [\040\t]* )*    # If comment found, allow more spaces.
   1666 (?:
   1667 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
   1668 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
   1669 |
   1670 \[                            # [
   1671 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
   1672 \]                           #           ]
   1673 )
   1674 [\040\t]*                    # Nab whitespace.
   1675 (?:
   1676 \(                              #  (
   1677 [^\\\x80-\xff\n\015()] *                             #     normal*
   1678 (?:                                 #       (
   1679 (?:  \\ [^\x80-\xff]  |
   1680 \(                            #  (
   1681 [^\\\x80-\xff\n\015()] *                            #     normal*
   1682 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
   1683 \)                           #                       )
   1684 )    #         special
   1685 [^\\\x80-\xff\n\015()] *                         #         normal*
   1686 )*                                  #            )*
   1687 \)                             #                )
   1688 [\040\t]* )*    # If comment found, allow more spaces.
   1689 # optional trailing comments
   1690 (?:
   1691 \.
   1692 [\040\t]*                    # Nab whitespace.
   1693 (?:
   1694 \(                              #  (
   1695 [^\\\x80-\xff\n\015()] *                             #     normal*
   1696 (?:                                 #       (
   1697 (?:  \\ [^\x80-\xff]  |
   1698 \(                            #  (
   1699 [^\\\x80-\xff\n\015()] *                            #     normal*
   1700 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
   1701 \)                           #                       )
   1702 )    #         special
   1703 [^\\\x80-\xff\n\015()] *                         #         normal*
   1704 )*                                  #            )*
   1705 \)                             #                )
   1706 [\040\t]* )*    # If comment found, allow more spaces.
   1707 (?:
   1708 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
   1709 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
   1710 |
   1711 \[                            # [
   1712 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
   1713 \]                           #           ]
   1714 )
   1715 [\040\t]*                    # Nab whitespace.
   1716 (?:
   1717 \(                              #  (
   1718 [^\\\x80-\xff\n\015()] *                             #     normal*
   1719 (?:                                 #       (
   1720 (?:  \\ [^\x80-\xff]  |
   1721 \(                            #  (
   1722 [^\\\x80-\xff\n\015()] *                            #     normal*
   1723 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
   1724 \)                           #                       )
   1725 )    #         special
   1726 [^\\\x80-\xff\n\015()] *                         #         normal*
   1727 )*                                  #            )*
   1728 \)                             #                )
   1729 [\040\t]* )*    # If comment found, allow more spaces.
   1730 # optional trailing comments
   1731 )*
   1732 #       address spec
   1733 >                    #                 >
   1734 # name and address
   1735 )
   1736 /x
   1737     Alan Other <user\@dom.ain>
   1738  0: Alan Other <user (a] dom.ain>
   1739     <user\@dom.ain>
   1740  0: user (a] dom.ain
   1741     user\@dom.ain
   1742  0: user (a] dom.ain
   1743     \"A. Other\" <user.1234\@dom.ain> (a comment)
   1744  0: "A. Other" <user.1234 (a] dom.ain>
   1745     A. Other <user.1234\@dom.ain> (a comment)
   1746  0:  Other <user.1234 (a] dom.ain>
   1747     \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
   1748  0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
   1749     A missing angle <user\@some.where
   1750  0: user (a] some.where
   1751     *** Failers
   1752 No match
   1753     The quick brown fox
   1754 No match
   1755 
   1756 /abc\0def\00pqr\000xyz\0000AB/
   1757     abc\0def\00pqr\000xyz\0000AB
   1758  0: abc\x00def\x00pqr\x00xyz\x000AB
   1759     abc456 abc\0def\00pqr\000xyz\0000ABCDE
   1760  0: abc\x00def\x00pqr\x00xyz\x000AB
   1761 
   1762 /abc\x0def\x00pqr\x000xyz\x0000AB/
   1763     abc\x0def\x00pqr\x000xyz\x0000AB
   1764  0: abc\x0def\x00pqr\x000xyz\x0000AB
   1765     abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE
   1766  0: abc\x0def\x00pqr\x000xyz\x0000AB
   1767 
   1768 /^[\000-\037]/
   1769     \0A
   1770  0: \x00
   1771     \01B
   1772  0: \x01
   1773     \037C
   1774  0: \x1f
   1775 
   1776 /\0*/
   1777     \0\0\0\0
   1778  0: \x00\x00\x00\x00
   1779 
   1780 /A\x0{2,3}Z/
   1781     The A\x0\x0Z
   1782  0: A\x00\x00Z
   1783     An A\0\x0\0Z
   1784  0: A\x00\x00\x00Z
   1785     *** Failers
   1786 No match
   1787     A\0Z
   1788 No match
   1789     A\0\x0\0\x0Z
   1790 No match
   1791 
   1792 /^(cow|)\1(bell)/
   1793     cowcowbell
   1794  0: cowcowbell
   1795  1: cow
   1796  2: bell
   1797     bell
   1798  0: bell
   1799  1: 
   1800  2: bell
   1801     *** Failers
   1802 No match
   1803     cowbell
   1804 No match
   1805 
   1806 /^\s/
   1807     \040abc
   1808  0:  
   1809     \x0cabc
   1810  0: \x0c
   1811     \nabc
   1812  0: \x0a
   1813     \rabc
   1814  0: \x0d
   1815     \tabc
   1816  0: \x09
   1817     *** Failers
   1818 No match
   1819     abc
   1820 No match
   1821 
   1822 /^a	b
   1823       c/x
   1825     abc
   1826  0: abc
   1827 
   1828 /^(a|)\1*b/
   1829     ab
   1830  0: ab
   1831  1: a
   1832     aaaab
   1833  0: aaaab
   1834  1: a
   1835     b
   1836  0: b
   1837  1: 
   1838     *** Failers
   1839 No match
   1840     acb
   1841 No match
   1842 
   1843 /^(a|)\1+b/
   1844     aab
   1845  0: aab
   1846  1: a
   1847     aaaab
   1848  0: aaaab
   1849  1: a
   1850     b
   1851  0: b
   1852  1: 
   1853     *** Failers
   1854 No match
   1855     ab
   1856 No match
   1857 
   1858 /^(a|)\1?b/
   1859     ab
   1860  0: ab
   1861  1: a
   1862     aab
   1863  0: aab
   1864  1: a
   1865     b
   1866  0: b
   1867  1: 
   1868     *** Failers
   1869 No match
   1870     acb
   1871 No match
   1872 
   1873 /^(a|)\1{2}b/
   1874     aaab
   1875  0: aaab
   1876  1: a
   1877     b
   1878  0: b
   1879  1: 
   1880     *** Failers
   1881 No match
   1882     ab
   1883 No match
   1884     aab
   1885 No match
   1886     aaaab
   1887 No match
   1888 
   1889 /^(a|)\1{2,3}b/
   1890     aaab
   1891  0: aaab
   1892  1: a
   1893     aaaab
   1894  0: aaaab
   1895  1: a
   1896     b
   1897  0: b
   1898  1: 
   1899     *** Failers
   1900 No match
   1901     ab
   1902 No match
   1903     aab
   1904 No match
   1905     aaaaab
   1906 No match
   1907 
   1908 /ab{1,3}bc/
   1909     abbbbc
   1910  0: abbbbc
   1911     abbbc
   1912  0: abbbc
   1913     abbc
   1914  0: abbc
   1915     *** Failers
   1916 No match
   1917     abc
   1918 No match
   1919     abbbbbc
   1920 No match
   1921 
   1922 /([^.]*)\.([^:]*):[T ]+(.*)/
   1923     track1.title:TBlah blah blah
   1924  0: track1.title:TBlah blah blah
   1925  1: track1
   1926  2: title
   1927  3: Blah blah blah
   1928 
   1929 /([^.]*)\.([^:]*):[T ]+(.*)/i
   1930     track1.title:TBlah blah blah
   1931  0: track1.title:TBlah blah blah
   1932  1: track1
   1933  2: title
   1934  3: Blah blah blah
   1935 
   1936 /([^.]*)\.([^:]*):[t ]+(.*)/i
   1937     track1.title:TBlah blah blah
   1938  0: track1.title:TBlah blah blah
   1939  1: track1
   1940  2: title
   1941  3: Blah blah blah
   1942 
   1943 /^[W-c]+$/
   1944     WXY_^abc
   1945  0: WXY_^abc
   1946     *** Failers
   1947 No match
   1948     wxy
   1949 No match
   1950 
   1951 /^[W-c]+$/i
   1952     WXY_^abc
   1953  0: WXY_^abc
   1954     wxy_^ABC
   1955  0: wxy_^ABC
   1956 
   1957 /^[\x3f-\x5F]+$/i
   1958     WXY_^abc
   1959  0: WXY_^abc
   1960     wxy_^ABC
   1961  0: wxy_^ABC
   1962 
   1963 /^abc$/m
   1964     abc
   1965  0: abc
   1966     qqq\nabc
   1967  0: abc
   1968     abc\nzzz
   1969  0: abc
   1970     qqq\nabc\nzzz
   1971  0: abc
   1972 
   1973 /^abc$/
   1974     abc
   1975  0: abc
   1976     *** Failers
   1977 No match
   1978     qqq\nabc
   1979 No match
   1980     abc\nzzz
   1981 No match
   1982     qqq\nabc\nzzz
   1983 No match
   1984 
   1985 /\Aabc\Z/m
   1986     abc
   1987  0: abc
   1988     abc\n 
   1989  0: abc
   1990     *** Failers
   1991 No match
   1992     qqq\nabc
   1993 No match
   1994     abc\nzzz
   1995 No match
   1996     qqq\nabc\nzzz
   1997 No match
   1998     
   1999 /\A(.)*\Z/s
   2000     abc\ndef
   2001  0: abc\x0adef
   2002  1: f
   2003 
   2004 /\A(.)*\Z/m
   2005     *** Failers
   2006  0: *** Failers
   2007  1: s
   2008     abc\ndef
   2009 No match
   2010 
   2011 /(?:b)|(?::+)/
   2012     b::c
   2013  0: b
   2014     c::b
   2015  0: ::
   2016 
   2017 /[-az]+/
   2018     az-
   2019  0: az-
   2020     *** Failers
   2021  0: a
   2022     b
   2023 No match
   2024 
   2025 /[az-]+/
   2026     za-
   2027  0: za-
   2028     *** Failers
   2029  0: a
   2030     b
   2031 No match
   2032 
   2033 /[a\-z]+/
   2034     a-z
   2035  0: a-z
   2036     *** Failers
   2037  0: a
   2038     b
   2039 No match
   2040 
   2041 /[a-z]+/
   2042     abcdxyz
   2043  0: abcdxyz
   2044 
   2045 /[\d-]+/
   2046     12-34
   2047  0: 12-34
   2048     *** Failers
   2049 No match
   2050     aaa
   2051 No match
   2052 
   2053 /[\d-z]+/
   2054     12-34z
   2055  0: 12-34z
   2056     *** Failers
   2057 No match
   2058     aaa
   2059 No match
   2060 
   2061 /\x5c/
   2062     \\
   2063  0: \
   2064 
   2065 /\x20Z/
   2066     the Zoo
   2067  0:  Z
   2068     *** Failers
   2069 No match
   2070     Zulu
   2071 No match
   2072 
   2073 /(abc)\1/i
   2074     abcabc
   2075  0: abcabc
   2076  1: abc
   2077     ABCabc
   2078  0: ABCabc
   2079  1: ABC
   2080     abcABC
   2081  0: abcABC
   2082  1: abc
   2083 
   2084 /ab{3cd/
   2085     ab{3cd
   2086  0: ab{3cd
   2087 
   2088 /ab{3,cd/
   2089     ab{3,cd
   2090  0: ab{3,cd
   2091 
   2092 /ab{3,4a}cd/
   2093     ab{3,4a}cd
   2094  0: ab{3,4a}cd
   2095 
   2096 /{4,5a}bc/
   2097     {4,5a}bc
   2098  0: {4,5a}bc
   2099 
   2100 /abc$/
   2101     abc
   2102  0: abc
   2103     abc\n
   2104  0: abc
   2105     *** Failers
   2106 No match
   2107     abc\ndef
   2108 No match
   2109 
   2110 /(abc)\123/
   2111     abc\x53
   2112  0: abcS
   2113  1: abc
   2114 
   2115 /(abc)\223/
   2116     abc\x93
   2117  0: abc\x93
   2118  1: abc
   2119 
   2120 /(abc)\323/
   2121     abc\xd3
   2122  0: abc\xd3
   2123  1: abc
   2124 
   2125 /(abc)\100/
   2126     abc\x40
   2127  0: abc@
   2128  1: abc
   2129     abc\100
   2130  0: abc@
   2131  1: abc
   2132 
   2133 /(abc)\1000/
   2134     abc\x400
   2135  0: abc@0
   2136  1: abc
   2137     abc\x40\x30
   2138  0: abc@0
   2139  1: abc
   2140     abc\1000
   2141  0: abc@0
   2142  1: abc
   2143     abc\100\x30
   2144  0: abc@0
   2145  1: abc
   2146     abc\100\060
   2147  0: abc@0
   2148  1: abc
   2149     abc\100\60
   2150  0: abc@0
   2151  1: abc
   2152 
   2153 /abc\81/
   2154     abc\081
   2155  0: abc\x0081
   2156     abc\0\x38\x31
   2157  0: abc\x0081
   2158 
   2159 /abc\91/
   2160     abc\091
   2161  0: abc\x0091
   2162     abc\0\x39\x31
   2163  0: abc\x0091
   2164 
   2165 /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\12\123/
   2166     abcdefghijkllS
   2167  0: abcdefghijkllS
   2168  1: a
   2169  2: b
   2170  3: c
   2171  4: d
   2172  5: e
   2173  6: f
   2174  7: g
   2175  8: h
   2176  9: i
   2177 10: j
   2178 11: k
   2179 12: l
   2180 
   2181 /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
   2182     abcdefghijk\12S
   2183  0: abcdefghijk\x0aS
   2184  1: a
   2185  2: b
   2186  3: c
   2187  4: d
   2188  5: e
   2189  6: f
   2190  7: g
   2191  8: h
   2192  9: i
   2193 10: j
   2194 11: k
   2195 
   2196 /ab\idef/
   2197     abidef
   2198  0: abidef
   2199 
   2200 /a{0}bc/
   2201     bc
   2202  0: bc
   2203 
   2204 /(a|(bc)){0,0}?xyz/
   2205     xyz
   2206  0: xyz
   2207 
   2208 /abc[\10]de/
   2209     abc\010de
   2210  0: abc\x08de
   2211 
   2212 /abc[\1]de/
   2213     abc\1de
   2214  0: abc\x01de
   2215 
   2216 /(abc)[\1]de/
   2217     abc\1de
   2218  0: abc\x01de
   2219  1: abc
   2220 
   2221 /(?s)a.b/
   2222     a\nb
   2223  0: a\x0ab
   2224 
   2225 /^([^a])([^\b])([^c]*)([^d]{3,4})/
   2226     baNOTccccd
   2227  0: baNOTcccc
   2228  1: b
   2229  2: a
   2230  3: NOT
   2231  4: cccc
   2232     baNOTcccd
   2233  0: baNOTccc
   2234  1: b
   2235  2: a
   2236  3: NOT
   2237  4: ccc
   2238     baNOTccd
   2239  0: baNOTcc
   2240  1: b
   2241  2: a
   2242  3: NO
   2243  4: Tcc
   2244     bacccd
   2245  0: baccc
   2246  1: b
   2247  2: a
   2248  3: 
   2249  4: ccc
   2250     *** Failers
   2251  0: *** Failers
   2252  1: *
   2253  2: *
   2254  3: * Fail
   2255  4: ers
   2256     anything
   2257 No match
   2258     b\bc   
   2259 No match
   2260     baccd
   2261 No match
   2262 
   2263 /[^a]/
   2264     Abc
   2265  0: A
   2266   
   2267 /[^a]/i
   2268     Abc 
   2269  0: b
   2270 
   2271 /[^a]+/
   2272     AAAaAbc
   2273  0: AAA
   2274   
   2275 /[^a]+/i
   2276     AAAaAbc 
   2277  0: bc
   2278 
   2279 /[^a]+/
   2280     bbb\nccc
   2281  0: bbb\x0accc
   2282    
   2283 /[^k]$/
   2284     abc
   2285  0: c
   2286     *** Failers
   2287  0: s
   2288     abk   
   2289 No match
   2290    
   2291 /[^k]{2,3}$/
   2292     abc
   2293  0: abc
   2294     kbc
   2295  0: bc
   2296     kabc 
   2297  0: abc
   2298     *** Failers
   2299  0: ers
   2300     abk
   2301 No match
   2302     akb
   2303 No match
   2304     akk 
   2305 No match
   2306 
   2307 /^\d{8,}\@.+[^k]$/
   2308     12345678\@a.b.c.d
   2309  0: 12345678 (a] a.b.c.d
   2310     123456789\@x.y.z
   2311  0: 123456789 (a] x.y.z
   2312     *** Failers
   2313 No match
   2314     12345678\@x.y.uk
   2315 No match
   2316     1234567\@a.b.c.d       
   2317 No match
   2318 
   2319 /(a)\1{8,}/
   2320     aaaaaaaaa
   2321  0: aaaaaaaaa
   2322  1: a
   2323     aaaaaaaaaa
   2324  0: aaaaaaaaaa
   2325  1: a
   2326     *** Failers
   2327 No match
   2328     aaaaaaa   
   2329 No match
   2330 
   2331 /[^a]/
   2332     aaaabcd
   2333  0: b
   2334     aaAabcd 
   2335  0: A
   2336 
   2337 /[^a]/i
   2338     aaaabcd
   2339  0: b
   2340     aaAabcd 
   2341  0: b
   2342 
   2343 /[^az]/
   2344     aaaabcd
   2345  0: b
   2346     aaAabcd 
   2347  0: A
   2348 
   2349 /[^az]/i
   2350     aaaabcd
   2351  0: b
   2352     aaAabcd 
   2353  0: b
   2354 
   2355 /\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377/
   2356  \000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377
   2357  0: \x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff
   2358 
   2359 /P[^*]TAIRE[^*]{1,6}?LL/
   2360     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
   2361  0: PSTAIREISLL
   2362 
   2363 /P[^*]TAIRE[^*]{1,}?LL/
   2364     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
   2365  0: PSTAIREISLL
   2366 
   2367 /(\.\d\d[1-9]?)\d+/
   2368     1.230003938
   2369  0: .230003938
   2370  1: .23
   2371     1.875000282   
   2372  0: .875000282
   2373  1: .875
   2374     1.235  
   2375  0: .235
   2376  1: .23
   2377                   
   2378 /(\.\d\d((?=0)|\d(?=\d)))/
   2379     1.230003938      
   2380  0: .23
   2381  1: .23
   2382  2: 
   2383     1.875000282
   2384  0: .875
   2385  1: .875
   2386  2: 5
   2387     *** Failers 
   2388 No match
   2389     1.235 
   2390 No match
   2391     
   2392 /a(?)b/
   2393     ab 
   2394  0: ab
   2395  
   2396 /\b(foo)\s+(\w+)/i
   2397     Food is on the foo table
   2398  0: foo table
   2399  1: foo
   2400  2: table
   2401     
   2402 /foo(.*)bar/
   2403     The food is under the bar in the barn.
   2404  0: food is under the bar in the bar
   2405  1: d is under the bar in the 
   2406     
   2407 /foo(.*?)bar/  
   2408     The food is under the bar in the barn.
   2409  0: food is under the bar
   2410  1: d is under the 
   2411 
   2412 /(.*)(\d*)/
   2413     I have 2 numbers: 53147
   2414  0: I have 2 numbers: 53147
   2415  1: I have 2 numbers: 53147
   2416  2: 
   2417     
   2418 /(.*)(\d+)/
   2419     I have 2 numbers: 53147
   2420  0: I have 2 numbers: 53147
   2421  1: I have 2 numbers: 5314
   2422  2: 7
   2423  
   2424 /(.*?)(\d*)/
   2425     I have 2 numbers: 53147
   2426  0: 
   2427  1: 
   2428  2: 
   2429 
   2430 /(.*?)(\d+)/
   2431     I have 2 numbers: 53147
   2432  0: I have 2
   2433  1: I have 
   2434  2: 2
   2435 
   2436 /(.*)(\d+)$/
   2437     I have 2 numbers: 53147
   2438  0: I have 2 numbers: 53147
   2439  1: I have 2 numbers: 5314
   2440  2: 7
   2441 
   2442 /(.*?)(\d+)$/
   2443     I have 2 numbers: 53147
   2444  0: I have 2 numbers: 53147
   2445  1: I have 2 numbers: 
   2446  2: 53147
   2447 
   2448 /(.*)\b(\d+)$/
   2449     I have 2 numbers: 53147
   2450  0: I have 2 numbers: 53147
   2451  1: I have 2 numbers: 
   2452  2: 53147
   2453 
   2454 /(.*\D)(\d+)$/
   2455     I have 2 numbers: 53147
   2456  0: I have 2 numbers: 53147
   2457  1: I have 2 numbers: 
   2458  2: 53147
   2459 
   2460 /^\D*(?!123)/
   2461     ABC123
   2462  0: AB
   2463      
   2464 /^(\D*)(?=\d)(?!123)/
   2465     ABC445
   2466  0: ABC
   2467  1: ABC
   2468     *** Failers
   2469 No match
   2470     ABC123
   2471 No match
   2472     
   2473 /^[W-]46]/
   2474     W46]789 
   2475  0: W46]
   2476     -46]789
   2477  0: -46]
   2478     *** Failers
   2479 No match
   2480     Wall
   2481 No match
   2482     Zebra
   2483 No match
   2484     42
   2485 No match
   2486     [abcd] 
   2487 No match
   2488     ]abcd[
   2489 No match
   2490        
   2491 /^[W-\]46]/
   2492     W46]789 
   2493  0: W
   2494     Wall
   2495  0: W
   2496     Zebra
   2497  0: Z
   2498     Xylophone  
   2499  0: X
   2500     42
   2501  0: 4
   2502     [abcd] 
   2503  0: [
   2504     ]abcd[
   2505  0: ]
   2506     \\backslash 
   2507  0: \
   2508     *** Failers
   2509 No match
   2510     -46]789
   2511 No match
   2512     well
   2513 No match
   2514     
   2515 /\d\d\/\d\d\/\d\d\d\d/
   2516     01/01/2000
   2517  0: 01/01/2000
   2518 
   2519 /word (?:[a-zA-Z0-9]+ ){0,10}otherword/
   2520   word cat dog elephant mussel cow horse canary baboon snake shark otherword
   2521  0: word cat dog elephant mussel cow horse canary baboon snake shark otherword
   2522   word cat dog elephant mussel cow horse canary baboon snake shark
   2523 No match
   2524 
   2525 /word (?:[a-zA-Z0-9]+ ){0,300}otherword/
   2526   word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope
   2527 No match
   2528 
   2529 /^(a){0,0}/
   2530     bcd
   2531  0: 
   2532     abc
   2533  0: 
   2534     aab     
   2535  0: 
   2536 
   2537 /^(a){0,1}/
   2538     bcd
   2539  0: 
   2540     abc
   2541  0: a
   2542  1: a
   2543     aab  
   2544  0: a
   2545  1: a
   2546 
   2547 /^(a){0,2}/
   2548     bcd
   2549  0: 
   2550     abc
   2551  0: a
   2552  1: a
   2553     aab  
   2554  0: aa
   2555  1: a
   2556 
   2557 /^(a){0,3}/
   2558     bcd
   2559  0: 
   2560     abc
   2561  0: a
   2562  1: a
   2563     aab
   2564  0: aa
   2565  1: a
   2566     aaa   
   2567  0: aaa
   2568  1: a
   2569 
   2570 /^(a){0,}/
   2571     bcd
   2572  0: 
   2573     abc
   2574  0: a
   2575  1: a
   2576     aab
   2577  0: aa
   2578  1: a
   2579     aaa
   2580  0: aaa
   2581  1: a
   2582     aaaaaaaa    
   2583  0: aaaaaaaa
   2584  1: a
   2585 
   2586 /^(a){1,1}/
   2587     bcd
   2588 No match
   2589     abc
   2590  0: a
   2591  1: a
   2592     aab  
   2593  0: a
   2594  1: a
   2595 
   2596 /^(a){1,2}/
   2597     bcd
   2598 No match
   2599     abc
   2600  0: a
   2601  1: a
   2602     aab  
   2603  0: aa
   2604  1: a
   2605 
   2606 /^(a){1,3}/
   2607     bcd
   2608 No match
   2609     abc
   2610  0: a
   2611  1: a
   2612     aab
   2613  0: aa
   2614  1: a
   2615     aaa   
   2616  0: aaa
   2617  1: a
   2618 
   2619 /^(a){1,}/
   2620     bcd
   2621 No match
   2622     abc
   2623  0: a
   2624  1: a
   2625     aab
   2626  0: aa
   2627  1: a
   2628     aaa
   2629  0: aaa
   2630  1: a
   2631     aaaaaaaa    
   2632  0: aaaaaaaa
   2633  1: a
   2634 
   2635 /.*\.gif/
   2636     borfle\nbib.gif\nno
   2637  0: bib.gif
   2638 
   2639 /.{0,}\.gif/
   2640     borfle\nbib.gif\nno
   2641  0: bib.gif
   2642 
   2643 /.*\.gif/m
   2644     borfle\nbib.gif\nno
   2645  0: bib.gif
   2646 
   2647 /.*\.gif/s
   2648     borfle\nbib.gif\nno
   2649  0: borfle\x0abib.gif
   2650 
   2651 /.*\.gif/ms
   2652     borfle\nbib.gif\nno
   2653  0: borfle\x0abib.gif
   2654     
   2655 /.*$/
   2656     borfle\nbib.gif\nno
   2657  0: no
   2658 
   2659 /.*$/m
   2660     borfle\nbib.gif\nno
   2661  0: borfle
   2662 
   2663 /.*$/s
   2664     borfle\nbib.gif\nno
   2665  0: borfle\x0abib.gif\x0ano
   2666 
   2667 /.*$/ms
   2668     borfle\nbib.gif\nno
   2669  0: borfle\x0abib.gif\x0ano
   2670     
   2671 /.*$/
   2672     borfle\nbib.gif\nno\n
   2673  0: no
   2674 
   2675 /.*$/m
   2676     borfle\nbib.gif\nno\n
   2677  0: borfle
   2678 
   2679 /.*$/s
   2680     borfle\nbib.gif\nno\n
   2681  0: borfle\x0abib.gif\x0ano\x0a
   2682 
   2683 /.*$/ms
   2684     borfle\nbib.gif\nno\n
   2685  0: borfle\x0abib.gif\x0ano\x0a
   2686     
   2687 /(.*X|^B)/
   2688     abcde\n1234Xyz
   2689  0: 1234X
   2690  1: 1234X
   2691     BarFoo 
   2692  0: B
   2693  1: B
   2694     *** Failers
   2695 No match
   2696     abcde\nBar  
   2697 No match
   2698 
   2699 /(.*X|^B)/m
   2700     abcde\n1234Xyz
   2701  0: 1234X
   2702  1: 1234X
   2703     BarFoo 
   2704  0: B
   2705  1: B
   2706     abcde\nBar  
   2707  0: B
   2708  1: B
   2709 
   2710 /(.*X|^B)/s
   2711     abcde\n1234Xyz
   2712  0: abcde\x0a1234X
   2713  1: abcde\x0a1234X
   2714     BarFoo 
   2715  0: B
   2716  1: B
   2717     *** Failers
   2718 No match
   2719     abcde\nBar  
   2720 No match
   2721 
   2722 /(.*X|^B)/ms
   2723     abcde\n1234Xyz
   2724  0: abcde\x0a1234X
   2725  1: abcde\x0a1234X
   2726     BarFoo 
   2727  0: B
   2728  1: B
   2729     abcde\nBar  
   2730  0: B
   2731  1: B
   2732 
   2733 /(?s)(.*X|^B)/
   2734     abcde\n1234Xyz
   2735  0: abcde\x0a1234X
   2736  1: abcde\x0a1234X
   2737     BarFoo 
   2738  0: B
   2739  1: B
   2740     *** Failers 
   2741 No match
   2742     abcde\nBar  
   2743 No match
   2744 
   2745 /(?s:.*X|^B)/
   2746     abcde\n1234Xyz
   2747  0: abcde\x0a1234X
   2748     BarFoo 
   2749  0: B
   2750     *** Failers 
   2751 No match
   2752     abcde\nBar  
   2753 No match
   2754 
   2755 /^.*B/
   2756     **** Failers
   2757 No match
   2758     abc\nB
   2759 No match
   2760      
   2761 /(?s)^.*B/
   2762     abc\nB
   2763  0: abc\x0aB
   2764 
   2765 /(?m)^.*B/
   2766     abc\nB
   2767  0: B
   2768      
   2769 /(?ms)^.*B/
   2770     abc\nB
   2771  0: abc\x0aB
   2772 
   2773 /(?ms)^B/
   2774     abc\nB
   2775  0: B
   2776 
   2777 /(?s)B$/
   2778     B\n
   2779  0: B
   2780 
   2781 /^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
   2782     123456654321
   2783  0: 123456654321
   2784   
   2785 /^\d\d\d\d\d\d\d\d\d\d\d\d/
   2786     123456654321 
   2787  0: 123456654321
   2788 
   2789 /^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/
   2790     123456654321
   2791  0: 123456654321
   2792   
   2793 /^[abc]{12}/
   2794     abcabcabcabc
   2795  0: abcabcabcabc
   2796     
   2797 /^[a-c]{12}/
   2798     abcabcabcabc
   2799  0: abcabcabcabc
   2800     
   2801 /^(a|b|c){12}/
   2802     abcabcabcabc 
   2803  0: abcabcabcabc
   2804  1: c
   2805 
   2806 /^[abcdefghijklmnopqrstuvwxy0123456789]/
   2807     n
   2808  0: n
   2809     *** Failers 
   2810 No match
   2811     z 
   2812 No match
   2813 
   2814 /abcde{0,0}/
   2815     abcd
   2816  0: abcd
   2817     *** Failers
   2818 No match
   2819     abce  
   2820 No match
   2821 
   2822 /ab[cd]{0,0}e/
   2823     abe
   2824  0: abe
   2825     *** Failers
   2826 No match
   2827     abcde 
   2828 No match
   2829     
   2830 /ab(c){0,0}d/
   2831     abd
   2832  0: abd
   2833     *** Failers
   2834 No match
   2835     abcd   
   2836 No match
   2837 
   2838 /a(b*)/
   2839     a
   2840  0: a
   2841  1: 
   2842     ab
   2843  0: ab
   2844  1: b
   2845     abbbb
   2846  0: abbbb
   2847  1: bbbb
   2848     *** Failers
   2849  0: a
   2850  1: 
   2851     bbbbb    
   2852 No match
   2853     
   2854 /ab\d{0}e/
   2855     abe
   2856  0: abe
   2857     *** Failers
   2858 No match
   2859     ab1e   
   2860 No match
   2861     
   2862 /"([^\\"]+|\\.)*"/
   2863     the \"quick\" brown fox
   2864  0: "quick"
   2865  1: quick
   2866     \"the \\\"quick\\\" brown fox\" 
   2867  0: "the \"quick\" brown fox"
   2868  1:  brown fox
   2869 
   2870 /.*?/g+
   2871     abc
   2872  0: 
   2873  0+ abc
   2874  0: a
   2875  0+ bc
   2876  0: 
   2877  0+ bc
   2878  0: b
   2879  0+ c
   2880  0: 
   2881  0+ c
   2882  0: c
   2883  0+ 
   2884  0: 
   2885  0+ 
   2886   
   2887 /\b/g+
   2888     abc 
   2889  0: 
   2890  0+ abc
   2891  0: 
   2892  0+ 
   2893 
   2894 /\b/+g
   2895     abc 
   2896  0: 
   2897  0+ abc
   2898  0: 
   2899  0+ 
   2900 
   2901 //g
   2902     abc
   2903  0: 
   2904  0: 
   2905  0: 
   2906  0: 
   2907 
   2908 /<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>/is
   2909   <TR BGCOLOR='#DBE9E9'><TD align=left valign=top>43.<a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)</a></TD><TD align=left valign=top>Lega lstaff.com</TD><TD align=left valign=top>CA - Statewide</TD></TR>
   2910  0: <TR BGCOLOR='#DBE9E9'><TD align=left valign=top>43.<a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)</a></TD><TD align=left valign=top>Lega lstaff.com</TD><TD align=left valign=top>CA - Statewide</TD></TR>
   2911  1:  BGCOLOR='#DBE9E9'
   2912  2:  align=left valign=top
   2913  3: 43.
   2914  4: <a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)
   2915  5: 
   2916  6: 
   2917  7: <unset>
   2918  8:  align=left valign=top
   2919  9: Lega lstaff.com
   2920 10:  align=left valign=top
   2921 11: CA - Statewide
   2922 
   2923 /a[^a]b/
   2924     acb
   2925  0: acb
   2926     a\nb
   2927  0: a\x0ab
   2928     
   2929 /a.b/
   2930     acb
   2931  0: acb
   2932     *** Failers 
   2933 No match
   2934     a\nb   
   2935 No match
   2936     
   2937 /a[^a]b/s
   2938     acb
   2939  0: acb
   2940     a\nb  
   2941  0: a\x0ab
   2942     
   2943 /a.b/s
   2944     acb
   2945  0: acb
   2946     a\nb  
   2947  0: a\x0ab
   2948 
   2949 /^(b+?|a){1,2}?c/
   2950     bac
   2951  0: bac
   2952  1: a
   2953     bbac
   2954  0: bbac
   2955  1: a
   2956     bbbac
   2957  0: bbbac
   2958  1: a
   2959     bbbbac
   2960  0: bbbbac
   2961  1: a
   2962     bbbbbac 
   2963  0: bbbbbac
   2964  1: a
   2965 
   2966 /^(b+|a){1,2}?c/
   2967     bac
   2968  0: bac
   2969  1: a
   2970     bbac
   2971  0: bbac
   2972  1: a
   2973     bbbac
   2974  0: bbbac
   2975  1: a
   2976     bbbbac
   2977  0: bbbbac
   2978  1: a
   2979     bbbbbac 
   2980  0: bbbbbac
   2981  1: a
   2982     
   2983 /(?!\A)x/m
   2984     x\nb\n
   2985 No match
   2986     a\bx\n  
   2987  0: x
   2988     
   2989 /\x0{ab}/
   2990     \0{ab} 
   2991  0: \x00{ab}
   2992 
   2993 /(A|B)*?CD/
   2994     CD 
   2995  0: CD
   2996     
   2997 /(A|B)*CD/
   2998     CD 
   2999  0: CD
   3000 
   3001 /(AB)*?\1/
   3002     ABABAB
   3003  0: ABAB
   3004  1: AB
   3005 
   3006 /(AB)*\1/
   3007     ABABAB
   3008  0: ABABAB
   3009  1: AB
   3010     
   3011 /(?<!bar)foo/
   3012     foo
   3013  0: foo
   3014     catfood
   3015  0: foo
   3016     arfootle
   3017  0: foo
   3018     rfoosh
   3019  0: foo
   3020     *** Failers
   3021 No match
   3022     barfoo
   3023 No match
   3024     towbarfoo
   3025 No match
   3026 
   3027 /\w{3}(?<!bar)foo/
   3028     catfood
   3029  0: catfoo
   3030     *** Failers
   3031 No match
   3032     foo
   3033 No match
   3034     barfoo
   3035 No match
   3036     towbarfoo
   3037 No match
   3038 
   3039 /(?<=(foo)a)bar/
   3040     fooabar
   3041  0: bar
   3042  1: foo
   3043     *** Failers
   3044 No match
   3045     bar
   3046 No match
   3047     foobbar
   3048 No match
   3049       
   3050 /\Aabc\z/m
   3051     abc
   3052  0: abc
   3053     *** Failers
   3054 No match
   3055     abc\n   
   3056 No match
   3057     qqq\nabc
   3058 No match
   3059     abc\nzzz
   3060 No match
   3061     qqq\nabc\nzzz
   3062 No match
   3063 
   3064 "(?>.*/)foo"
   3065     /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/
   3066 No match
   3067 
   3068 "(?>.*/)foo"
   3069     /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
   3070  0: /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
   3071 
   3072 /(?>(\.\d\d[1-9]?))\d+/
   3073     1.230003938
   3074  0: .230003938
   3075  1: .23
   3076     1.875000282
   3077  0: .875000282
   3078  1: .875
   3079     *** Failers 
   3080 No match
   3081     1.235 
   3082 No match
   3083 
   3084 /^((?>\w+)|(?>\s+))*$/
   3085     now is the time for all good men to come to the aid of the party
   3086  0: now is the time for all good men to come to the aid of the party
   3087  1: party
   3088     *** Failers
   3089 No match
   3090     this is not a line with only words and spaces!
   3091 No match
   3092     
   3093 /(\d+)(\w)/
   3094     12345a
   3095  0: 12345a
   3096  1: 12345
   3097  2: a
   3098     12345+ 
   3099  0: 12345
   3100  1: 1234
   3101  2: 5
   3102 
   3103 /((?>\d+))(\w)/
   3104     12345a
   3105  0: 12345a
   3106  1: 12345
   3107  2: a
   3108     *** Failers
   3109 No match
   3110     12345+ 
   3111 No match
   3112 
   3113 /(?>a+)b/
   3114     aaab
   3115  0: aaab
   3116 
   3117 /((?>a+)b)/
   3118     aaab
   3119  0: aaab
   3120  1: aaab
   3121 
   3122 /(?>(a+))b/
   3123     aaab
   3124  0: aaab
   3125  1: aaa
   3126 
   3127 /(?>b)+/
   3128     aaabbbccc
   3129  0: bbb
   3130 
   3131 /(?>a+|b+|c+)*c/
   3132     aaabbbbccccd
   3133  0: aaabbbbc
   3134 
   3135 /((?>[^()]+)|\([^()]*\))+/
   3136     ((abc(ade)ufh()()x
   3137  0: abc(ade)ufh()()x
   3138  1: x
   3139     
   3140 /\(((?>[^()]+)|\([^()]+\))+\)/ 
   3141     (abc)
   3142  0: (abc)
   3143  1: abc
   3144     (abc(def)xyz)
   3145  0: (abc(def)xyz)
   3146  1: xyz
   3147     *** Failers
   3148 No match
   3149     ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa   
   3150 No match
   3151 
   3152 /a(?-i)b/i
   3153     ab
   3154  0: ab
   3155     Ab
   3156  0: Ab
   3157     *** Failers 
   3158 No match
   3159     aB
   3160 No match
   3161     AB
   3162 No match
   3163         
   3164 /(a (?x)b c)d e/
   3165     a bcd e
   3166  0: a bcd e
   3167  1: a bc
   3168     *** Failers
   3169 No match
   3170     a b cd e
   3171 No match
   3172     abcd e   
   3173 No match
   3174     a bcde 
   3175 No match
   3176  
   3177 /(a b(?x)c d (?-x)e f)/
   3178     a bcde f
   3179  0: a bcde f
   3180  1: a bcde f
   3181     *** Failers
   3182 No match
   3183     abcdef  
   3184 No match
   3185 
   3186 /(a(?i)b)c/
   3187     abc
   3188  0: abc
   3189  1: ab
   3190     aBc
   3191  0: aBc
   3192  1: aB
   3193     *** Failers
   3194 No match
   3195     abC
   3196 No match
   3197     aBC  
   3198 No match
   3199     Abc
   3200 No match
   3201     ABc
   3202 No match
   3203     ABC
   3204 No match
   3205     AbC
   3206 No match
   3207     
   3208 /a(?i:b)c/
   3209     abc
   3210  0: abc
   3211     aBc
   3212  0: aBc
   3213     *** Failers 
   3214 No match
   3215     ABC
   3216 No match
   3217     abC
   3218 No match
   3219     aBC
   3220 No match
   3221     
   3222 /a(?i:b)*c/
   3223     aBc
   3224  0: aBc
   3225     aBBc
   3226  0: aBBc
   3227     *** Failers 
   3228 No match
   3229     aBC
   3230 No match
   3231     aBBC
   3232 No match
   3233     
   3234 /a(?=b(?i)c)\w\wd/
   3235     abcd
   3236  0: abcd
   3237     abCd
   3238  0: abCd
   3239     *** Failers
   3240 No match
   3241     aBCd
   3242 No match
   3243     abcD     
   3244 No match
   3245     
   3246 /(?s-i:more.*than).*million/i
   3247     more than million
   3248  0: more than million
   3249     more than MILLION
   3250  0: more than MILLION
   3251     more \n than Million 
   3252  0: more \x0a than Million
   3253     *** Failers
   3254 No match
   3255     MORE THAN MILLION    
   3256 No match
   3257     more \n than \n million 
   3258 No match
   3259 
   3260 /(?:(?s-i)more.*than).*million/i
   3261     more than million
   3262  0: more than million
   3263     more than MILLION
   3264  0: more than MILLION
   3265     more \n than Million 
   3266  0: more \x0a than Million
   3267     *** Failers
   3268 No match
   3269     MORE THAN MILLION    
   3270 No match
   3271     more \n than \n million 
   3272 No match
   3273     
   3274 /(?>a(?i)b+)+c/ 
   3275     abc
   3276  0: abc
   3277     aBbc
   3278  0: aBbc
   3279     aBBc 
   3280  0: aBBc
   3281     *** Failers
   3282 No match
   3283     Abc
   3284 No match
   3285     abAb    
   3286 No match
   3287     abbC 
   3288 No match
   3289     
   3290 /(?=a(?i)b)\w\wc/
   3291     abc
   3292  0: abc
   3293     aBc
   3294  0: aBc
   3295     *** Failers
   3296 No match
   3297     Ab 
   3298 No match
   3299     abC
   3300 No match
   3301     aBC     
   3302 No match
   3303     
   3304 /(?<=a(?i)b)(\w\w)c/
   3305     abxxc
   3306  0: xxc
   3307  1: xx
   3308     aBxxc
   3309  0: xxc
   3310  1: xx
   3311     *** Failers
   3312 No match
   3313     Abxxc
   3314 No match
   3315     ABxxc
   3316 No match
   3317     abxxC      
   3318 No match
   3319 
   3320 /(?:(a)|b)(?(1)A|B)/
   3321     aA
   3322  0: aA
   3323  1: a
   3324     bB
   3325  0: bB
   3326     *** Failers
   3327 No match
   3328     aB
   3329 No match
   3330     bA    
   3331 No match
   3332 
   3333 /^(a)?(?(1)a|b)+$/
   3334     aa
   3335  0: aa
   3336  1: a
   3337     b
   3338  0: b
   3339     bb  
   3340  0: bb
   3341     *** Failers
   3342 No match
   3343     ab   
   3344 No match
   3345 
   3346 /^(?(?=abc)\w{3}:|\d\d)$/
   3347     abc:
   3348  0: abc:
   3349     12
   3350  0: 12
   3351     *** Failers
   3352 No match
   3353     123
   3354 No match
   3355     xyz    
   3356 No match
   3357 
   3358 /^(?(?!abc)\d\d|\w{3}:)$/
   3359     abc:
   3360  0: abc:
   3361     12
   3362  0: 12
   3363     *** Failers
   3364 No match
   3365     123
   3366 No match
   3367     xyz    
   3368 No match
   3369     
   3370 /(?(?<=foo)bar|cat)/
   3371     foobar
   3372  0: bar
   3373     cat
   3374  0: cat
   3375     fcat
   3376  0: cat
   3377     focat   
   3378  0: cat
   3379     *** Failers
   3380 No match
   3381     foocat  
   3382 No match
   3383 
   3384 /(?(?<!foo)cat|bar)/
   3385     foobar
   3386  0: bar
   3387     cat
   3388  0: cat
   3389     fcat
   3390  0: cat
   3391     focat   
   3392  0: cat
   3393     *** Failers
   3394 No match
   3395     foocat  
   3396 No match
   3397 
   3398 /( \( )? [^()]+ (?(1) \) |) /x
   3399     abcd
   3400  0: abcd
   3401     (abcd)
   3402  0: (abcd)
   3403  1: (
   3404     the quick (abcd) fox
   3405  0: the quick 
   3406     (abcd   
   3407  0: abcd
   3408 
   3409 /( \( )? [^()]+ (?(1) \) ) /x
   3410     abcd
   3411  0: abcd
   3412     (abcd)
   3413  0: (abcd)
   3414  1: (
   3415     the quick (abcd) fox
   3416  0: the quick 
   3417     (abcd   
   3418  0: abcd
   3419 
   3420 /^(?(2)a|(1)(2))+$/
   3421     12
   3422  0: 12
   3423  1: 1
   3424  2: 2
   3425     12a
   3426  0: 12a
   3427  1: 1
   3428  2: 2
   3429     12aa
   3430  0: 12aa
   3431  1: 1
   3432  2: 2
   3433     *** Failers
   3434 No match
   3435     1234    
   3436 No match
   3437 
   3438 /((?i)blah)\s+\1/
   3439     blah blah
   3440  0: blah blah
   3441  1: blah
   3442     BLAH BLAH
   3443  0: BLAH BLAH
   3444  1: BLAH
   3445     Blah Blah
   3446  0: Blah Blah
   3447  1: Blah
   3448     blaH blaH
   3449  0: blaH blaH
   3450  1: blaH
   3451     *** Failers
   3452 No match
   3453     blah BLAH
   3454 No match
   3455     Blah blah      
   3456 No match
   3457     blaH blah 
   3458 No match
   3459 
   3460 /((?i)blah)\s+(?i:\1)/
   3461     blah blah
   3462  0: blah blah
   3463  1: blah
   3464     BLAH BLAH
   3465  0: BLAH BLAH
   3466  1: BLAH
   3467     Blah Blah
   3468  0: Blah Blah
   3469  1: Blah
   3470     blaH blaH
   3471  0: blaH blaH
   3472  1: blaH
   3473     blah BLAH
   3474  0: blah BLAH
   3475  1: blah
   3476     Blah blah      
   3477  0: Blah blah
   3478  1: Blah
   3479     blaH blah 
   3480  0: blaH blah
   3481  1: blaH
   3482 
   3483 /(?>a*)*/
   3484     a
   3485  0: a
   3486     aa
   3487  0: aa
   3488     aaaa
   3489  0: aaaa
   3490     
   3491 /(abc|)+/
   3492     abc
   3493  0: abc
   3494  1: 
   3495     abcabc
   3496  0: abcabc
   3497  1: 
   3498     abcabcabc
   3499  0: abcabcabc
   3500  1: 
   3501     xyz      
   3502  0: 
   3503  1: 
   3504 
   3505 /([a]*)*/
   3506     a
   3507  0: a
   3508  1: 
   3509     aaaaa 
   3510  0: aaaaa
   3511  1: 
   3512  
   3513 /([ab]*)*/
   3514     a
   3515  0: a
   3516  1: 
   3517     b
   3518  0: b
   3519  1: 
   3520     ababab
   3521  0: ababab
   3522  1: 
   3523     aaaabcde
   3524  0: aaaab
   3525  1: 
   3526     bbbb    
   3527  0: bbbb
   3528  1: 
   3529  
   3530 /([^a]*)*/
   3531     b
   3532  0: b
   3533  1: 
   3534     bbbb
   3535  0: bbbb
   3536  1: 
   3537     aaa   
   3538  0: 
   3539  1: 
   3540  
   3541 /([^ab]*)*/
   3542     cccc
   3543  0: cccc
   3544  1: 
   3545     abab  
   3546  0: 
   3547  1: 
   3548  
   3549 /([a]*?)*/
   3550     a
   3551  0: 
   3552  1: 
   3553     aaaa 
   3554  0: 
   3555  1: 
   3556  
   3557 /([ab]*?)*/
   3558     a
   3559  0: 
   3560  1: 
   3561     b
   3562  0: 
   3563  1: 
   3564     abab
   3565  0: 
   3566  1: 
   3567     baba   
   3568  0: 
   3569  1: 
   3570  
   3571 /([^a]*?)*/
   3572     b
   3573  0: 
   3574  1: 
   3575     bbbb
   3576  0: 
   3577  1: 
   3578     aaa   
   3579  0: 
   3580  1: 
   3581  
   3582 /([^ab]*?)*/
   3583     c
   3584  0: 
   3585  1: 
   3586     cccc
   3587  0: 
   3588  1: 
   3589     baba   
   3590  0: 
   3591  1: 
   3592  
   3593 /(?>a*)*/
   3594     a
   3595  0: a
   3596     aaabcde 
   3597  0: aaa
   3598  
   3599 /((?>a*))*/
   3600     aaaaa
   3601  0: aaaaa
   3602  1: 
   3603     aabbaa 
   3604  0: aa
   3605  1: 
   3606  
   3607 /((?>a*?))*/
   3608     aaaaa
   3609  0: 
   3610  1: 
   3611     aabbaa 
   3612  0: 
   3613  1: 
   3614 
   3615 /(?(?=[^a-z]+[a-z])  \d{2}-[a-z]{3}-\d{2}  |  \d{2}-\d{2}-\d{2} ) /x
   3616     12-sep-98
   3617  0: 12-sep-98
   3618     12-09-98
   3619  0: 12-09-98
   3620     *** Failers
   3621 No match
   3622     sep-12-98
   3623 No match
   3624         
   3625 /(?<=(foo))bar\1/
   3626     foobarfoo
   3627  0: barfoo
   3628  1: foo
   3629     foobarfootling 
   3630  0: barfoo
   3631  1: foo
   3632     *** Failers
   3633 No match
   3634     foobar
   3635 No match
   3636     barfoo   
   3637 No match
   3638 
   3639 /(?i:saturday|sunday)/
   3640     saturday
   3641  0: saturday
   3642     sunday
   3643  0: sunday
   3644     Saturday
   3645  0: Saturday
   3646     Sunday
   3647  0: Sunday
   3648     SATURDAY
   3649  0: SATURDAY
   3650     SUNDAY
   3651  0: SUNDAY
   3652     SunDay
   3653  0: SunDay
   3654     
   3655 /(a(?i)bc|BB)x/
   3656     abcx
   3657  0: abcx
   3658  1: abc
   3659     aBCx
   3660  0: aBCx
   3661  1: aBC
   3662     bbx
   3663  0: bbx
   3664  1: bb
   3665     BBx
   3666  0: BBx
   3667  1: BB
   3668     *** Failers
   3669 No match
   3670     abcX
   3671 No match
   3672     aBCX
   3673 No match
   3674     bbX
   3675 No match
   3676     BBX               
   3677 No match
   3678 
   3679 /^([ab](?i)[cd]|[ef])/
   3680     ac
   3681  0: ac
   3682  1: ac
   3683     aC
   3684  0: aC
   3685  1: aC
   3686     bD
   3687  0: bD
   3688  1: bD
   3689     elephant
   3690  0: e
   3691  1: e
   3692     Europe 
   3693  0: E
   3694  1: E
   3695     frog
   3696  0: f
   3697  1: f
   3698     France
   3699  0: F
   3700  1: F
   3701     *** Failers
   3702 No match
   3703     Africa     
   3704 No match
   3705 
   3706 /^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/
   3707     ab
   3708  0: ab
   3709  1: ab
   3710     aBd
   3711  0: aBd
   3712  1: aBd
   3713     xy
   3714  0: xy
   3715  1: xy
   3716     xY
   3717  0: xY
   3718  1: xY
   3719     zebra
   3720  0: z
   3721  1: z
   3722     Zambesi
   3723  0: Z
   3724  1: Z
   3725     *** Failers
   3726 No match
   3727     aCD  
   3728 No match
   3729     XY  
   3730 No match
   3731 
   3732 /(?<=foo\n)^bar/m
   3733     foo\nbar
   3734  0: bar
   3735     *** Failers
   3736 No match
   3737     bar
   3738 No match
   3739     baz\nbar   
   3740 No match
   3741 
   3742 /(?<=(?<!foo)bar)baz/
   3743     barbaz
   3744  0: baz
   3745     barbarbaz 
   3746  0: baz
   3747     koobarbaz 
   3748  0: baz
   3749     *** Failers
   3750 No match
   3751     baz
   3752 No match
   3753     foobarbaz 
   3754 No match
   3755 
   3756 /The cases of aaaa and aaaaaa are missed out below because Perl does things/
   3757 /differently. We know that odd, and maybe incorrect, things happen with/
   3758 No match
   3759 /recursive references in Perl, as far as 5.11.3 - see some stuff in test #2./
   3760 No match
   3761 
   3762 /^(a\1?){4}$/
   3763     a
   3764 No match
   3765     aa
   3766 No match
   3767     aaa
   3768 No match
   3769     aaaaa
   3770  0: aaaaa
   3771  1: a
   3772     aaaaaaa
   3773  0: aaaaaaa
   3774  1: a
   3775     aaaaaaaa
   3776 No match
   3777     aaaaaaaaa
   3778 No match
   3779     aaaaaaaaaa
   3780  0: aaaaaaaaaa
   3781  1: aaaa
   3782     aaaaaaaaaaa
   3783 No match
   3784     aaaaaaaaaaaa
   3785 No match
   3786     aaaaaaaaaaaaa
   3787 No match
   3788     aaaaaaaaaaaaaa
   3789 No match
   3790     aaaaaaaaaaaaaaa
   3791 No match
   3792     aaaaaaaaaaaaaaaa               
   3793 No match
   3794 
   3795 /^(a\1?)(a\1?)(a\2?)(a\3?)$/
   3796     a
   3797 No match
   3798     aa
   3799 No match
   3800     aaa
   3801 No match
   3802     aaaa
   3803  0: aaaa
   3804  1: a
   3805  2: a
   3806  3: a
   3807  4: a
   3808     aaaaa
   3809  0: aaaaa
   3810  1: a
   3811  2: aa
   3812  3: a
   3813  4: a
   3814     aaaaaa
   3815  0: aaaaaa
   3816  1: a
   3817  2: aa
   3818  3: a
   3819  4: aa
   3820     aaaaaaa
   3821  0: aaaaaaa
   3822  1: a
   3823  2: aa
   3824  3: aaa
   3825  4: a
   3826     aaaaaaaa
   3827 No match
   3828     aaaaaaaaa
   3829 No match
   3830     aaaaaaaaaa
   3831  0: aaaaaaaaaa
   3832  1: a
   3833  2: aa
   3834  3: aaa
   3835  4: aaaa
   3836     aaaaaaaaaaa
   3837 No match
   3838     aaaaaaaaaaaa
   3839 No match
   3840     aaaaaaaaaaaaa
   3841 No match
   3842     aaaaaaaaaaaaaa
   3843 No match
   3844     aaaaaaaaaaaaaaa
   3845 No match
   3846     aaaaaaaaaaaaaaaa               
   3847 No match
   3848 
   3849 /The following tests are taken from the Perl 5.005 test suite; some of them/
   3850 /are compatible with 5.004, but I'd rather not have to sort them out./
   3851 No match
   3852 
   3853 /abc/
   3854     abc
   3855  0: abc
   3856     xabcy
   3857  0: abc
   3858     ababc
   3859  0: abc
   3860     *** Failers
   3861 No match
   3862     xbc
   3863 No match
   3864     axc
   3865 No match
   3866     abx
   3867 No match
   3868 
   3869 /ab*c/
   3870     abc
   3871  0: abc
   3872 
   3873 /ab*bc/
   3874     abc
   3875  0: abc
   3876     abbc
   3877  0: abbc
   3878     abbbbc
   3879  0: abbbbc
   3880 
   3881 /.{1}/
   3882     abbbbc
   3883  0: a
   3884 
   3885 /.{3,4}/
   3886     abbbbc
   3887  0: abbb
   3888 
   3889 /ab{0,}bc/
   3890     abbbbc
   3891  0: abbbbc
   3892 
   3893 /ab+bc/
   3894     abbc
   3895  0: abbc
   3896     *** Failers
   3897 No match
   3898     abc
   3899 No match
   3900     abq
   3901 No match
   3902 
   3903 /ab{1,}bc/
   3904 
   3905 /ab+bc/
   3906     abbbbc
   3907  0: abbbbc
   3908 
   3909 /ab{1,}bc/
   3910     abbbbc
   3911  0: abbbbc
   3912 
   3913 /ab{1,3}bc/
   3914     abbbbc
   3915  0: abbbbc
   3916 
   3917 /ab{3,4}bc/
   3918     abbbbc
   3919  0: abbbbc
   3920 
   3921 /ab{4,5}bc/
   3922     *** Failers
   3923 No match
   3924     abq
   3925 No match
   3926     abbbbc
   3927 No match
   3928 
   3929 /ab?bc/
   3930     abbc
   3931  0: abbc
   3932     abc
   3933  0: abc
   3934 
   3935 /ab{0,1}bc/
   3936     abc
   3937  0: abc
   3938 
   3939 /ab?bc/
   3940 
   3941 /ab?c/
   3942     abc
   3943  0: abc
   3944 
   3945 /ab{0,1}c/
   3946     abc
   3947  0: abc
   3948 
   3949 /^abc$/
   3950     abc
   3951  0: abc
   3952     *** Failers
   3953 No match
   3954     abbbbc
   3955 No match
   3956     abcc
   3957 No match
   3958 
   3959 /^abc/
   3960     abcc
   3961  0: abc
   3962 
   3963 /^abc$/
   3964 
   3965 /abc$/
   3966     aabc
   3967  0: abc
   3968     *** Failers
   3969 No match
   3970     aabc
   3971  0: abc
   3972     aabcd
   3973 No match
   3974 
   3975 /^/
   3976     abc
   3977  0: 
   3978 
   3979 /$/
   3980     abc
   3981  0: 
   3982 
   3983 /a.c/
   3984     abc
   3985  0: abc
   3986     axc
   3987  0: axc
   3988 
   3989 /a.*c/
   3990     axyzc
   3991  0: axyzc
   3992 
   3993 /a[bc]d/
   3994     abd
   3995  0: abd
   3996     *** Failers
   3997 No match
   3998     axyzd
   3999 No match
   4000     abc
   4001 No match
   4002 
   4003 /a[b-d]e/
   4004     ace
   4005  0: ace
   4006 
   4007 /a[b-d]/
   4008     aac
   4009  0: ac
   4010 
   4011 /a[-b]/
   4012     a-
   4013  0: a-
   4014 
   4015 /a[b-]/
   4016     a-
   4017  0: a-
   4018 
   4019 /a]/
   4020     a]
   4021  0: a]
   4022 
   4023 /a[]]b/
   4024     a]b
   4025  0: a]b
   4026 
   4027 /a[^bc]d/
   4028     aed
   4029  0: aed
   4030     *** Failers
   4031 No match
   4032     abd
   4033 No match
   4034     abd
   4035 No match
   4036 
   4037 /a[^-b]c/
   4038     adc
   4039  0: adc
   4040 
   4041 /a[^]b]c/
   4042     adc
   4043  0: adc
   4044     *** Failers
   4045 No match
   4046     a-c
   4047  0: a-c
   4048     a]c
   4049 No match
   4050 
   4051 /\ba\b/
   4052     a-
   4053  0: a
   4054     -a
   4055  0: a
   4056     -a-
   4057  0: a
   4058 
   4059 /\by\b/
   4060     *** Failers
   4061 No match
   4062     xy
   4063 No match
   4064     yz
   4065 No match
   4066     xyz
   4067 No match
   4068 
   4069 /\Ba\B/
   4070     *** Failers
   4071  0: a
   4072     a-
   4073 No match
   4074     -a
   4075 No match
   4076     -a-
   4077 No match
   4078 
   4079 /\By\b/
   4080     xy
   4081  0: y
   4082 
   4083 /\by\B/
   4084     yz
   4085  0: y
   4086 
   4087 /\By\B/
   4088     xyz
   4089  0: y
   4090 
   4091 /\w/
   4092     a
   4093  0: a
   4094 
   4095 /\W/
   4096     -
   4097  0: -
   4098     *** Failers
   4099  0: *
   4100     -
   4101  0: -
   4102     a
   4103 No match
   4104 
   4105 /a\sb/
   4106     a b
   4107  0: a b
   4108 
   4109 /a\Sb/
   4110     a-b
   4111  0: a-b
   4112     *** Failers
   4113 No match
   4114     a-b
   4115  0: a-b
   4116     a b
   4117 No match
   4118 
   4119 /\d/
   4120     1
   4121  0: 1
   4122 
   4123 /\D/
   4124     -
   4125  0: -
   4126     *** Failers
   4127  0: *
   4128     -
   4129  0: -
   4130     1
   4131 No match
   4132 
   4133 /[\w]/
   4134     a
   4135  0: a
   4136 
   4137 /[\W]/
   4138     -
   4139  0: -
   4140     *** Failers
   4141  0: *
   4142     -
   4143  0: -
   4144     a
   4145 No match
   4146 
   4147 /a[\s]b/
   4148     a b
   4149  0: a b
   4150 
   4151 /a[\S]b/
   4152     a-b
   4153  0: a-b
   4154     *** Failers
   4155 No match
   4156     a-b
   4157  0: a-b
   4158     a b
   4159 No match
   4160 
   4161 /[\d]/
   4162     1
   4163  0: 1
   4164 
   4165 /[\D]/
   4166     -
   4167  0: -
   4168     *** Failers
   4169  0: *
   4170     -
   4171  0: -
   4172     1
   4173 No match
   4174 
   4175 /ab|cd/
   4176     abc
   4177  0: ab
   4178     abcd
   4179  0: ab
   4180 
   4181 /()ef/
   4182     def
   4183  0: ef
   4184  1: 
   4185 
   4186 /$b/
   4187 
   4188 /a\(b/
   4189     a(b
   4190  0: a(b
   4191 
   4192 /a\(*b/
   4193     ab
   4194  0: ab
   4195     a((b
   4196  0: a((b
   4197 
   4198 /a\\b/
   4199     a\b
   4200 No match
   4201 
   4202 /((a))/
   4203     abc
   4204  0: a
   4205  1: a
   4206  2: a
   4207 
   4208 /(a)b(c)/
   4209     abc
   4210  0: abc
   4211  1: a
   4212  2: c
   4213 
   4214 /a+b+c/
   4215     aabbabc
   4216  0: abc
   4217 
   4218 /a{1,}b{1,}c/
   4219     aabbabc
   4220  0: abc
   4221 
   4222 /a.+?c/
   4223     abcabc
   4224  0: abc
   4225 
   4226 /(a+|b)*/
   4227     ab
   4228  0: ab
   4229  1: b
   4230 
   4231 /(a+|b){0,}/
   4232     ab
   4233  0: ab
   4234  1: b
   4235 
   4236 /(a+|b)+/
   4237     ab
   4238  0: ab
   4239  1: b
   4240 
   4241 /(a+|b){1,}/
   4242     ab
   4243  0: ab
   4244  1: b
   4245 
   4246 /(a+|b)?/
   4247     ab
   4248  0: a
   4249  1: a
   4250 
   4251 /(a+|b){0,1}/
   4252     ab
   4253  0: a
   4254  1: a
   4255 
   4256 /[^ab]*/
   4257     cde
   4258  0: cde
   4259 
   4260 /abc/
   4261     *** Failers
   4262 No match
   4263     b
   4264 No match
   4265     
   4266 
   4267 /a*/
   4268     
   4269 
   4270 /([abc])*d/
   4271     abbbcd
   4272  0: abbbcd
   4273  1: c
   4274 
   4275 /([abc])*bcd/
   4276     abcd
   4277  0: abcd
   4278  1: a
   4279 
   4280 /a|b|c|d|e/
   4281     e
   4282  0: e
   4283 
   4284 /(a|b|c|d|e)f/
   4285     ef
   4286  0: ef
   4287  1: e
   4288 
   4289 /abcd*efg/
   4290     abcdefg
   4291  0: abcdefg
   4292 
   4293 /ab*/
   4294     xabyabbbz
   4295  0: ab
   4296     xayabbbz
   4297  0: a
   4298 
   4299 /(ab|cd)e/
   4300     abcde
   4301  0: cde
   4302  1: cd
   4303 
   4304 /[abhgefdc]ij/
   4305     hij
   4306  0: hij
   4307 
   4308 /^(ab|cd)e/
   4309 
   4310 /(abc|)ef/
   4311     abcdef
   4312  0: ef
   4313  1: 
   4314 
   4315 /(a|b)c*d/
   4316     abcd
   4317  0: bcd
   4318  1: b
   4319 
   4320 /(ab|ab*)bc/
   4321     abc
   4322  0: abc
   4323  1: a
   4324 
   4325 /a([bc]*)c*/
   4326     abc
   4327  0: abc
   4328  1: bc
   4329 
   4330 /a([bc]*)(c*d)/
   4331     abcd
   4332  0: abcd
   4333  1: bc
   4334  2: d
   4335 
   4336 /a([bc]+)(c*d)/
   4337     abcd
   4338  0: abcd
   4339  1: bc
   4340  2: d
   4341 
   4342 /a([bc]*)(c+d)/
   4343     abcd
   4344  0: abcd
   4345  1: b
   4346  2: cd
   4347 
   4348 /a[bcd]*dcdcde/
   4349     adcdcde
   4350  0: adcdcde
   4351 
   4352 /a[bcd]+dcdcde/
   4353     *** Failers
   4354 No match
   4355     abcde
   4356 No match
   4357     adcdcde
   4358 No match
   4359 
   4360 /(ab|a)b*c/
   4361     abc
   4362  0: abc
   4363  1: ab
   4364 
   4365 /((a)(b)c)(d)/
   4366     abcd
   4367  0: abcd
   4368  1: abc
   4369  2: a
   4370  3: b
   4371  4: d
   4372 
   4373 /[a-zA-Z_][a-zA-Z0-9_]*/
   4374     alpha
   4375  0: alpha
   4376 
   4377 /^a(bc+|b[eh])g|.h$/
   4378     abh
   4379  0: bh
   4380 
   4381 /(bc+d$|ef*g.|h?i(j|k))/
   4382     effgz
   4383  0: effgz
   4384  1: effgz
   4385     ij
   4386  0: ij
   4387  1: ij
   4388  2: j
   4389     reffgz
   4390  0: effgz
   4391  1: effgz
   4392     *** Failers
   4393 No match
   4394     effg
   4395 No match
   4396     bcdd
   4397 No match
   4398 
   4399 /((((((((((a))))))))))/
   4400     a
   4401  0: a
   4402  1: a
   4403  2: a
   4404  3: a
   4405  4: a
   4406  5: a
   4407  6: a
   4408  7: a
   4409  8: a
   4410  9: a
   4411 10: a
   4412 
   4413 /((((((((((a))))))))))\10/
   4414     aa
   4415  0: aa
   4416  1: a
   4417  2: a
   4418  3: a
   4419  4: a
   4420  5: a
   4421  6: a
   4422  7: a
   4423  8: a
   4424  9: a
   4425 10: a
   4426 
   4427 /(((((((((a)))))))))/
   4428     a
   4429  0: a
   4430  1: a
   4431  2: a
   4432  3: a
   4433  4: a
   4434  5: a
   4435  6: a
   4436  7: a
   4437  8: a
   4438  9: a
   4439 
   4440 /multiple words of text/
   4441     *** Failers
   4442 No match
   4443     aa
   4444 No match
   4445     uh-uh
   4446 No match
   4447 
   4448 /multiple words/
   4449     multiple words, yeah
   4450  0: multiple words
   4451 
   4452 /(.*)c(.*)/
   4453     abcde
   4454  0: abcde
   4455  1: ab
   4456  2: de
   4457 
   4458 /\((.*), (.*)\)/
   4459     (a, b)
   4460  0: (a, b)
   4461  1: a
   4462  2: b
   4463 
   4464 /[k]/
   4465 
   4466 /abcd/
   4467     abcd
   4468  0: abcd
   4469 
   4470 /a(bc)d/
   4471     abcd
   4472  0: abcd
   4473  1: bc
   4474 
   4475 /a[-]?c/
   4476     ac
   4477  0: ac
   4478 
   4479 /(abc)\1/
   4480     abcabc
   4481  0: abcabc
   4482  1: abc
   4483 
   4484 /([a-c]*)\1/
   4485     abcabc
   4486  0: abcabc
   4487  1: abc
   4488 
   4489 /(a)|\1/
   4490     a
   4491  0: a
   4492  1: a
   4493     *** Failers
   4494  0: a
   4495  1: a
   4496     ab
   4497  0: a
   4498  1: a
   4499     x
   4500 No match
   4501 
   4502 /(([a-c])b*?\2)*/
   4503     ababbbcbc
   4504  0: ababb
   4505  1: bb
   4506  2: b
   4507 
   4508 /(([a-c])b*?\2){3}/
   4509     ababbbcbc
   4510  0: ababbbcbc
   4511  1: cbc
   4512  2: c
   4513 
   4514 /((\3|b)\2(a)x)+/
   4515     aaaxabaxbaaxbbax
   4516  0: bbax
   4517  1: bbax
   4518  2: b
   4519  3: a
   4520 
   4521 /((\3|b)\2(a)){2,}/
   4522     bbaababbabaaaaabbaaaabba
   4523  0: bbaaaabba
   4524  1: bba
   4525  2: b
   4526  3: a
   4527 
   4528 /abc/i
   4529     ABC
   4530  0: ABC
   4531     XABCY
   4532  0: ABC
   4533     ABABC
   4534  0: ABC
   4535     *** Failers
   4536 No match
   4537     aaxabxbaxbbx
   4538 No match
   4539     XBC
   4540 No match
   4541     AXC
   4542 No match
   4543     ABX
   4544 No match
   4545 
   4546 /ab*c/i
   4547     ABC
   4548  0: ABC
   4549 
   4550 /ab*bc/i
   4551     ABC
   4552  0: ABC
   4553     ABBC
   4554  0: ABBC
   4555 
   4556 /ab*?bc/i
   4557     ABBBBC
   4558  0: ABBBBC
   4559 
   4560 /ab{0,}?bc/i
   4561     ABBBBC
   4562  0: ABBBBC
   4563 
   4564 /ab+?bc/i
   4565     ABBC
   4566  0: ABBC
   4567 
   4568 /ab+bc/i
   4569     *** Failers
   4570 No match
   4571     ABC
   4572 No match
   4573     ABQ
   4574 No match
   4575 
   4576 /ab{1,}bc/i
   4577 
   4578 /ab+bc/i
   4579     ABBBBC
   4580  0: ABBBBC
   4581 
   4582 /ab{1,}?bc/i
   4583     ABBBBC
   4584  0: ABBBBC
   4585 
   4586 /ab{1,3}?bc/i
   4587     ABBBBC
   4588  0: ABBBBC
   4589 
   4590 /ab{3,4}?bc/i
   4591     ABBBBC
   4592  0: ABBBBC
   4593 
   4594 /ab{4,5}?bc/i
   4595     *** Failers
   4596 No match
   4597     ABQ
   4598 No match
   4599     ABBBBC
   4600 No match
   4601 
   4602 /ab??bc/i
   4603     ABBC
   4604  0: ABBC
   4605     ABC
   4606  0: ABC
   4607 
   4608 /ab{0,1}?bc/i
   4609     ABC
   4610  0: ABC
   4611 
   4612 /ab??bc/i
   4613 
   4614 /ab??c/i
   4615     ABC
   4616  0: ABC
   4617 
   4618 /ab{0,1}?c/i
   4619     ABC
   4620  0: ABC
   4621 
   4622 /^abc$/i
   4623     ABC
   4624  0: ABC
   4625     *** Failers
   4626 No match
   4627     ABBBBC
   4628 No match
   4629     ABCC
   4630 No match
   4631 
   4632 /^abc/i
   4633     ABCC
   4634  0: ABC
   4635 
   4636 /^abc$/i
   4637 
   4638 /abc$/i
   4639     AABC
   4640  0: ABC
   4641 
   4642 /^/i
   4643     ABC
   4644  0: 
   4645 
   4646 /$/i
   4647     ABC
   4648  0: 
   4649 
   4650 /a.c/i
   4651     ABC
   4652  0: ABC
   4653     AXC
   4654  0: AXC
   4655 
   4656 /a.*?c/i
   4657     AXYZC
   4658  0: AXYZC
   4659 
   4660 /a.*c/i
   4661     *** Failers
   4662 No match
   4663     AABC
   4664  0: AABC
   4665     AXYZD
   4666 No match
   4667 
   4668 /a[bc]d/i
   4669     ABD
   4670  0: ABD
   4671 
   4672 /a[b-d]e/i
   4673     ACE
   4674  0: ACE
   4675     *** Failers
   4676 No match
   4677     ABC
   4678 No match
   4679     ABD
   4680 No match
   4681 
   4682 /a[b-d]/i
   4683     AAC
   4684  0: AC
   4685 
   4686 /a[-b]/i
   4687     A-
   4688  0: A-
   4689 
   4690 /a[b-]/i
   4691     A-
   4692  0: A-
   4693 
   4694 /a]/i
   4695     A]
   4696  0: A]
   4697 
   4698 /a[]]b/i
   4699     A]B
   4700  0: A]B
   4701 
   4702 /a[^bc]d/i
   4703     AED
   4704  0: AED
   4705 
   4706 /a[^-b]c/i
   4707     ADC
   4708  0: ADC
   4709     *** Failers
   4710 No match
   4711     ABD
   4712 No match
   4713     A-C
   4714 No match
   4715 
   4716 /a[^]b]c/i
   4717     ADC
   4718  0: ADC
   4719 
   4720 /ab|cd/i
   4721     ABC
   4722  0: AB
   4723     ABCD
   4724  0: AB
   4725 
   4726 /()ef/i
   4727     DEF
   4728  0: EF
   4729  1: 
   4730 
   4731 /$b/i
   4732     *** Failers
   4733 No match
   4734     A]C
   4735 No match
   4736     B
   4737 No match
   4738 
   4739 /a\(b/i
   4740     A(B
   4741  0: A(B
   4742 
   4743 /a\(*b/i
   4744     AB
   4745  0: AB
   4746     A((B
   4747  0: A((B
   4748 
   4749 /a\\b/i
   4750     A\B
   4751 No match
   4752 
   4753 /((a))/i
   4754     ABC
   4755  0: A
   4756  1: A
   4757  2: A
   4758 
   4759 /(a)b(c)/i
   4760     ABC
   4761  0: ABC
   4762  1: A
   4763  2: C
   4764 
   4765 /a+b+c/i
   4766     AABBABC
   4767  0: ABC
   4768 
   4769 /a{1,}b{1,}c/i
   4770     AABBABC
   4771  0: ABC
   4772 
   4773 /a.+?c/i
   4774     ABCABC
   4775  0: ABC
   4776 
   4777 /a.*?c/i
   4778     ABCABC
   4779  0: ABC
   4780 
   4781 /a.{0,5}?c/i
   4782     ABCABC
   4783  0: ABC
   4784 
   4785 /(a+|b)*/i
   4786     AB
   4787  0: AB
   4788  1: B
   4789 
   4790 /(a+|b){0,}/i
   4791     AB
   4792  0: AB
   4793  1: B
   4794 
   4795 /(a+|b)+/i
   4796     AB
   4797  0: AB
   4798  1: B
   4799 
   4800 /(a+|b){1,}/i
   4801     AB
   4802  0: AB
   4803  1: B
   4804 
   4805 /(a+|b)?/i
   4806     AB
   4807  0: A
   4808  1: A
   4809 
   4810 /(a+|b){0,1}/i
   4811     AB
   4812  0: A
   4813  1: A
   4814 
   4815 /(a+|b){0,1}?/i
   4816     AB
   4817  0: 
   4818 
   4819 /[^ab]*/i
   4820     CDE
   4821  0: CDE
   4822 
   4823 /abc/i
   4824 
   4825 /a*/i
   4826     
   4827 
   4828 /([abc])*d/i
   4829     ABBBCD
   4830  0: ABBBCD
   4831  1: C
   4832 
   4833 /([abc])*bcd/i
   4834     ABCD
   4835  0: ABCD
   4836  1: A
   4837 
   4838 /a|b|c|d|e/i
   4839     E
   4840  0: E
   4841 
   4842 /(a|b|c|d|e)f/i
   4843     EF
   4844  0: EF
   4845  1: E
   4846 
   4847 /abcd*efg/i
   4848     ABCDEFG
   4849  0: ABCDEFG
   4850 
   4851 /ab*/i
   4852     XABYABBBZ
   4853  0: AB
   4854     XAYABBBZ
   4855  0: A
   4856 
   4857 /(ab|cd)e/i
   4858     ABCDE
   4859  0: CDE
   4860  1: CD
   4861 
   4862 /[abhgefdc]ij/i
   4863     HIJ
   4864  0: HIJ
   4865 
   4866 /^(ab|cd)e/i
   4867     ABCDE
   4868 No match
   4869 
   4870 /(abc|)ef/i
   4871     ABCDEF
   4872  0: EF
   4873  1: 
   4874 
   4875 /(a|b)c*d/i
   4876     ABCD
   4877  0: BCD
   4878  1: B
   4879 
   4880 /(ab|ab*)bc/i
   4881     ABC
   4882  0: ABC
   4883  1: A
   4884 
   4885 /a([bc]*)c*/i
   4886     ABC
   4887  0: ABC
   4888  1: BC
   4889 
   4890 /a([bc]*)(c*d)/i
   4891     ABCD
   4892  0: ABCD
   4893  1: BC
   4894  2: D
   4895 
   4896 /a([bc]+)(c*d)/i
   4897     ABCD
   4898  0: ABCD
   4899  1: BC
   4900  2: D
   4901 
   4902 /a([bc]*)(c+d)/i
   4903     ABCD
   4904  0: ABCD
   4905  1: B
   4906  2: CD
   4907 
   4908 /a[bcd]*dcdcde/i
   4909     ADCDCDE
   4910  0: ADCDCDE
   4911 
   4912 /a[bcd]+dcdcde/i
   4913 
   4914 /(ab|a)b*c/i
   4915     ABC
   4916  0: ABC
   4917  1: AB
   4918 
   4919 /((a)(b)c)(d)/i
   4920     ABCD
   4921  0: ABCD
   4922  1: ABC
   4923  2: A
   4924  3: B
   4925  4: D
   4926 
   4927 /[a-zA-Z_][a-zA-Z0-9_]*/i
   4928     ALPHA
   4929  0: ALPHA
   4930 
   4931 /^a(bc+|b[eh])g|.h$/i
   4932     ABH
   4933  0: BH
   4934 
   4935 /(bc+d$|ef*g.|h?i(j|k))/i
   4936     EFFGZ
   4937  0: EFFGZ
   4938  1: EFFGZ
   4939     IJ
   4940  0: IJ
   4941  1: IJ
   4942  2: J
   4943     REFFGZ
   4944  0: EFFGZ
   4945  1: EFFGZ
   4946     *** Failers
   4947 No match
   4948     ADCDCDE
   4949 No match
   4950     EFFG
   4951 No match
   4952     BCDD
   4953 No match
   4954 
   4955 /((((((((((a))))))))))/i
   4956     A
   4957  0: A
   4958  1: A
   4959  2: A
   4960  3: A
   4961  4: A
   4962  5: A
   4963  6: A
   4964  7: A
   4965  8: A
   4966  9: A
   4967 10: A
   4968 
   4969 /((((((((((a))))))))))\10/i
   4970     AA
   4971  0: AA
   4972  1: A
   4973  2: A
   4974  3: A
   4975  4: A
   4976  5: A
   4977  6: A
   4978  7: A
   4979  8: A
   4980  9: A
   4981 10: A
   4982 
   4983 /(((((((((a)))))))))/i
   4984     A
   4985  0: A
   4986  1: A
   4987  2: A
   4988  3: A
   4989  4: A
   4990  5: A
   4991  6: A
   4992  7: A
   4993  8: A
   4994  9: A
   4995 
   4996 /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i
   4997     A
   4998  0: A
   4999  1: A
   5000 
   5001 /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i
   5002     C
   5003  0: C
   5004  1: C
   5005 
   5006 /multiple words of text/i
   5007     *** Failers
   5008 No match
   5009     AA
   5010 No match
   5011     UH-UH
   5012 No match
   5013 
   5014 /multiple words/i
   5015     MULTIPLE WORDS, YEAH
   5016  0: MULTIPLE WORDS
   5017 
   5018 /(.*)c(.*)/i
   5019     ABCDE
   5020  0: ABCDE
   5021  1: AB
   5022  2: DE
   5023 
   5024 /\((.*), (.*)\)/i
   5025     (A, B)
   5026  0: (A, B)
   5027  1: A
   5028  2: B
   5029 
   5030 /[k]/i
   5031 
   5032 /abcd/i
   5033     ABCD
   5034  0: ABCD
   5035 
   5036 /a(bc)d/i
   5037     ABCD
   5038  0: ABCD
   5039  1: BC
   5040 
   5041 /a[-]?c/i
   5042     AC
   5043  0: AC
   5044 
   5045 /(abc)\1/i
   5046     ABCABC
   5047  0: ABCABC
   5048  1: ABC
   5049 
   5050 /([a-c]*)\1/i
   5051     ABCABC
   5052  0: ABCABC
   5053  1: ABC
   5054 
   5055 /a(?!b)./
   5056     abad
   5057  0: ad
   5058 
   5059 /a(?=d)./
   5060     abad
   5061  0: ad
   5062 
   5063 /a(?=c|d)./
   5064     abad
   5065  0: ad
   5066 
   5067 /a(?:b|c|d)(.)/
   5068     ace
   5069  0: ace
   5070  1: e
   5071 
   5072 /a(?:b|c|d)*(.)/
   5073     ace
   5074  0: ace
   5075  1: e
   5076 
   5077 /a(?:b|c|d)+?(.)/
   5078     ace
   5079  0: ace
   5080  1: e
   5081     acdbcdbe
   5082  0: acd
   5083  1: d
   5084 
   5085 /a(?:b|c|d)+(.)/
   5086     acdbcdbe
   5087  0: acdbcdbe
   5088  1: e
   5089 
   5090 /a(?:b|c|d){2}(.)/
   5091     acdbcdbe
   5092  0: acdb
   5093  1: b
   5094 
   5095 /a(?:b|c|d){4,5}(.)/
   5096     acdbcdbe
   5097  0: acdbcdb
   5098  1: b
   5099 
   5100 /a(?:b|c|d){4,5}?(.)/
   5101     acdbcdbe
   5102  0: acdbcd
   5103  1: d
   5104 
   5105 /((foo)|(bar))*/
   5106     foobar
   5107  0: foobar
   5108  1: bar
   5109  2: foo
   5110  3: bar
   5111 
   5112 /a(?:b|c|d){6,7}(.)/
   5113     acdbcdbe
   5114  0: acdbcdbe
   5115  1: e
   5116 
   5117 /a(?:b|c|d){6,7}?(.)/
   5118     acdbcdbe
   5119  0: acdbcdbe
   5120  1: e
   5121 
   5122 /a(?:b|c|d){5,6}(.)/
   5123     acdbcdbe
   5124  0: acdbcdbe
   5125  1: e
   5126 
   5127 /a(?:b|c|d){5,6}?(.)/
   5128     acdbcdbe
   5129  0: acdbcdb
   5130  1: b
   5131 
   5132 /a(?:b|c|d){5,7}(.)/
   5133     acdbcdbe
   5134  0: acdbcdbe
   5135  1: e
   5136 
   5137 /a(?:b|c|d){5,7}?(.)/
   5138     acdbcdbe
   5139  0: acdbcdb
   5140  1: b
   5141 
   5142 /a(?:b|(c|e){1,2}?|d)+?(.)/
   5143     ace
   5144  0: ace
   5145  1: c
   5146  2: e
   5147 
   5148 /^(.+)?B/
   5149     AB
   5150  0: AB
   5151  1: A
   5152 
   5153 /^([^a-z])|(\^)$/
   5154     .
   5155  0: .
   5156  1: .
   5157 
   5158 /^[<>]&/
   5159     <&OUT
   5160  0: <&
   5161 
   5162 /^(a\1?){4}$/
   5163     aaaaaaaaaa
   5164  0: aaaaaaaaaa
   5165  1: aaaa
   5166     *** Failers
   5167 No match
   5168     AB
   5169 No match
   5170     aaaaaaaaa
   5171 No match
   5172     aaaaaaaaaaa
   5173 No match
   5174 
   5175 /^(a(?(1)\1)){4}$/
   5176     aaaaaaaaaa
   5177  0: aaaaaaaaaa
   5178  1: aaaa
   5179     *** Failers
   5180 No match
   5181     aaaaaaaaa
   5182 No match
   5183     aaaaaaaaaaa
   5184 No match
   5185 
   5186 /(?:(f)(o)(o)|(b)(a)(r))*/
   5187     foobar
   5188  0: foobar
   5189  1: f
   5190  2: o
   5191  3: o
   5192  4: b
   5193  5: a
   5194  6: r
   5195 
   5196 /(?<=a)b/
   5197     ab
   5198  0: b
   5199     *** Failers
   5200 No match
   5201     cb
   5202 No match
   5203     b
   5204 No match
   5205 
   5206 /(?<!c)b/
   5207     ab
   5208  0: b
   5209     b
   5210  0: b
   5211     b
   5212  0: b
   5213 
   5214 /(?:..)*a/
   5215     aba
   5216  0: aba
   5217 
   5218 /(?:..)*?a/
   5219     aba
   5220  0: a
   5221 
   5222 /^(?:b|a(?=(.)))*\1/
   5223     abc
   5224  0: ab
   5225  1: b
   5226 
   5227 /^(){3,5}/
   5228     abc
   5229  0: 
   5230  1: 
   5231 
   5232 /^(a+)*ax/
   5233     aax
   5234  0: aax
   5235  1: a
   5236 
   5237 /^((a|b)+)*ax/
   5238     aax
   5239  0: aax
   5240  1: a
   5241  2: a
   5242 
   5243 /^((a|bc)+)*ax/
   5244     aax
   5245  0: aax
   5246  1: a
   5247  2: a
   5248 
   5249 /(a|x)*ab/
   5250     cab
   5251  0: ab
   5252 
   5253 /(a)*ab/
   5254     cab
   5255  0: ab
   5256 
   5257 /(?:(?i)a)b/
   5258     ab
   5259  0: ab
   5260 
   5261 /((?i)a)b/
   5262     ab
   5263  0: ab
   5264  1: a
   5265 
   5266 /(?:(?i)a)b/
   5267     Ab
   5268  0: Ab
   5269 
   5270 /((?i)a)b/
   5271     Ab
   5272  0: Ab
   5273  1: A
   5274 
   5275 /(?:(?i)a)b/
   5276     *** Failers
   5277 No match
   5278     cb
   5279 No match
   5280     aB
   5281 No match
   5282 
   5283 /((?i)a)b/
   5284 
   5285 /(?i:a)b/
   5286     ab
   5287  0: ab
   5288 
   5289 /((?i:a))b/
   5290     ab
   5291  0: ab
   5292  1: a
   5293 
   5294 /(?i:a)b/
   5295     Ab
   5296  0: Ab
   5297 
   5298 /((?i:a))b/
   5299     Ab
   5300  0: Ab
   5301  1: A
   5302 
   5303 /(?i:a)b/
   5304     *** Failers
   5305 No match
   5306     aB
   5307 No match
   5308     aB
   5309 No match
   5310 
   5311 /((?i:a))b/
   5312 
   5313 /(?:(?-i)a)b/i
   5314     ab
   5315  0: ab
   5316 
   5317 /((?-i)a)b/i
   5318     ab
   5319  0: ab
   5320  1: a
   5321 
   5322 /(?:(?-i)a)b/i
   5323     aB
   5324  0: aB
   5325 
   5326 /((?-i)a)b/i
   5327     aB
   5328  0: aB
   5329  1: a
   5330 
   5331 /(?:(?-i)a)b/i
   5332     *** Failers
   5333 No match
   5334     aB
   5335  0: aB
   5336     Ab
   5337 No match
   5338 
   5339 /((?-i)a)b/i
   5340 
   5341 /(?:(?-i)a)b/i
   5342     aB
   5343  0: aB
   5344 
   5345 /((?-i)a)b/i
   5346     aB
   5347  0: aB
   5348  1: a
   5349 
   5350 /(?:(?-i)a)b/i
   5351     *** Failers
   5352 No match
   5353     Ab
   5354 No match
   5355     AB
   5356 No match
   5357 
   5358 /((?-i)a)b/i
   5359 
   5360 /(?-i:a)b/i
   5361     ab
   5362  0: ab
   5363 
   5364 /((?-i:a))b/i
   5365     ab
   5366  0: ab
   5367  1: a
   5368 
   5369 /(?-i:a)b/i
   5370     aB
   5371  0: aB
   5372 
   5373 /((?-i:a))b/i
   5374     aB
   5375  0: aB
   5376  1: a
   5377 
   5378 /(?-i:a)b/i
   5379     *** Failers
   5380 No match
   5381     AB
   5382 No match
   5383     Ab
   5384 No match
   5385 
   5386 /((?-i:a))b/i
   5387 
   5388 /(?-i:a)b/i
   5389     aB
   5390  0: aB
   5391 
   5392 /((?-i:a))b/i
   5393     aB
   5394  0: aB
   5395  1: a
   5396 
   5397 /(?-i:a)b/i
   5398     *** Failers
   5399 No match
   5400     Ab
   5401 No match
   5402     AB
   5403 No match
   5404 
   5405 /((?-i:a))b/i
   5406 
   5407 /((?-i:a.))b/i
   5408     *** Failers
   5409 No match
   5410     AB
   5411 No match
   5412     a\nB
   5413 No match
   5414 
   5415 /((?s-i:a.))b/i
   5416     a\nB
   5417  0: a\x0aB
   5418  1: a\x0a
   5419 
   5420 /(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/
   5421     cabbbb
   5422  0: cabbbb
   5423 
   5424 /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/
   5425     caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
   5426  0: caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
   5427 
   5428 /(ab)\d\1/i
   5429     Ab4ab
   5430  0: Ab4ab
   5431  1: Ab
   5432     ab4Ab
   5433  0: ab4Ab
   5434  1: ab
   5435 
   5436 /foo\w*\d{4}baz/
   5437     foobar1234baz
   5438  0: foobar1234baz
   5439 
   5440 /x(~~)*(?:(?:F)?)?/
   5441     x~~
   5442  0: x~~
   5443  1: ~~
   5444 
   5445 /^a(?#xxx){3}c/
   5446     aaac
   5447  0: aaac
   5448 
   5449 /^a (?#xxx) (?#yyy) {3}c/x
   5450     aaac
   5451  0: aaac
   5452 
   5453 /(?<![cd])b/
   5454     *** Failers
   5455 No match
   5456     B\nB
   5457 No match
   5458     dbcb
   5459 No match
   5460 
   5461 /(?<![cd])[ab]/
   5462     dbaacb
   5463  0: a
   5464 
   5465 /(?<!(c|d))b/
   5466 
   5467 /(?<!(c|d))[ab]/
   5468     dbaacb
   5469  0: a
   5470 
   5471 /(?<!cd)[ab]/
   5472     cdaccb
   5473  0: b
   5474 
   5475 /^(?:a?b?)*$/
   5476     \
   5477  0: 
   5478     a
   5479  0: a
   5480     ab
   5481  0: ab
   5482     aaa   
   5483  0: aaa
   5484     *** Failers
   5485 No match
   5486     dbcb
   5487 No match
   5488     a--
   5489 No match
   5490     aa-- 
   5491 No match
   5492 
   5493 /((?s)^a(.))((?m)^b$)/
   5494     a\nb\nc\n
   5495  0: a\x0ab
   5496  1: a\x0a
   5497  2: \x0a
   5498  3: b
   5499 
   5500 /((?m)^b$)/
   5501     a\nb\nc\n
   5502  0: b
   5503  1: b
   5504 
   5505 /(?m)^b/
   5506     a\nb\n
   5507  0: b
   5508 
   5509 /(?m)^(b)/
   5510     a\nb\n
   5511  0: b
   5512  1: b
   5513 
   5514 /((?m)^b)/
   5515     a\nb\n
   5516  0: b
   5517  1: b
   5518 
   5519 /\n((?m)^b)/
   5520     a\nb\n
   5521  0: \x0ab
   5522  1: b
   5523 
   5524 /((?s).)c(?!.)/
   5525     a\nb\nc\n
   5526  0: \x0ac
   5527  1: \x0a
   5528     a\nb\nc\n
   5529  0: \x0ac
   5530  1: \x0a
   5531 
   5532 /((?s)b.)c(?!.)/
   5533     a\nb\nc\n
   5534  0: b\x0ac
   5535  1: b\x0a
   5536     a\nb\nc\n
   5537  0: b\x0ac
   5538  1: b\x0a
   5539 
   5540 /^b/
   5541 
   5542 /()^b/
   5543     *** Failers
   5544 No match
   5545     a\nb\nc\n
   5546 No match
   5547     a\nb\nc\n
   5548 No match
   5549 
   5550 /((?m)^b)/
   5551     a\nb\nc\n
   5552  0: b
   5553  1: b
   5554 
   5555 /(x)?(?(1)a|b)/
   5556     *** Failers
   5557 No match
   5558     a
   5559 No match
   5560     a
   5561 No match
   5562 
   5563 /(x)?(?(1)b|a)/
   5564     a
   5565  0: a
   5566 
   5567 /()?(?(1)b|a)/
   5568     a
   5569  0: a
   5570 
   5571 /()(?(1)b|a)/
   5572 
   5573 /()?(?(1)a|b)/
   5574     a
   5575  0: a
   5576  1: 
   5577 
   5578 /^(\()?blah(?(1)(\)))$/
   5579     (blah)
   5580  0: (blah)
   5581  1: (
   5582  2: )
   5583     blah
   5584  0: blah
   5585     *** Failers
   5586 No match
   5587     a
   5588 No match
   5589     blah)
   5590 No match
   5591     (blah
   5592 No match
   5593 
   5594 /^(\(+)?blah(?(1)(\)))$/
   5595     (blah)
   5596  0: (blah)
   5597  1: (
   5598  2: )
   5599     blah
   5600  0: blah
   5601     *** Failers
   5602 No match
   5603     blah)
   5604 No match
   5605     (blah
   5606 No match
   5607 
   5608 /(?(?!a)a|b)/
   5609 
   5610 /(?(?!a)b|a)/
   5611     a
   5612  0: a
   5613 
   5614 /(?(?=a)b|a)/
   5615     *** Failers
   5616 No match
   5617     a
   5618 No match
   5619     a
   5620 No match
   5621 
   5622 /(?(?=a)a|b)/
   5623     a
   5624  0: a
   5625 
   5626 /(?=(a+?))(\1ab)/
   5627     aaab
   5628  0: aab
   5629  1: a
   5630  2: aab
   5631 
   5632 /^(?=(a+?))\1ab/
   5633 
   5634 /(\w+:)+/
   5635     one:
   5636  0: one:
   5637  1: one:
   5638 
   5639 /$(?<=^(a))/
   5640     a
   5641  0: 
   5642  1: a
   5643 
   5644 /(?=(a+?))(\1ab)/
   5645     aaab
   5646  0: aab
   5647  1: a
   5648  2: aab
   5649 
   5650 /^(?=(a+?))\1ab/
   5651     *** Failers
   5652 No match
   5653     aaab
   5654 No match
   5655     aaab
   5656 No match
   5657 
   5658 /([\w:]+::)?(\w+)$/
   5659     abcd
   5660  0: abcd
   5661  1: <unset>
   5662  2: abcd
   5663     xy:z:::abcd
   5664  0: xy:z:::abcd
   5665  1: xy:z:::
   5666  2: abcd
   5667 
   5668 /^[^bcd]*(c+)/
   5669     aexycd
   5670  0: aexyc
   5671  1: c
   5672 
   5673 /(a*)b+/
   5674     caab
   5675  0: aab
   5676  1: aa
   5677 
   5678 /([\w:]+::)?(\w+)$/
   5679     abcd
   5680  0: abcd
   5681  1: <unset>
   5682  2: abcd
   5683     xy:z:::abcd
   5684  0: xy:z:::abcd
   5685  1: xy:z:::
   5686  2: abcd
   5687     *** Failers
   5688  0: Failers
   5689  1: <unset>
   5690  2: Failers
   5691     abcd:
   5692 No match
   5693     abcd:
   5694 No match
   5695 
   5696 /^[^bcd]*(c+)/
   5697     aexycd
   5698  0: aexyc
   5699  1: c
   5700 
   5701 /(>a+)ab/
   5702 
   5703 /(?>a+)b/
   5704     aaab
   5705  0: aaab
   5706 
   5707 /([[:]+)/
   5708     a:[b]:
   5709  0: :[
   5710  1: :[
   5711 
   5712 /([[=]+)/
   5713     a=[b]=
   5714  0: =[
   5715  1: =[
   5716 
   5717 /([[.]+)/
   5718     a.[b].
   5719  0: .[
   5720  1: .[
   5721 
   5722 /((?>a+)b)/
   5723     aaab
   5724  0: aaab
   5725  1: aaab
   5726 
   5727 /(?>(a+))b/
   5728     aaab
   5729  0: aaab
   5730  1: aaa
   5731 
   5732 /((?>[^()]+)|\([^()]*\))+/
   5733     ((abc(ade)ufh()()x
   5734  0: abc(ade)ufh()()x
   5735  1: x
   5736 
   5737 /a\Z/
   5738     *** Failers
   5739 No match
   5740     aaab
   5741 No match
   5742     a\nb\n
   5743 No match
   5744 
   5745 /b\Z/
   5746     a\nb\n
   5747  0: b
   5748 
   5749 /b\z/
   5750 
   5751 /b\Z/
   5752     a\nb
   5753  0: b
   5754 
   5755 /b\z/
   5756     a\nb
   5757  0: b
   5758     *** Failers
   5759 No match
   5760     
   5761 /^(?>(?(1)\.|())[^\W_](?>[a-z0-9-]*[^\W_])?)+$/
   5762     a
   5763  0: a
   5764  1: 
   5765     abc
   5766  0: abc
   5767  1: 
   5768     a-b
   5769  0: a-b
   5770  1: 
   5771     0-9 
   5772  0: 0-9
   5773  1: 
   5774     a.b
   5775  0: a.b
   5776  1: 
   5777     5.6.7  
   5778  0: 5.6.7
   5779  1: 
   5780     the.quick.brown.fox
   5781  0: the.quick.brown.fox
   5782  1: 
   5783     a100.b200.300c  
   5784  0: a100.b200.300c
   5785  1: 
   5786     12-ab.1245 
   5787  0: 12-ab.1245
   5788  1: 
   5789     *** Failers
   5790 No match
   5791     \
   5792 No match
   5793     .a
   5794 No match
   5795     -a
   5796 No match
   5797     a-
   5798 No match
   5799     a.  
   5800 No match
   5801     a_b 
   5802 No match
   5803     a.-
   5804 No match
   5805     a..  
   5806 No match
   5807     ab..bc 
   5808 No match
   5809     the.quick.brown.fox-
   5810 No match
   5811     the.quick.brown.fox.
   5812 No match
   5813     the.quick.brown.fox_
   5814 No match
   5815     the.quick.brown.fox+       
   5816 No match
   5817 
   5818 /(?>.*)(?<=(abcd|wxyz))/
   5819     alphabetabcd
   5820  0: alphabetabcd
   5821  1: abcd
   5822     endingwxyz
   5823  0: endingwxyz
   5824  1: wxyz
   5825     *** Failers
   5826 No match
   5827     a rather long string that doesn't end with one of them
   5828 No match
   5829 
   5830 /word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/
   5831     word cat dog elephant mussel cow horse canary baboon snake shark otherword
   5832  0: word cat dog elephant mussel cow horse canary baboon snake shark otherword
   5833     word cat dog elephant mussel cow horse canary baboon snake shark
   5834 No match
   5835   
   5836 /word (?>[a-zA-Z0-9]+ ){0,30}otherword/
   5837     word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope
   5838 No match
   5839 
   5840 /(?<=\d{3}(?!999))foo/
   5841     999foo
   5842  0: foo
   5843     123999foo 
   5844  0: foo
   5845     *** Failers
   5846 No match
   5847     123abcfoo
   5848 No match
   5849     
   5850 /(?<=(?!...999)\d{3})foo/
   5851     999foo
   5852  0: foo
   5853     123999foo 
   5854  0: foo
   5855     *** Failers
   5856 No match
   5857     123abcfoo
   5858 No match
   5859 
   5860 /(?<=\d{3}(?!999)...)foo/
   5861     123abcfoo
   5862  0: foo
   5863     123456foo 
   5864  0: foo
   5865     *** Failers
   5866 No match
   5867     123999foo  
   5868 No match
   5869     
   5870 /(?<=\d{3}...)(?<!999)foo/
   5871     123abcfoo   
   5872  0: foo
   5873     123456foo 
   5874  0: foo
   5875     *** Failers
   5876 No match
   5877     123999foo  
   5878 No match
   5879 
   5880 /<a[\s]+href[\s]*=[\s]*          # find <a href=
   5881  ([\"\'])?                       # find single or double quote
   5882  (?(1) (.*?)\1 | ([^\s]+))       # if quote found, match up to next matching
   5883                                  # quote, otherwise match up to next space
   5884 /isx
   5885     <a href=abcd xyz
   5886  0: <a href=abcd
   5887  1: <unset>
   5888  2: <unset>
   5889  3: abcd
   5890     <a href=\"abcd xyz pqr\" cats
   5891  0: <a href="abcd xyz pqr"
   5892  1: "
   5893  2: abcd xyz pqr
   5894     <a href=\'abcd xyz pqr\' cats
   5895  0: <a href='abcd xyz pqr'
   5896  1: '
   5897  2: abcd xyz pqr
   5898 
   5899 /<a\s+href\s*=\s*                # find <a href=
   5900  (["'])?                         # find single or double quote
   5901  (?(1) (.*?)\1 | (\S+))          # if quote found, match up to next matching
   5902                                  # quote, otherwise match up to next space
   5903 /isx
   5904     <a href=abcd xyz
   5905  0: <a href=abcd
   5906  1: <unset>
   5907  2: <unset>
   5908  3: abcd
   5909     <a href=\"abcd xyz pqr\" cats
   5910  0: <a href="abcd xyz pqr"
   5911  1: "
   5912  2: abcd xyz pqr
   5913     <a href       =       \'abcd xyz pqr\' cats
   5914  0: <a href       =       'abcd xyz pqr'
   5915  1: '
   5916  2: abcd xyz pqr
   5917 
   5918 /<a\s+href(?>\s*)=(?>\s*)        # find <a href=
   5919  (["'])?                         # find single or double quote
   5920  (?(1) (.*?)\1 | (\S+))          # if quote found, match up to next matching
   5921                                  # quote, otherwise match up to next space
   5922 /isx
   5923     <a href=abcd xyz
   5924  0: <a href=abcd
   5925  1: <unset>
   5926  2: <unset>
   5927  3: abcd
   5928     <a href=\"abcd xyz pqr\" cats
   5929  0: <a href="abcd xyz pqr"
   5930  1: "
   5931  2: abcd xyz pqr
   5932     <a href       =       \'abcd xyz pqr\' cats
   5933  0: <a href       =       'abcd xyz pqr'
   5934  1: '
   5935  2: abcd xyz pqr
   5936 
   5937 /((Z)+|A)*/
   5938     ZABCDEFG
   5939  0: ZA
   5940  1: A
   5941  2: Z
   5942 
   5943 /(Z()|A)*/
   5944     ZABCDEFG
   5945  0: ZA
   5946  1: A
   5947  2: 
   5948 
   5949 /(Z(())|A)*/
   5950     ZABCDEFG
   5951  0: ZA
   5952  1: A
   5953  2: 
   5954  3: 
   5955 
   5956 /((?>Z)+|A)*/
   5957     ZABCDEFG
   5958  0: ZA
   5959  1: A
   5960 
   5961 /((?>)+|A)*/
   5962     ZABCDEFG
   5963  0: 
   5964  1: 
   5965 
   5966 /a*/g
   5967     abbab
   5968  0: a
   5969  0: 
   5970  0: 
   5971  0: a
   5972  0: 
   5973  0: 
   5974 
   5975 /^[a-\d]/
   5976     abcde
   5977  0: a
   5978     -things
   5979  0: -
   5980     0digit
   5981  0: 0
   5982     *** Failers
   5983 No match
   5984     bcdef    
   5985 No match
   5986 
   5987 /^[\d-a]/
   5988     abcde
   5989  0: a
   5990     -things
   5991  0: -
   5992     0digit
   5993  0: 0
   5994     *** Failers
   5995 No match
   5996     bcdef    
   5997 No match
   5998     
   5999 /[[:space:]]+/
   6000     > \x09\x0a\x0c\x0d\x0b<
   6001  0:  \x09\x0a\x0c\x0d\x0b
   6002      
   6003 /[[:blank:]]+/
   6004     > \x09\x0a\x0c\x0d\x0b<
   6005  0:  \x09
   6006      
   6007 /[\s]+/
   6008     > \x09\x0a\x0c\x0d\x0b<
   6009  0:  \x09\x0a\x0c\x0d
   6010      
   6011 /\s+/
   6012     > \x09\x0a\x0c\x0d\x0b<
   6013  0:  \x09\x0a\x0c\x0d
   6014      
   6015 /ab/x
   6017     ab
   6018 No match
   6019 
   6020 /(?!\A)x/m
   6021   a\nxb\n
   6022  0: x
   6023 
   6024 /(?!^)x/m
   6025   a\nxb\n
   6026 No match
   6027 
   6028 /abc\Qabc\Eabc/
   6029     abcabcabc
   6030  0: abcabcabc
   6031     
   6032 /abc\Q(*+|\Eabc/
   6033     abc(*+|abc 
   6034  0: abc(*+|abc
   6035 
   6036 /   abc\Q abc\Eabc/x
   6037     abc abcabc
   6038  0: abc abcabc
   6039     *** Failers
   6040 No match
   6041     abcabcabc  
   6042 No match
   6043     
   6044 /abc#comment
   6045     \Q#not comment
   6046     literal\E/x
   6047     abc#not comment\n    literal     
   6048  0: abc#not comment\x0a    literal
   6049 
   6050 /abc#comment
   6051     \Q#not comment
   6052     literal/x
   6053     abc#not comment\n    literal     
   6054  0: abc#not comment\x0a    literal
   6055 
   6056 /abc#comment
   6057     \Q#not comment
   6058     literal\E #more comment
   6059     /x
   6060     abc#not comment\n    literal     
   6061  0: abc#not comment\x0a    literal
   6062 
   6063 /abc#comment
   6064     \Q#not comment
   6065     literal\E #more comment/x
   6066     abc#not comment\n    literal     
   6067  0: abc#not comment\x0a    literal
   6068 
   6069 /\Qabc\$xyz\E/
   6070     abc\\\$xyz
   6071  0: abc\$xyz
   6072 
   6073 /\Qabc\E\$\Qxyz\E/
   6074     abc\$xyz
   6075  0: abc$xyz
   6076 
   6077 /\Gabc/
   6078     abc
   6079  0: abc
   6080     *** Failers
   6081 No match
   6082     xyzabc  
   6083 No match
   6084 
   6085 /\Gabc./g
   6086     abc1abc2xyzabc3
   6087  0: abc1
   6088  0: abc2
   6089 
   6090 /abc./g
   6091     abc1abc2xyzabc3 
   6092  0: abc1
   6093  0: abc2
   6094  0: abc3
   6095 
   6096 /a(?x: b c )d/
   6097     XabcdY
   6098  0: abcd
   6099     *** Failers 
   6100 No match
   6101     Xa b c d Y 
   6102 No match
   6103 
   6104 /((?x)x y z | a b c)/
   6105     XabcY
   6106  0: abc
   6107  1: abc
   6108     AxyzB 
   6109  0: xyz
   6110  1: xyz
   6111 
   6112 /(?i)AB(?-i)C/
   6113     XabCY
   6114  0: abC
   6115     *** Failers
   6116 No match
   6117     XabcY  
   6118 No match
   6119 
   6120 /((?i)AB(?-i)C|D)E/
   6121     abCE
   6122  0: abCE
   6123  1: abC
   6124     DE
   6125  0: DE
   6126  1: D
   6127     *** Failers
   6128 No match
   6129     abcE
   6130 No match
   6131     abCe  
   6132 No match
   6133     dE
   6134 No match
   6135     De    
   6136 No match
   6137 
   6138 /(.*)\d+\1/
   6139     abc123abc
   6140  0: abc123abc
   6141  1: abc
   6142     abc123bc 
   6143  0: bc123bc
   6144  1: bc
   6145 
   6146 /(.*)\d+\1/s
   6147     abc123abc
   6148  0: abc123abc
   6149  1: abc
   6150     abc123bc 
   6151  0: bc123bc
   6152  1: bc
   6153     
   6154 /((.*))\d+\1/
   6155     abc123abc
   6156  0: abc123abc
   6157  1: abc
   6158  2: abc
   6159     abc123bc  
   6160  0: bc123bc
   6161  1: bc
   6162  2: bc
   6163 
   6164 /-- This tests for an IPv6 address in the form where it can have up to --/
   6165 /-- eight components, one and only one of which is empty. This must be --/
   6166 No match
   6167 /-- an internal component. --/
   6168 No match
   6169 
   6170 /^(?!:)                       # colon disallowed at start
   6171   (?:                         # start of item
   6172     (?: [0-9a-f]{1,4} |       # 1-4 hex digits or
   6173     (?(1)0 | () ) )           # if null previously matched, fail; else null
   6174     :                         # followed by colon
   6175   ){1,7}                      # end item; 1-7 of them required               
   6176   [0-9a-f]{1,4} $             # final hex number at end of string
   6177   (?(1)|.)                    # check that there was an empty component
   6178   /xi
   6179     a123::a123
   6180  0: a123::a123
   6181  1: 
   6182     a123:b342::abcd
   6183  0: a123:b342::abcd
   6184  1: 
   6185     a123:b342::324e:abcd
   6186  0: a123:b342::324e:abcd
   6187  1: 
   6188     a123:ddde:b342::324e:abcd
   6189  0: a123:ddde:b342::324e:abcd
   6190  1: 
   6191     a123:ddde:b342::324e:dcba:abcd
   6192  0: a123:ddde:b342::324e:dcba:abcd
   6193  1: 
   6194     a123:ddde:9999:b342::324e:dcba:abcd
   6195  0: a123:ddde:9999:b342::324e:dcba:abcd
   6196  1: 
   6197     *** Failers
   6198 No match
   6199     1:2:3:4:5:6:7:8
   6200 No match
   6201     a123:bce:ddde:9999:b342::324e:dcba:abcd
   6202 No match
   6203     a123::9999:b342::324e:dcba:abcd
   6204 No match
   6205     abcde:2:3:4:5:6:7:8
   6206 No match
   6207     ::1
   6208 No match
   6209     abcd:fee0:123::   
   6210 No match
   6211     :1
   6212 No match
   6213     1:  
   6214 No match
   6215 
   6216 /[z\Qa-d]\E]/
   6217     z
   6218  0: z
   6219     a
   6220  0: a
   6221     -
   6222  0: -
   6223     d
   6224  0: d
   6225     ] 
   6226  0: ]
   6227     *** Failers
   6228  0: a
   6229     b     
   6230 No match
   6231 
   6232 /[\z\C]/
   6233     z
   6234  0: z
   6235     C 
   6236  0: C
   6237     
   6238 /\M/
   6239     M 
   6240  0: M
   6241     
   6242 /(a+)*b/
   6243     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
   6244 No match
   6245     
   6246 /(?i)reg(?:ul(?:[a]|ae)r|ex)/
   6247     REGular
   6248  0: REGular
   6249     regulaer
   6250  0: regulaer
   6251     Regex  
   6252  0: Regex
   6253     regulr 
   6254  0: regul\xe4r
   6255 
   6256 /[--]+/
   6257     
   6258  0: \xc5\xe6\xe5\xe4\xe0
   6259     
   6260  0: \xc5\xe6\xe5\xe4\xff
   6261     
   6262  0: \xc5\xe6\xe5\xe4\xc0
   6263     
   6264  0: \xc5\xe6\xe5\xe4\xdf
   6265 
   6266 /(?<=Z)X./
   6267   \x84XAZXB
   6268  0: XB
   6269 
   6270 /ab cd (?x) de fg/
   6271     ab cd defg
   6272  0: ab cd defg
   6273 
   6274 /ab cd(?x) de fg/
   6275     ab cddefg
   6276  0: ab cddefg
   6277     ** Failers 
   6278 No match
   6279     abcddefg
   6280 No match
   6281 
   6282 /(?<![^f]oo)(bar)/
   6283     foobarX 
   6284  0: bar
   6285  1: bar
   6286     ** Failers 
   6287 No match
   6288     boobarX
   6289 No match
   6290 
   6291 /(?<![^f])X/
   6292     offX
   6293  0: X
   6294     ** Failers
   6295 No match
   6296     onyX  
   6297 No match
   6298 
   6299 /(?<=[^f])X/
   6300     onyX
   6301  0: X
   6302     ** Failers
   6303 No match
   6304     offX 
   6305 No match
   6306 
   6307 /^/mg
   6308     a\nb\nc\n
   6309  0: 
   6310  0: 
   6311  0: 
   6312     \ 
   6313  0: 
   6314     
   6315 /(?<=C\n)^/mg
   6316     A\nC\nC\n 
   6317  0: 
   6318 
   6319 /(?:(?(1)a|b)(X))+/
   6320     bXaX
   6321  0: bXaX
   6322  1: X
   6323 
   6324 /(?:(?(1)\1a|b)(X|Y))+/
   6325     bXXaYYaY
   6326  0: bXXaYYaY
   6327  1: Y
   6328     bXYaXXaX  
   6329  0: bX
   6330  1: X
   6331 
   6332 /()()()()()()()()()(?:(?(10)\10a|b)(X|Y))+/
   6333     bXXaYYaY
   6334  0: bX
   6335  1: 
   6336  2: 
   6337  3: 
   6338  4: 
   6339  5: 
   6340  6: 
   6341  7: 
   6342  8: 
   6343  9: 
   6344 10: X
   6345 
   6346 /[[,abc,]+]/
   6347     abc]
   6348  0: abc]
   6349     a,b]
   6350  0: a,b]
   6351     [a,b,c]  
   6352  0: [a,b,c]
   6353 
   6354 /(?-x: )/x
   6355     A\x20B
   6356  0:  
   6357     
   6358 "(?x)(?-x: \s*#\s*)"
   6359     A # B
   6360  0:  # 
   6361     ** Failers
   6362 No match
   6363     #  
   6364 No match
   6365 
   6366 "(?x-is)(?:(?-ixs) \s*#\s*) include"
   6367     A #include
   6368  0:  #include
   6369     ** Failers
   6370 No match
   6371     A#include  
   6372 No match
   6373     A #Include
   6374 No match
   6375 
   6376 /a*b*\w/
   6377     aaabbbb
   6378  0: aaabbbb
   6379     aaaa
   6380  0: aaaa
   6381     a
   6382  0: a
   6383 
   6384 /a*b?\w/
   6385     aaabbbb
   6386  0: aaabb
   6387     aaaa
   6388  0: aaaa
   6389     a
   6390  0: a
   6391 
   6392 /a*b{0,4}\w/
   6393     aaabbbb
   6394  0: aaabbbb
   6395     aaaa
   6396  0: aaaa
   6397     a
   6398  0: a
   6399 
   6400 /a*b{0,}\w/
   6401     aaabbbb
   6402  0: aaabbbb
   6403     aaaa
   6404  0: aaaa
   6405     a
   6406  0: a
   6407     
   6408 /a*\d*\w/
   6409     0a
   6410  0: 0a
   6411     a 
   6412  0: a
   6413     
   6414 /a*b *\w/x
   6415     a 
   6416  0: a
   6417 
   6418 /a*b#comment
   6419   *\w/x
   6420     a 
   6421  0: a
   6422 
   6423 /a* b *\w/x
   6424     a 
   6425  0: a
   6426 
   6427 /^\w+=.*(\\\n.*)*/
   6428     abc=xyz\\\npqr
   6429  0: abc=xyz\
   6430 
   6431 /(?=(\w+))\1:/
   6432     abcd:
   6433  0: abcd:
   6434  1: abcd
   6435 
   6436 /^(?=(\w+))\1:/
   6437     abcd:
   6438  0: abcd:
   6439  1: abcd
   6440 
   6441 /^\Eabc/
   6442     abc
   6443  0: abc
   6444     
   6445 /^[\Eabc]/
   6446     a
   6447  0: a
   6448     ** Failers 
   6449 No match
   6450     E 
   6451 No match
   6452     
   6453 /^[a-\Ec]/
   6454     b
   6455  0: b
   6456     ** Failers
   6457 No match
   6458     -
   6459 No match
   6460     E    
   6461 No match
   6462 
   6463 /^[a\E\E-\Ec]/
   6464     b
   6465  0: b
   6466     ** Failers
   6467 No match
   6468     -
   6469 No match
   6470     E    
   6471 No match
   6472 
   6473 /^[\E\Qa\E-\Qz\E]+/
   6474     b
   6475  0: b
   6476     ** Failers
   6477 No match
   6478     -  
   6479 No match
   6480     
   6481 /^[a\Q]bc\E]/
   6482     a
   6483  0: a
   6484     ]
   6485  0: ]
   6486     c
   6487  0: c
   6488     
   6489 /^[a-\Q\E]/
   6490     a
   6491  0: a
   6492     -     
   6493  0: -
   6494 
   6495 /^(a()*)*/
   6496     aaaa
   6497  0: aaaa
   6498  1: a
   6499  2: 
   6500 
   6501 /^(?:a(?:(?:))*)*/
   6502     aaaa
   6503  0: aaaa
   6504 
   6505 /^(a()+)+/
   6506     aaaa
   6507  0: aaaa
   6508  1: a
   6509  2: 
   6510 
   6511 /^(?:a(?:(?:))+)+/
   6512     aaaa
   6513  0: aaaa
   6514 
   6515 /(a){0,3}(?(1)b|(c|))*D/
   6516     abbD
   6517  0: abbD
   6518  1: a
   6519     ccccD
   6520  0: ccccD
   6521  1: <unset>
   6522  2: 
   6523     D  
   6524  0: D
   6525  1: <unset>
   6526  2: 
   6527 
   6528 /(a|)*\d/
   6529   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
   6530 No match
   6531   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
   6532  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
   6533  1: 
   6534 
   6535 /(?>a|)*\d/
   6536   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
   6537 No match
   6538   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
   6539  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
   6540 
   6541 /(?:a|)*\d/
   6542   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
   6543 No match
   6544   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
   6545  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
   6546 
   6547 /\Z/g
   6548   abc\n
   6549  0: 
   6550  0: 
   6551   
   6552 /^(?s)(?>.*)(?<!\n)/
   6553   abc
   6554  0: abc
   6555   abc\n  
   6556 No match
   6557 
   6558 /^(?![^\n]*\n\z)/
   6559   abc
   6560  0: 
   6561   abc\n 
   6562 No match
   6563   
   6564 /\z(?<!\n)/
   6565   abc
   6566  0: 
   6567   abc\n  
   6568 No match
   6569 
   6570 /(.*(.)?)*/
   6571     abcd
   6572  0: abcd
   6573  1: 
   6574 
   6575 /( (A | (?(1)0|) )*   )/x
   6576     abcd
   6577  0: 
   6578  1: 
   6579  2: 
   6580 
   6581 /( ( (?(1)0|) )*   )/x
   6582     abcd
   6583  0: 
   6584  1: 
   6585  2: 
   6586 
   6587 /(  (?(1)0|)*   )/x
   6588     abcd
   6589  0: 
   6590  1: 
   6591 
   6592 /[[:abcd:xyz]]/
   6593     a]
   6594  0: a]
   6595     :] 
   6596  0: :]
   6597     
   6598 /[abc[:x\]pqr]/
   6599     a
   6600  0: a
   6601     [
   6602  0: [
   6603     :
   6604  0: :
   6605     ]
   6606  0: ]
   6607     p    
   6608  0: p
   6609 
   6610 /.*[op][xyz]/
   6611     fooabcfoo
   6612 No match
   6613 
   6614 /(?(?=.*b)b|^)/
   6615    adc
   6616  0: 
   6617    abc 
   6618  0: b
   6619 
   6620 /(?(?=^.*b)b|^)/
   6621    adc
   6622  0: 
   6623    abc 
   6624 No match
   6625 
   6626 /(?(?=.*b)b|^)*/
   6627    adc
   6628  0: 
   6629    abc 
   6630  0: 
   6631 
   6632 /(?(?=.*b)b|^)+/
   6633    adc
   6634  0: 
   6635    abc 
   6636  0: b
   6637 
   6638 /(?(?=b).*b|^d)/
   6639     abc
   6640  0: b
   6641 
   6642 /(?(?=.*b).*b|^d)/
   6643     abc
   6644  0: ab
   6645 
   6646 /^%((?(?=[a])[^%])|b)*%$/
   6647     %ab%
   6648  0: %ab%
   6649  1: 
   6650 
   6651 /(?i)a(?-i)b|c/
   6652     XabX
   6653  0: ab
   6654     XAbX
   6655  0: Ab
   6656     CcC 
   6657  0: c
   6658     ** Failers
   6659 No match
   6660     XABX   
   6661 No match
   6662 
   6663 /[\x00-\xff\s]+/
   6664     \x0a\x0b\x0c\x0d
   6665  0: \x0a\x0b\x0c\x0d
   6666 
   6667 /^\c/
   6668     ?
   6669  0: ?
   6670 
   6671 /-- End of testinput1 --/
   6672