Home | History | Annotate | Download | only in testsuite
      1 # PCRE version 4.4 21-August-2003
      2 
      3 # Tests taken from PCRE and modified to suit glibc regex.
      4 #
      5 # PCRE LICENCE
      6 # ------------
      7 #
      8 # PCRE is a library of functions to support regular expressions whose syntax
      9 # and semantics are as close as possible to those of the Perl 5 language.
     10 #
     11 # Written by: Philip Hazel <ph10 (a] cam.ac.uk>
     12 #
     13 # University of Cambridge Computing Service,
     14 # Cambridge, England. Phone: +44 1223 334714.
     15 #
     16 # Copyright (c) 1997-2003 University of Cambridge
     17 #
     18 # Permission is granted to anyone to use this software for any purpose on any
     19 # computer system, and to redistribute it freely, subject to the following
     20 # restrictions:
     21 #
     22 # 1. This software is distributed in the hope that it will be useful,
     23 #    but WITHOUT ANY WARRANTY; without even the implied warranty of
     24 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
     25 #
     26 # 2. The origin of this software must not be misrepresented, either by
     27 #    explicit claim or by omission. In practice, this means that if you use
     28 #    PCRE in software that you distribute to others, commercially or
     29 #    otherwise, you must put a sentence like this
     30 #
     31 #      Regular expression support is provided by the PCRE library package,
     32 #      which is open source software, written by Philip Hazel, and copyright
     33 #      by the University of Cambridge, England.
     34 #
     35 #    somewhere reasonably visible in your documentation and in any relevant
     36 #    files or online help data or similar. A reference to the ftp site for
     37 #    the source, that is, to
     38 #
     39 #      ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
     40 #
     41 #    should also be given in the documentation. However, this condition is not
     42 #    intended to apply to whole chains of software. If package A includes PCRE,
     43 #    it must acknowledge it, but if package B is software that includes package
     44 #    A, the condition is not imposed on package B (unless it uses PCRE
     45 #    independently).
     46 #
     47 # 3. Altered versions must be plainly marked as such, and must not be
     48 #    misrepresented as being the original software.
     49 #
     50 # 4. If PCRE is embedded in any software that is released under the GNU
     51 #   General Purpose Licence (GPL), or Lesser General Purpose Licence (LGPL),
     52 #   then the terms of that licence shall supersede any condition above with
     53 #   which it is incompatible.
     54 #
     55 # The documentation for PCRE, supplied in the "doc" directory, is distributed
     56 # under the same terms as the software itself.
     57 #
     58 # End
     59 #
     60 
     61 /the quick brown fox/
     62     the quick brown fox
     63  0: the quick brown fox
     64     The quick brown FOX
     65 No match
     66     What do you know about the quick brown fox?
     67  0: the quick brown fox
     68     What do you know about THE QUICK BROWN FOX?
     69 No match
     70 
     71 /The quick brown fox/i
     72     the quick brown fox
     73  0: the quick brown fox
     74     The quick brown FOX
     75  0: The quick brown FOX
     76     What do you know about the quick brown fox?
     77  0: the quick brown fox
     78     What do you know about THE QUICK BROWN FOX?
     79  0: THE QUICK BROWN FOX
     80 
     81 /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
     82     abxyzpqrrrabbxyyyypqAzz
     83  0: abxyzpqrrrabbxyyyypqAzz
     84     abxyzpqrrrabbxyyyypqAzz
     85  0: abxyzpqrrrabbxyyyypqAzz
     86     aabxyzpqrrrabbxyyyypqAzz
     87  0: aabxyzpqrrrabbxyyyypqAzz
     88     aaabxyzpqrrrabbxyyyypqAzz
     89  0: aaabxyzpqrrrabbxyyyypqAzz
     90     aaaabxyzpqrrrabbxyyyypqAzz
     91  0: aaaabxyzpqrrrabbxyyyypqAzz
     92     abcxyzpqrrrabbxyyyypqAzz
     93  0: abcxyzpqrrrabbxyyyypqAzz
     94     aabcxyzpqrrrabbxyyyypqAzz
     95  0: aabcxyzpqrrrabbxyyyypqAzz
     96     aaabcxyzpqrrrabbxyyyypAzz
     97  0: aaabcxyzpqrrrabbxyyyypAzz
     98     aaabcxyzpqrrrabbxyyyypqAzz
     99  0: aaabcxyzpqrrrabbxyyyypqAzz
    100     aaabcxyzpqrrrabbxyyyypqqAzz
    101  0: aaabcxyzpqrrrabbxyyyypqqAzz
    102     aaabcxyzpqrrrabbxyyyypqqqAzz
    103  0: aaabcxyzpqrrrabbxyyyypqqqAzz
    104     aaabcxyzpqrrrabbxyyyypqqqqAzz
    105  0: aaabcxyzpqrrrabbxyyyypqqqqAzz
    106     aaabcxyzpqrrrabbxyyyypqqqqqAzz
    107  0: aaabcxyzpqrrrabbxyyyypqqqqqAzz
    108     aaabcxyzpqrrrabbxyyyypqqqqqqAzz
    109  0: aaabcxyzpqrrrabbxyyyypqqqqqqAzz
    110     aaaabcxyzpqrrrabbxyyyypqAzz
    111  0: aaaabcxyzpqrrrabbxyyyypqAzz
    112     abxyzzpqrrrabbxyyyypqAzz
    113  0: abxyzzpqrrrabbxyyyypqAzz
    114     aabxyzzzpqrrrabbxyyyypqAzz
    115  0: aabxyzzzpqrrrabbxyyyypqAzz
    116     aaabxyzzzzpqrrrabbxyyyypqAzz
    117  0: aaabxyzzzzpqrrrabbxyyyypqAzz
    118     aaaabxyzzzzpqrrrabbxyyyypqAzz
    119  0: aaaabxyzzzzpqrrrabbxyyyypqAzz
    120     abcxyzzpqrrrabbxyyyypqAzz
    121  0: abcxyzzpqrrrabbxyyyypqAzz
    122     aabcxyzzzpqrrrabbxyyyypqAzz
    123  0: aabcxyzzzpqrrrabbxyyyypqAzz
    124     aaabcxyzzzzpqrrrabbxyyyypqAzz
    125  0: aaabcxyzzzzpqrrrabbxyyyypqAzz
    126     aaaabcxyzzzzpqrrrabbxyyyypqAzz
    127  0: aaaabcxyzzzzpqrrrabbxyyyypqAzz
    128     aaaabcxyzzzzpqrrrabbbxyyyypqAzz
    129  0: aaaabcxyzzzzpqrrrabbbxyyyypqAzz
    130     aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
    131  0: aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
    132     aaabcxyzpqrrrabbxyyyypABzz
    133  0: aaabcxyzpqrrrabbxyyyypABzz
    134     aaabcxyzpqrrrabbxyyyypABBzz
    135  0: aaabcxyzpqrrrabbxyyyypABBzz
    136     >>>aaabxyzpqrrrabbxyyyypqAzz
    137  0: aaabxyzpqrrrabbxyyyypqAzz
    138     >aaaabxyzpqrrrabbxyyyypqAzz
    139  0: aaaabxyzpqrrrabbxyyyypqAzz
    140     >>>>abcxyzpqrrrabbxyyyypqAzz
    141  0: abcxyzpqrrrabbxyyyypqAzz
    142     *** Failers
    143 No match
    144     abxyzpqrrabbxyyyypqAzz
    145 No match
    146     abxyzpqrrrrabbxyyyypqAzz
    147 No match
    148     abxyzpqrrrabxyyyypqAzz
    149 No match
    150     aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
    151 No match
    152     aaaabcxyzzzzpqrrrabbbxyyypqAzz
    153 No match
    154     aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
    155 No match
    156 
    157 /^(abc){1,2}zz/
    158     abczz
    159  0: abczz
    160  1: abc
    161     abcabczz
    162  0: abcabczz
    163  1: abc
    164     *** Failers
    165 No match
    166     zz
    167 No match
    168     abcabcabczz
    169 No match
    170     >>abczz
    171 No match
    172 
    173 /^(b+|a){1,2}c/
    174     bc
    175  0: bc
    176  1: b
    177     bbc
    178  0: bbc
    179  1: bb
    180     bbbc
    181  0: bbbc
    182  1: bbb
    183     bac
    184  0: bac
    185  1: a
    186     bbac
    187  0: bbac
    188  1: a
    189     aac
    190  0: aac
    191  1: a
    192     abbbbbbbbbbbc
    193  0: abbbbbbbbbbbc
    194  1: bbbbbbbbbbb
    195     bbbbbbbbbbbac
    196  0: bbbbbbbbbbbac
    197  1: a
    198     *** Failers
    199 No match
    200     aaac
    201 No match
    202     abbbbbbbbbbbac
    203 No match
    204 
    205 /^[]cde]/
    206     ]thing
    207  0: ]
    208     cthing
    209  0: c
    210     dthing
    211  0: d
    212     ething
    213  0: e
    214     *** Failers
    215 No match
    216     athing
    217 No match
    218     fthing
    219 No match
    220 
    221 /^[^]cde]/
    222     athing
    223  0: a
    224     fthing
    225  0: f
    226     *** Failers
    227  0: *
    228     ]thing
    229 No match
    230     cthing
    231 No match
    232     dthing
    233 No match
    234     ething
    235 No match
    236 
    237 /^[0-9]+$/
    238     0
    239  0: 0
    240     1
    241  0: 1
    242     2
    243  0: 2
    244     3
    245  0: 3
    246     4
    247  0: 4
    248     5
    249  0: 5
    250     6
    251  0: 6
    252     7
    253  0: 7
    254     8
    255  0: 8
    256     9
    257  0: 9
    258     10
    259  0: 10
    260     100
    261  0: 100
    262     *** Failers
    263 No match
    264     abc
    265 No match
    266 
    267 /^.*nter/
    268     enter
    269  0: enter
    270     inter
    271  0: inter
    272     uponter
    273  0: uponter
    274 
    275 /^xxx[0-9]+$/
    276     xxx0
    277  0: xxx0
    278     xxx1234
    279  0: xxx1234
    280     *** Failers
    281 No match
    282     xxx
    283 No match
    284 
    285 /^.+[0-9][0-9][0-9]$/
    286     x123
    287  0: x123
    288     xx123
    289  0: xx123
    290     123456
    291  0: 123456
    292     *** Failers
    293 No match
    294     123
    295 No match
    296     x1234
    297  0: x1234
    298 
    299 /^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
    300     abc!pqr=apquxz.ixr.zzz.ac.uk
    301  0: abc!pqr=apquxz.ixr.zzz.ac.uk
    302  1: abc
    303  2: pqr
    304     *** Failers
    305 No match
    306     !pqr=apquxz.ixr.zzz.ac.uk
    307 No match
    308     abc!=apquxz.ixr.zzz.ac.uk
    309 No match
    310     abc!pqr=apquxz:ixr.zzz.ac.uk
    311 No match
    312     abc!pqr=apquxz.ixr.zzz.ac.ukk
    313 No match
    314 
    315 /:/
    316     Well, we need a colon: somewhere
    317  0: :
    318     *** Fail if we don't
    319 No match
    320 
    321 /([0-9a-f:]+)$/i
    322     0abc
    323  0: 0abc
    324  1: 0abc
    325     abc
    326  0: abc
    327  1: abc
    328     fed
    329  0: fed
    330  1: fed
    331     E
    332  0: E
    333  1: E
    334     ::
    335  0: ::
    336  1: ::
    337     5f03:12C0::932e
    338  0: 5f03:12C0::932e
    339  1: 5f03:12C0::932e
    340     fed def
    341  0: def
    342  1: def
    343     Any old stuff
    344  0: ff
    345  1: ff
    346     *** Failers
    347 No match
    348     0zzz
    349 No match
    350     gzzz
    351 No match
    352     Any old rubbish
    353 No match
    354 
    355 /^.*\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/
    356     .1.2.3
    357  0: .1.2.3
    358  1: 1
    359  2: 2
    360  3: 3
    361     A.12.123.0
    362  0: A.12.123.0
    363  1: 12
    364  2: 123
    365  3: 0
    366     *** Failers
    367 No match
    368     .1.2.3333
    369 No match
    370     1.2.3
    371 No match
    372     1234.2.3
    373 No match
    374 
    375 /^([0-9]+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
    376     1 IN SOA non-sp1 non-sp2(
    377  0: 1 IN SOA non-sp1 non-sp2(
    378  1: 1
    379  2: non-sp1
    380  3: non-sp2
    381     1    IN    SOA    non-sp1    non-sp2   (
    382  0: 1    IN    SOA    non-sp1    non-sp2   (
    383  1: 1
    384  2: non-sp1
    385  3: non-sp2
    386     *** Failers
    387 No match
    388     1IN SOA non-sp1 non-sp2(
    389 No match
    390 
    391 /^[a-zA-Z0-9][a-zA-Z0-9-]*(\.[a-zA-Z0-9][a-zA-z0-9-]*)*\.$/
    392     a.
    393  0: a.
    394     Z.
    395  0: Z.
    396     2.
    397  0: 2.
    398     ab-c.pq-r.
    399  0: ab-c.pq-r.
    400  1: .pq-r
    401     sxk.zzz.ac.uk.
    402  0: sxk.zzz.ac.uk.
    403  1: .uk
    404     x-.y-.
    405  0: x-.y-.
    406  1: .y-
    407     *** Failers
    408 No match
    409     -abc.peq.
    410 No match
    411 
    412 /^\*\.[a-z]([a-z0-9-]*[a-z0-9]+)?(\.[a-z]([a-z0-9-]*[a-z0-9]+)?)*$/
    413     *.a
    414  0: *.a
    415     *.b0-a
    416  0: *.b0-a
    417  1: 0-a
    418     *.c3-b.c
    419  0: *.c3-b.c
    420  1: 3-b
    421  2: .c
    422     *.c-a.b-c
    423  0: *.c-a.b-c
    424  1: -a
    425  2: .b-c
    426  3: -c
    427     *** Failers
    428 No match
    429     *.0
    430 No match
    431     *.a-
    432 No match
    433     *.a-b.c-
    434 No match
    435     *.c-a.0-c
    436 No match
    437 
    438 /^[0-9a-f](\.[0-9a-f])*$/i
    439     a.b.c.d
    440  0: a.b.c.d
    441  1: .d
    442     A.B.C.D
    443  0: A.B.C.D
    444  1: .D
    445     a.b.c.1.2.3.C
    446  0: a.b.c.1.2.3.C
    447  1: .C
    448 
    449 /^".*"\s*(;.*)?$/
    450     "1234"
    451  0: "1234"
    452     "abcd" ;
    453  0: "abcd" ;
    454  1: ;
    455     "" ; rhubarb
    456  0: "" ; rhubarb
    457  1: ; rhubarb
    458     *** Failers
    459 No match
    460     "1234" : things
    461 No match
    462 
    463 /^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
    464     abcdefhijklm
    465  0: abcdefhijklm
    466  1: abc
    467  2: bc
    468  3: c
    469  4: def
    470  5: ef
    471  6: f
    472  7: hij
    473  8: ij
    474  9: j
    475 10: klm
    476 11: lm
    477 12: m
    478 
    479 /^a*\w/
    480     z
    481  0: z
    482     az
    483  0: az
    484     aaaz
    485  0: aaaz
    486     a
    487  0: a
    488     aa
    489  0: aa
    490     aaaa
    491  0: aaaa
    492     a+
    493  0: a
    494     aa+
    495  0: aa
    496 
    497 /^a+\w/
    498     az
    499  0: az
    500     aaaz
    501  0: aaaz
    502     aa
    503  0: aa
    504     aaaa
    505  0: aaaa
    506     aa+
    507  0: aa
    508 
    509 /^[0-9]{8}\w{2,}/
    510     1234567890
    511  0: 1234567890
    512     12345678ab
    513  0: 12345678ab
    514     12345678__
    515  0: 12345678__
    516     *** Failers
    517 No match
    518     1234567
    519 No match
    520 
    521 /^[aeiou0-9]{4,5}$/
    522     uoie
    523  0: uoie
    524     1234
    525  0: 1234
    526     12345
    527  0: 12345
    528     aaaaa
    529  0: aaaaa
    530     *** Failers
    531 No match
    532     123456
    533 No match
    534 
    535 /\`(abc|def)=(\1){2,3}\'/
    536     abc=abcabc
    537  0: abc=abcabc
    538  1: abc
    539  2: abc
    540     def=defdefdef
    541  0: def=defdefdef
    542  1: def
    543  2: def
    544     *** Failers
    545 No match
    546     abc=defdef
    547 No match
    548 
    549 /(cat(a(ract|tonic)|erpillar)) \1()2(3)/
    550     cataract cataract23
    551  0: cataract cataract23
    552  1: cataract
    553  2: aract
    554  3: ract
    555  4: 
    556  5: 3
    557     catatonic catatonic23
    558  0: catatonic catatonic23
    559  1: catatonic
    560  2: atonic
    561  3: tonic
    562  4: 
    563  5: 3
    564     caterpillar caterpillar23
    565  0: caterpillar caterpillar23
    566  1: caterpillar
    567  2: erpillar
    568  3: <unset>
    569  4: 
    570  5: 3
    571 
    572 
    573 /^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]/
    574     From abcd  Mon Sep 01 12:33:02 1997
    575  0: From abcd  Mon Sep 01 12:33
    576  1: abcd
    577 
    578 /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}[0-9]{1,2}\s+[0-9][0-9]:[0-9][0-9]/
    579     From abcd  Mon Sep 01 12:33:02 1997
    580  0: From abcd  Mon Sep 01 12:33
    581  1: Sep 
    582     From abcd  Mon Sep  1 12:33:02 1997
    583  0: From abcd  Mon Sep  1 12:33
    584  1: Sep  
    585     *** Failers
    586 No match
    587     From abcd  Sep 01 12:33:02 1997
    588 No match
    589 
    590 /^(a)\1{2,3}(.)/
    591     aaab
    592  0: aaab
    593  1: a
    594  2: b
    595     aaaab
    596  0: aaaab
    597  1: a
    598  2: b
    599     aaaaab
    600  0: aaaaa
    601  1: a
    602  2: a
    603     aaaaaab
    604  0: aaaaa
    605  1: a
    606  2: a
    607 
    608 /^[ab]{1,3}(ab*|b)/
    609     aabbbbb
    610  0: aabbbbb
    611  1: abbbbb
    612 
    613 /^(cow|)\1(bell)/
    614     cowcowbell
    615  0: cowcowbell
    616  1: cow
    617  2: bell
    618     bell
    619  0: bell
    620  1: 
    621  2: bell
    622     *** Failers
    623 No match
    624     cowbell
    625 No match
    626 
    627 /^(a|)\1+b/
    628     aab
    629  0: aab
    630  1: a
    631     aaaab
    632  0: aaaab
    633  1: a
    634     b
    635  0: b
    636  1: 
    637     *** Failers
    638 No match
    639     ab
    640 No match
    641 
    642 /^(a|)\1{2}b/
    643     aaab
    644  0: aaab
    645  1: a
    646     b
    647  0: b
    648  1: 
    649     *** Failers
    650 No match
    651     ab
    652 No match
    653     aab
    654 No match
    655     aaaab
    656 No match
    657 
    658 /^(a|)\1{2,3}b/
    659     aaab
    660  0: aaab
    661  1: a
    662     aaaab
    663  0: aaaab
    664  1: a
    665     b
    666  0: b
    667  1: 
    668     *** Failers
    669 No match
    670     ab
    671 No match
    672     aab
    673 No match
    674     aaaaab
    675 No match
    676 
    677 /ab{1,3}bc/
    678     abbbbc
    679  0: abbbbc
    680     abbbc
    681  0: abbbc
    682     abbc
    683  0: abbc
    684     *** Failers
    685 No match
    686     abc
    687 No match
    688     abbbbbc
    689 No match
    690 
    691 /([^.]*)\.([^:]*):[T ]+(.*)/
    692     track1.title:TBlah blah blah
    693  0: track1.title:TBlah blah blah
    694  1: track1
    695  2: title
    696  3: Blah blah blah
    697 
    698 /([^.]*)\.([^:]*):[T ]+(.*)/i
    699     track1.title:TBlah blah blah
    700  0: track1.title:TBlah blah blah
    701  1: track1
    702  2: title
    703  3: Blah blah blah
    704 
    705 /([^.]*)\.([^:]*):[t ]+(.*)/i
    706     track1.title:TBlah blah blah
    707  0: track1.title:TBlah blah blah
    708  1: track1
    709  2: title
    710  3: Blah blah blah
    711 
    712 /^abc$/
    713     abc
    714  0: abc
    715     *** Failers
    716 No match
    717 
    718 /[-az]+/
    719     az-
    720  0: az-
    721     *** Failers
    722  0: a
    723     b
    724 No match
    725 
    726 /[az-]+/
    727     za-
    728  0: za-
    729     *** Failers
    730  0: a
    731     b
    732 No match
    733 
    734 /[a-z]+/
    735     abcdxyz
    736  0: abcdxyz
    737 
    738 /[0-9-]+/
    739     12-34
    740  0: 12-34
    741     *** Failers
    742 No match
    743     aaa
    744 No match
    745 
    746 /(abc)\1/i
    747     abcabc
    748  0: abcabc
    749  1: abc
    750     ABCabc
    751  0: ABCabc
    752  1: ABC
    753     abcABC
    754  0: abcABC
    755  1: abc
    756 
    757 /a{0}bc/
    758     bc
    759  0: bc
    760 
    761 /^([^a])([^b])([^c]*)([^d]{3,4})/
    762     baNOTccccd
    763  0: baNOTcccc
    764  1: b
    765  2: a
    766  3: NOT
    767  4: cccc
    768     baNOTcccd
    769  0: baNOTccc
    770  1: b
    771  2: a
    772  3: NOT
    773  4: ccc
    774     baNOTccd
    775  0: baNOTcc
    776  1: b
    777  2: a
    778  3: NO
    779  4: Tcc
    780     bacccd
    781  0: baccc
    782  1: b
    783  2: a
    784  3: 
    785  4: ccc
    786     *** Failers
    787  0: *** Failers
    788  1: *
    789  2: *
    790  3: * Fail
    791  4: ers
    792     anything
    793 No match
    794     baccd
    795 No match
    796 
    797 /[^a]/
    798     Abc
    799  0: A
    800 
    801 /[^a]/i
    802     Abc 
    803  0: b
    804 
    805 /[^a]+/
    806     AAAaAbc
    807  0: AAA
    808 
    809 /[^a]+/i
    810     AAAaAbc
    811  0: bc
    812 
    813 /[^k]$/
    814     abc
    815  0: c
    816     *** Failers
    817  0: s
    818     abk
    819 No match
    820 
    821 /[^k]{2,3}$/
    822     abc
    823  0: abc
    824     kbc
    825  0: bc
    826     kabc
    827  0: abc
    828     *** Failers
    829  0: ers
    830     abk
    831 No match
    832     akb
    833 No match
    834     akk 
    835 No match
    836 
    837 /^[0-9]{8,}@.+[^k]$/
    838     12345678 (a] a.b.c.d
    839  0: 12345678 (a] a.b.c.d
    840     123456789 (a] x.y.z
    841  0: 123456789 (a] x.y.z
    842     *** Failers
    843 No match
    844     12345678 (a] x.y.uk
    845 No match
    846     1234567 (a] a.b.c.d       
    847 No match
    848 
    849 /(a)\1{8,}/
    850     aaaaaaaaa
    851  0: aaaaaaaaa
    852  1: a
    853     aaaaaaaaaa
    854  0: aaaaaaaaaa
    855  1: a
    856     *** Failers
    857 No match
    858     aaaaaaa   
    859 No match
    860 
    861 /[^a]/
    862     aaaabcd
    863  0: b
    864     aaAabcd 
    865  0: A
    866 
    867 /[^a]/i
    868     aaaabcd
    869  0: b
    870     aaAabcd 
    871  0: b
    872 
    873 /[^az]/
    874     aaaabcd
    875  0: b
    876     aaAabcd 
    877  0: A
    878 
    879 /[^az]/i
    880     aaaabcd
    881  0: b
    882     aaAabcd 
    883  0: b
    884 
    885 /P[^*]TAIRE[^*]{1,6}LL/
    886     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
    887  0: PSTAIREISLL
    888 
    889 /P[^*]TAIRE[^*]{1,}LL/
    890     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
    891  0: PSTAIREISLL
    892 
    893 /(\.[0-9][0-9][1-9]?)[0-9]+/
    894     1.230003938
    895  0: .230003938
    896  1: .23
    897     1.875000282   
    898  0: .875000282
    899  1: .875
    900     1.235  
    901  0: .235
    902  1: .23
    903                   
    904 /\b(foo)\s+(\w+)/i
    905     Food is on the foo table
    906  0: foo table
    907  1: foo
    908  2: table
    909     
    910 /foo(.*)bar/
    911     The food is under the bar in the barn.
    912  0: food is under the bar in the bar
    913  1: d is under the bar in the 
    914     
    915 /(.*)([0-9]*)/
    916     I have 2 numbers: 53147
    917  0: I have 2 numbers: 53147
    918  1: I have 2 numbers: 53147
    919  2: 
    920     
    921 /(.*)([0-9]+)/
    922     I have 2 numbers: 53147
    923  0: I have 2 numbers: 53147
    924  1: I have 2 numbers: 5314
    925  2: 7
    926 
    927 /(.*)([0-9]+)$/
    928     I have 2 numbers: 53147
    929  0: I have 2 numbers: 53147
    930  1: I have 2 numbers: 5314
    931  2: 7
    932 
    933 /(.*)\b([0-9]+)$/
    934     I have 2 numbers: 53147
    935  0: I have 2 numbers: 53147
    936  1: I have 2 numbers: 
    937  2: 53147
    938 
    939 /(.*[^0-9])([0-9]+)$/
    940     I have 2 numbers: 53147
    941  0: I have 2 numbers: 53147
    942  1: I have 2 numbers: 
    943  2: 53147
    944 
    945 /[[:digit:]][[:digit:]]\/[[:digit:]][[:digit:]]\/[[:digit:]][[:digit:]][[:digit:]][[:digit:]]/
    946     01/01/2000
    947  0: 01/01/2000
    948 
    949 /^(a){0,0}/
    950     bcd
    951  0: 
    952     abc
    953  0: 
    954     aab     
    955  0: 
    956 
    957 /^(a){0,1}/
    958     bcd
    959  0: 
    960     abc
    961  0: a
    962  1: a
    963     aab  
    964  0: a
    965  1: a
    966 
    967 /^(a){0,2}/
    968     bcd
    969  0: 
    970     abc
    971  0: a
    972  1: a
    973     aab  
    974  0: aa
    975  1: a
    976 
    977 /^(a){0,3}/
    978     bcd
    979  0: 
    980     abc
    981  0: a
    982  1: a
    983     aab
    984  0: aa
    985  1: a
    986     aaa   
    987  0: aaa
    988  1: a
    989 
    990 /^(a){0,}/
    991     bcd
    992  0: 
    993     abc
    994  0: a
    995  1: a
    996     aab
    997  0: aa
    998  1: a
    999     aaa
   1000  0: aaa
   1001  1: a
   1002     aaaaaaaa    
   1003  0: aaaaaaaa
   1004  1: a
   1005 
   1006 /^(a){1,1}/
   1007     bcd
   1008 No match
   1009     abc
   1010  0: a
   1011  1: a
   1012     aab  
   1013  0: a
   1014  1: a
   1015 
   1016 /^(a){1,2}/
   1017     bcd
   1018 No match
   1019     abc
   1020  0: a
   1021  1: a
   1022     aab  
   1023  0: aa
   1024  1: a
   1025 
   1026 /^(a){1,3}/
   1027     bcd
   1028 No match
   1029     abc
   1030  0: a
   1031  1: a
   1032     aab
   1033  0: aa
   1034  1: a
   1035     aaa   
   1036  0: aaa
   1037  1: a
   1038 
   1039 /^(a){1,}/
   1040     bcd
   1041 No match
   1042     abc
   1043  0: a
   1044  1: a
   1045     aab
   1046  0: aa
   1047  1: a
   1048     aaa
   1049  0: aaa
   1050  1: a
   1051     aaaaaaaa    
   1052  0: aaaaaaaa
   1053  1: a
   1054 
   1055 /^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
   1056     123456654321
   1057  0: 123456654321
   1058 
   1059 /^[[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]]/
   1060     123456654321 
   1061  0: 123456654321
   1062 
   1063 /^[abc]{12}/
   1064     abcabcabcabc
   1065  0: abcabcabcabc
   1066     
   1067 /^[a-c]{12}/
   1068     abcabcabcabc
   1069  0: abcabcabcabc
   1070     
   1071 /^(a|b|c){12}/
   1072     abcabcabcabc 
   1073  0: abcabcabcabc
   1074  1: c
   1075 
   1076 /^[abcdefghijklmnopqrstuvwxy0123456789]/
   1077     n
   1078  0: n
   1079     *** Failers 
   1080 No match
   1081     z 
   1082 No match
   1083 
   1084 /abcde{0,0}/
   1085     abcd
   1086  0: abcd
   1087     *** Failers
   1088 No match
   1089     abce  
   1090 No match
   1091 
   1092 /ab[cd]{0,0}e/
   1093     abe
   1094  0: abe
   1095     *** Failers
   1096 No match
   1097     abcde 
   1098 No match
   1099     
   1100 /ab(c){0,0}d/
   1101     abd
   1102  0: abd
   1103     *** Failers
   1104 No match
   1105     abcd   
   1106 No match
   1107 
   1108 /a(b*)/
   1109     a
   1110  0: a
   1111  1: 
   1112     ab
   1113  0: ab
   1114  1: b
   1115     abbbb
   1116  0: abbbb
   1117  1: bbbb
   1118     *** Failers
   1119  0: a
   1120  1: 
   1121     bbbbb    
   1122 No match
   1123     
   1124 /ab[0-9]{0}e/
   1125     abe
   1126  0: abe
   1127     *** Failers
   1128 No match
   1129     ab1e   
   1130 No match
   1131     
   1132 /(A|B)*CD/
   1133     CD 
   1134  0: CD
   1135 
   1136 /(AB)*\1/
   1137     ABABAB
   1138  0: ABABAB
   1139  1: AB
   1140     
   1141 /([0-9]+)(\w)/
   1142     12345a
   1143  0: 12345a
   1144  1: 12345
   1145  2: a
   1146     12345+ 
   1147  0: 12345
   1148  1: 1234
   1149  2: 5
   1150 
   1151 /(abc|)+/
   1152     abc
   1153  0: abc
   1154  1: abc
   1155     abcabc
   1156  0: abcabc
   1157  1: abc
   1158     abcabcabc
   1159  0: abcabcabc
   1160  1: abc
   1161     xyz      
   1162  0: 
   1163  1: 
   1164 
   1165 /([a]*)*/
   1166     a
   1167  0: a
   1168  1: a
   1169     aaaaa 
   1170  0: aaaaa
   1171  1: aaaaa
   1172 
   1173 /([ab]*)*/
   1174     a
   1175  0: a
   1176  1: a
   1177     b
   1178  0: b
   1179  1: b
   1180     ababab
   1181  0: ababab
   1182  1: ababab
   1183     aaaabcde
   1184  0: aaaab
   1185  1: aaaab
   1186     bbbb    
   1187  0: bbbb
   1188  1: bbbb
   1189 
   1190 /([^a]*)*/
   1191     b
   1192  0: b
   1193  1: b
   1194     bbbb
   1195  0: bbbb
   1196  1: bbbb
   1197     aaa   
   1198  0: 
   1199 
   1200 /([^ab]*)*/
   1201     cccc
   1202  0: cccc
   1203  1: cccc
   1204     abab  
   1205  0: 
   1206 
   1207 /abc/
   1208     abc
   1209  0: abc
   1210     xabcy
   1211  0: abc
   1212     ababc
   1213  0: abc
   1214     *** Failers
   1215 No match
   1216     xbc
   1217 No match
   1218     axc
   1219 No match
   1220     abx
   1221 No match
   1222 
   1223 /ab*c/
   1224     abc
   1225  0: abc
   1226 
   1227 /ab*bc/
   1228     abc
   1229  0: abc
   1230     abbc
   1231  0: abbc
   1232     abbbbc
   1233  0: abbbbc
   1234 
   1235 /.{1}/
   1236     abbbbc
   1237  0: a
   1238 
   1239 /.{3,4}/
   1240     abbbbc
   1241  0: abbb
   1242 
   1243 /ab{0,}bc/
   1244     abbbbc
   1245  0: abbbbc
   1246 
   1247 /ab+bc/
   1248     abbc
   1249  0: abbc
   1250     *** Failers
   1251 No match
   1252     abc
   1253 No match
   1254     abq
   1255 No match
   1256 
   1257 /ab+bc/
   1258     abbbbc
   1259  0: abbbbc
   1260 
   1261 /ab{1,}bc/
   1262     abbbbc
   1263  0: abbbbc
   1264 
   1265 /ab{1,3}bc/
   1266     abbbbc
   1267  0: abbbbc
   1268 
   1269 /ab{3,4}bc/
   1270     abbbbc
   1271  0: abbbbc
   1272 
   1273 /ab{4,5}bc/
   1274     *** Failers
   1275 No match
   1276     abq
   1277 No match
   1278     abbbbc
   1279 No match
   1280 
   1281 /ab?bc/
   1282     abbc
   1283  0: abbc
   1284     abc
   1285  0: abc
   1286 
   1287 /ab{0,1}bc/
   1288     abc
   1289  0: abc
   1290 
   1291 /ab?c/
   1292     abc
   1293  0: abc
   1294 
   1295 /ab{0,1}c/
   1296     abc
   1297  0: abc
   1298 
   1299 /^abc$/
   1300     abc
   1301  0: abc
   1302     *** Failers
   1303 No match
   1304     abbbbc
   1305 No match
   1306     abcc
   1307 No match
   1308 
   1309 /^abc/
   1310     abcc
   1311  0: abc
   1312 
   1313 /abc$/
   1314     aabc
   1315  0: abc
   1316     *** Failers
   1317 No match
   1318     aabc
   1319  0: abc
   1320     aabcd
   1321 No match
   1322 
   1323 /^/
   1324     abc
   1325  0: 
   1326 
   1327 /$/
   1328     abc
   1329  0: 
   1330 
   1331 /a.c/
   1332     abc
   1333  0: abc
   1334     axc
   1335  0: axc
   1336 
   1337 /a.*c/
   1338     axyzc
   1339  0: axyzc
   1340 
   1341 /a[bc]d/
   1342     abd
   1343  0: abd
   1344     *** Failers
   1345 No match
   1346     axyzd
   1347 No match
   1348     abc
   1349 No match
   1350 
   1351 /a[b-d]e/
   1352     ace
   1353  0: ace
   1354 
   1355 /a[b-d]/
   1356     aac
   1357  0: ac
   1358 
   1359 /a[-b]/
   1360     a-
   1361  0: a-
   1362 
   1363 /a[b-]/
   1364     a-
   1365  0: a-
   1366 
   1367 /a[]]b/
   1368     a]b
   1369  0: a]b
   1370 
   1371 /a[^bc]d/
   1372     aed
   1373  0: aed
   1374     *** Failers
   1375 No match
   1376     abd
   1377 No match
   1378     abd
   1379 No match
   1380 
   1381 /a[^-b]c/
   1382     adc
   1383  0: adc
   1384 
   1385 /a[^]b]c/
   1386     adc
   1387  0: adc
   1388     *** Failers
   1389 No match
   1390     a-c
   1391  0: a-c
   1392     a]c
   1393 No match
   1394 
   1395 /\ba\b/
   1396     a-
   1397  0: a
   1398     -a
   1399  0: a
   1400     -a-
   1401  0: a
   1402 
   1403 /\by\b/
   1404     *** Failers
   1405 No match
   1406     xy
   1407 No match
   1408     yz
   1409 No match
   1410     xyz
   1411 No match
   1412 
   1413 /\Ba\B/
   1414     *** Failers
   1415  0: a
   1416     a-
   1417 No match
   1418     -a
   1419 No match
   1420     -a-
   1421 No match
   1422 
   1423 /\By\b/
   1424     xy
   1425  0: y
   1426 
   1427 /\by\B/
   1428     yz
   1429  0: y
   1430 
   1431 /\By\B/
   1432     xyz
   1433  0: y
   1434 
   1435 /\w/
   1436     a
   1437  0: a
   1438 
   1439 /\W/
   1440     -
   1441  0: -
   1442     *** Failers
   1443  0: *
   1444     -
   1445  0: -
   1446     a
   1447 No match
   1448 
   1449 /a\sb/
   1450     a b
   1451  0: a b
   1452 
   1453 /a\Sb/
   1454     a-b
   1455  0: a-b
   1456     *** Failers
   1457 No match
   1458     a-b
   1459  0: a-b
   1460     a b
   1461 No match
   1462 
   1463 /[0-9]/
   1464     1
   1465  0: 1
   1466 
   1467 /[^0-9]/
   1468     -
   1469  0: -
   1470     *** Failers
   1471  0: *
   1472     -
   1473  0: -
   1474     1
   1475 No match
   1476 
   1477 /ab|cd/
   1478     abc
   1479  0: ab
   1480     abcd
   1481  0: ab
   1482 
   1483 /()ef/
   1484     def
   1485  0: ef
   1486  1: 
   1487 
   1488 /a\(b/
   1489     a(b
   1490  0: a(b
   1491 
   1492 /a\(*b/
   1493     ab
   1494  0: ab
   1495     a((b
   1496  0: a((b
   1497 
   1498 /((a))/
   1499     abc
   1500  0: a
   1501  1: a
   1502  2: a
   1503 
   1504 /(a)b(c)/
   1505     abc
   1506  0: abc
   1507  1: a
   1508  2: c
   1509 
   1510 /a+b+c/
   1511     aabbabc
   1512  0: abc
   1513 
   1514 /a{1,}b{1,}c/
   1515     aabbabc
   1516  0: abc
   1517 
   1518 /(a+|b)*/
   1519     ab
   1520  0: ab
   1521  1: b
   1522 
   1523 /(a+|b){0,}/
   1524     ab
   1525  0: ab
   1526  1: b
   1527 
   1528 /(a+|b)+/
   1529     ab
   1530  0: ab
   1531  1: b
   1532 
   1533 /(a+|b){1,}/
   1534     ab
   1535  0: ab
   1536  1: b
   1537 
   1538 /(a+|b)?/
   1539     ab
   1540  0: a
   1541  1: a
   1542 
   1543 /(a+|b){0,1}/
   1544     ab
   1545  0: a
   1546  1: a
   1547 
   1548 /[^ab]*/
   1549     cde
   1550  0: cde
   1551 
   1552 /abc/
   1553     *** Failers
   1554 No match
   1555     b
   1556 No match
   1557     
   1558 
   1559 /a*/
   1560     
   1561 
   1562 /([abc])*d/
   1563     abbbcd
   1564  0: abbbcd
   1565  1: c
   1566 
   1567 /([abc])*bcd/
   1568     abcd
   1569  0: abcd
   1570  1: a
   1571 
   1572 /a|b|c|d|e/
   1573     e
   1574  0: e
   1575 
   1576 /(a|b|c|d|e)f/
   1577     ef
   1578  0: ef
   1579  1: e
   1580 
   1581 /abcd*efg/
   1582     abcdefg
   1583  0: abcdefg
   1584 
   1585 /ab*/
   1586     xabyabbbz
   1587  0: ab
   1588     xayabbbz
   1589  0: a
   1590 
   1591 /(ab|cd)e/
   1592     abcde
   1593  0: cde
   1594  1: cd
   1595 
   1596 /[abhgefdc]ij/
   1597     hij
   1598  0: hij
   1599 
   1600 /(abc|)ef/
   1601     abcdef
   1602  0: ef
   1603  1: 
   1604 
   1605 /(a|b)c*d/
   1606     abcd
   1607  0: bcd
   1608  1: b
   1609 
   1610 /(ab|ab*)bc/
   1611     abc
   1612  0: abc
   1613  1: a
   1614 
   1615 /a([bc]*)c*/
   1616     abc
   1617  0: abc
   1618  1: bc
   1619 
   1620 /a([bc]*)(c*d)/
   1621     abcd
   1622  0: abcd
   1623  1: bc
   1624  2: d
   1625 
   1626 /a([bc]+)(c*d)/
   1627     abcd
   1628  0: abcd
   1629  1: bc
   1630  2: d
   1631 
   1632 /a([bc]*)(c+d)/
   1633     abcd
   1634  0: abcd
   1635  1: b
   1636  2: cd
   1637 
   1638 /a[bcd]*dcdcde/
   1639     adcdcde
   1640  0: adcdcde
   1641 
   1642 /a[bcd]+dcdcde/
   1643     *** Failers
   1644 No match
   1645     abcde
   1646 No match
   1647     adcdcde
   1648 No match
   1649 
   1650 /(ab|a)b*c/
   1651     abc
   1652  0: abc
   1653  1: ab
   1654 
   1655 /((a)(b)c)(d)/
   1656     abcd
   1657  0: abcd
   1658  1: abc
   1659  2: a
   1660  3: b
   1661  4: d
   1662 
   1663 /[a-zA-Z_][a-zA-Z0-9_]*/
   1664     alpha
   1665  0: alpha
   1666 
   1667 /^a(bc+|b[eh])g|.h$/
   1668     abh
   1669  0: bh
   1670 
   1671 /(bc+d$|ef*g.|h?i(j|k))/
   1672     effgz
   1673  0: effgz
   1674  1: effgz
   1675     ij
   1676  0: ij
   1677  1: ij
   1678  2: j
   1679     reffgz
   1680  0: effgz
   1681  1: effgz
   1682     *** Failers
   1683 No match
   1684     effg
   1685 No match
   1686     bcdd
   1687 No match
   1688 
   1689 /((((((((((a))))))))))/
   1690     a
   1691  0: a
   1692  1: a
   1693  2: a
   1694  3: a
   1695  4: a
   1696  5: a
   1697  6: a
   1698  7: a
   1699  8: a
   1700  9: a
   1701 10: a
   1702 
   1703 /((((((((((a))))))))))\9/
   1704     aa
   1705  0: aa
   1706  1: a
   1707  2: a
   1708  3: a
   1709  4: a
   1710  5: a
   1711  6: a
   1712  7: a
   1713  8: a
   1714  9: a
   1715 10: a
   1716 
   1717 /(((((((((a)))))))))/
   1718     a
   1719  0: a
   1720  1: a
   1721  2: a
   1722  3: a
   1723  4: a
   1724  5: a
   1725  6: a
   1726  7: a
   1727  8: a
   1728  9: a
   1729 
   1730 /multiple words of text/
   1731     *** Failers
   1732 No match
   1733     aa
   1734 No match
   1735     uh-uh
   1736 No match
   1737 
   1738 /multiple words/
   1739     multiple words, yeah
   1740  0: multiple words
   1741 
   1742 /(.*)c(.*)/
   1743     abcde
   1744  0: abcde
   1745  1: ab
   1746  2: de
   1747 
   1748 /\((.*), (.*)\)/
   1749     (a, b)
   1750  0: (a, b)
   1751  1: a
   1752  2: b
   1753 
   1754 /abcd/
   1755     abcd
   1756  0: abcd
   1757 
   1758 /a(bc)d/
   1759     abcd
   1760  0: abcd
   1761  1: bc
   1762 
   1763 /a[-]?c/
   1764     ac
   1765  0: ac
   1766 
   1767 /(abc)\1/
   1768     abcabc
   1769  0: abcabc
   1770  1: abc
   1771 
   1772 /([a-c]*)\1/
   1773     abcabc
   1774  0: abcabc
   1775  1: abc
   1776 
   1777 /(a)|\1/
   1778     a
   1779  0: a
   1780  1: a
   1781     *** Failers
   1782  0: a
   1783  1: a
   1784     ab
   1785  0: a
   1786  1: a
   1787     x
   1788 No match
   1789 
   1790 /abc/i
   1791     ABC
   1792  0: ABC
   1793     XABCY
   1794  0: ABC
   1795     ABABC
   1796  0: ABC
   1797     *** Failers
   1798 No match
   1799     aaxabxbaxbbx
   1800 No match
   1801     XBC
   1802 No match
   1803     AXC
   1804 No match
   1805     ABX
   1806 No match
   1807 
   1808 /ab*c/i
   1809     ABC
   1810  0: ABC
   1811 
   1812 /ab*bc/i
   1813     ABC
   1814  0: ABC
   1815     ABBC
   1816  0: ABBC
   1817 
   1818 /ab+bc/i
   1819     *** Failers
   1820 No match
   1821     ABC
   1822 No match
   1823     ABQ
   1824 No match
   1825 
   1826 /ab+bc/i
   1827     ABBBBC
   1828  0: ABBBBC
   1829 
   1830 /^abc$/i
   1831     ABC
   1832  0: ABC
   1833     *** Failers
   1834 No match
   1835     ABBBBC
   1836 No match
   1837     ABCC
   1838 No match
   1839 
   1840 /^abc/i
   1841     ABCC
   1842  0: ABC
   1843 
   1844 /abc$/i
   1845     AABC
   1846  0: ABC
   1847 
   1848 /^/i
   1849     ABC
   1850  0: 
   1851 
   1852 /$/i
   1853     ABC
   1854  0: 
   1855 
   1856 /a.c/i
   1857     ABC
   1858  0: ABC
   1859     AXC
   1860  0: AXC
   1861 
   1862 /a.*c/i
   1863     *** Failers
   1864 No match
   1865     AABC
   1866  0: AABC
   1867     AXYZD
   1868 No match
   1869 
   1870 /a[bc]d/i
   1871     ABD
   1872  0: ABD
   1873 
   1874 /a[b-d]e/i
   1875     ACE
   1876  0: ACE
   1877     *** Failers
   1878 No match
   1879     ABC
   1880 No match
   1881     ABD
   1882 No match
   1883 
   1884 /a[b-d]/i
   1885     AAC
   1886  0: AC
   1887 
   1888 /a[-b]/i
   1889     A-
   1890  0: A-
   1891 
   1892 /a[b-]/i
   1893     A-
   1894  0: A-
   1895 
   1896 /a[]]b/i
   1897     A]B
   1898  0: A]B
   1899 
   1900 /a[^bc]d/i
   1901     AED
   1902  0: AED
   1903 
   1904 /a[^-b]c/i
   1905     ADC
   1906  0: ADC
   1907     *** Failers
   1908 No match
   1909     ABD
   1910 No match
   1911     A-C
   1912 No match
   1913 
   1914 /a[^]b]c/i
   1915     ADC
   1916  0: ADC
   1917 
   1918 /ab|cd/i
   1919     ABC
   1920  0: AB
   1921     ABCD
   1922  0: AB
   1923 
   1924 /()ef/i
   1925     DEF
   1926  0: EF
   1927  1: 
   1928 
   1929 /$b/i
   1930     *** Failers
   1931 No match
   1932     A]C
   1933 No match
   1934     B
   1935 No match
   1936 
   1937 /a\(b/i
   1938     A(B
   1939  0: A(B
   1940 
   1941 /a\(*b/i
   1942     AB
   1943  0: AB
   1944     A((B
   1945  0: A((B
   1946 
   1947 /((a))/i
   1948     ABC
   1949  0: A
   1950  1: A
   1951  2: A
   1952 
   1953 /(a)b(c)/i
   1954     ABC
   1955  0: ABC
   1956  1: A
   1957  2: C
   1958 
   1959 /a+b+c/i
   1960     AABBABC
   1961  0: ABC
   1962 
   1963 /a{1,}b{1,}c/i
   1964     AABBABC
   1965  0: ABC
   1966 
   1967 /(a+|b)*/i
   1968     AB
   1969  0: AB
   1970  1: B
   1971 
   1972 /(a+|b){0,}/i
   1973     AB
   1974  0: AB
   1975  1: B
   1976 
   1977 /(a+|b)+/i
   1978     AB
   1979  0: AB
   1980  1: B
   1981 
   1982 /(a+|b){1,}/i
   1983     AB
   1984  0: AB
   1985  1: B
   1986 
   1987 /(a+|b)?/i
   1988     AB
   1989  0: A
   1990  1: A
   1991 
   1992 /(a+|b){0,1}/i
   1993     AB
   1994  0: A
   1995  1: A
   1996 
   1997 /[^ab]*/i
   1998     CDE
   1999  0: CDE
   2000 
   2001 /([abc])*d/i
   2002     ABBBCD
   2003  0: ABBBCD
   2004  1: C
   2005 
   2006 /([abc])*bcd/i
   2007     ABCD
   2008  0: ABCD
   2009  1: A
   2010 
   2011 /a|b|c|d|e/i
   2012     E
   2013  0: E
   2014 
   2015 /(a|b|c|d|e)f/i
   2016     EF
   2017  0: EF
   2018  1: E
   2019 
   2020 /abcd*efg/i
   2021     ABCDEFG
   2022  0: ABCDEFG
   2023 
   2024 /ab*/i
   2025     XABYABBBZ
   2026  0: AB
   2027     XAYABBBZ
   2028  0: A
   2029 
   2030 /(ab|cd)e/i
   2031     ABCDE
   2032  0: CDE
   2033  1: CD
   2034 
   2035 /[abhgefdc]ij/i
   2036     HIJ
   2037  0: HIJ
   2038 
   2039 /^(ab|cd)e/i
   2040     ABCDE
   2041 No match
   2042 
   2043 /(abc|)ef/i
   2044     ABCDEF
   2045  0: EF
   2046  1: 
   2047 
   2048 /(a|b)c*d/i
   2049     ABCD
   2050  0: BCD
   2051  1: B
   2052 
   2053 /(ab|ab*)bc/i
   2054     ABC
   2055  0: ABC
   2056  1: A
   2057 
   2058 /a([bc]*)c*/i
   2059     ABC
   2060  0: ABC
   2061  1: BC
   2062 
   2063 /a([bc]*)(c*d)/i
   2064     ABCD
   2065  0: ABCD
   2066  1: BC
   2067  2: D
   2068 
   2069 /a([bc]+)(c*d)/i
   2070     ABCD
   2071  0: ABCD
   2072  1: BC
   2073  2: D
   2074 
   2075 /a([bc]*)(c+d)/i
   2076     ABCD
   2077  0: ABCD
   2078  1: B
   2079  2: CD
   2080 
   2081 /a[bcd]*dcdcde/i
   2082     ADCDCDE
   2083  0: ADCDCDE
   2084 
   2085 /a[bcd]+dcdcde/i
   2086 
   2087 /(ab|a)b*c/i
   2088     ABC
   2089  0: ABC
   2090  1: AB
   2091 
   2092 /((a)(b)c)(d)/i
   2093     ABCD
   2094  0: ABCD
   2095  1: ABC
   2096  2: A
   2097  3: B
   2098  4: D
   2099 
   2100 /[a-zA-Z_][a-zA-Z0-9_]*/i
   2101     ALPHA
   2102  0: ALPHA
   2103 
   2104 /^a(bc+|b[eh])g|.h$/i
   2105     ABH
   2106  0: BH
   2107 
   2108 /(bc+d$|ef*g.|h?i(j|k))/i
   2109     EFFGZ
   2110  0: EFFGZ
   2111  1: EFFGZ
   2112     IJ
   2113  0: IJ
   2114  1: IJ
   2115  2: J
   2116     REFFGZ
   2117  0: EFFGZ
   2118  1: EFFGZ
   2119     *** Failers
   2120 No match
   2121     ADCDCDE
   2122 No match
   2123     EFFG
   2124 No match
   2125     BCDD
   2126 No match
   2127 
   2128 /((((((((((a))))))))))/i
   2129     A
   2130  0: A
   2131  1: A
   2132  2: A
   2133  3: A
   2134  4: A
   2135  5: A
   2136  6: A
   2137  7: A
   2138  8: A
   2139  9: A
   2140 10: A
   2141 
   2142 /((((((((((a))))))))))\9/i
   2143     AA
   2144  0: AA
   2145  1: A
   2146  2: A
   2147  3: A
   2148  4: A
   2149  5: A
   2150  6: A
   2151  7: A
   2152  8: A
   2153  9: A
   2154 10: A
   2155 
   2156 /(((((((((a)))))))))/i
   2157     A
   2158  0: A
   2159  1: A
   2160  2: A
   2161  3: A
   2162  4: A
   2163  5: A
   2164  6: A
   2165  7: A
   2166  8: A
   2167  9: A
   2168 
   2169 /multiple words of text/i
   2170     *** Failers
   2171 No match
   2172     AA
   2173 No match
   2174     UH-UH
   2175 No match
   2176 
   2177 /multiple words/i
   2178     MULTIPLE WORDS, YEAH
   2179  0: MULTIPLE WORDS
   2180 
   2181 /(.*)c(.*)/i
   2182     ABCDE
   2183  0: ABCDE
   2184  1: AB
   2185  2: DE
   2186 
   2187 /\((.*), (.*)\)/i
   2188     (A, B)
   2189  0: (A, B)
   2190  1: A
   2191  2: B
   2192 
   2193 /abcd/i
   2194     ABCD
   2195  0: ABCD
   2196 
   2197 /a(bc)d/i
   2198     ABCD
   2199  0: ABCD
   2200  1: BC
   2201 
   2202 /a[-]?c/i
   2203     AC
   2204  0: AC
   2205 
   2206 /(abc)\1/i
   2207     ABCABC
   2208  0: ABCABC
   2209  1: ABC
   2210 
   2211 /([a-c]*)\1/i
   2212     ABCABC
   2213  0: ABCABC
   2214  1: ABC
   2215 
   2216 /((foo)|(bar))*/
   2217     foobar
   2218  0: foobar
   2219  1: bar
   2220  2: foo
   2221  3: bar
   2222 
   2223 /^(.+)?B/
   2224     AB
   2225  0: AB
   2226  1: A
   2227 
   2228 /^([^a-z])|(\^)$/
   2229     .
   2230  0: .
   2231  1: .
   2232 
   2233 /^[<>]&/
   2234     <&OUT
   2235  0: <&
   2236 
   2237 /^(){3,5}/
   2238     abc
   2239  0: 
   2240  1: 
   2241 
   2242 /^(a+)*ax/
   2243     aax
   2244  0: aax
   2245  1: a
   2246 
   2247 /^((a|b)+)*ax/
   2248     aax
   2249  0: aax
   2250  1: a
   2251  2: a
   2252 
   2253 /^((a|bc)+)*ax/
   2254     aax
   2255  0: aax
   2256  1: a
   2257  2: a
   2258 
   2259 /(a|x)*ab/
   2260     cab
   2261  0: ab
   2262 
   2263 /(a)*ab/
   2264     cab
   2265  0: ab
   2266 
   2267 /(ab)[0-9]\1/i
   2268     Ab4ab
   2269  0: Ab4ab
   2270  1: Ab
   2271     ab4Ab
   2272  0: ab4Ab
   2273  1: ab
   2274 
   2275 /foo\w*[0-9]{4}baz/
   2276     foobar1234baz
   2277  0: foobar1234baz
   2278 
   2279 /(\w+:)+/
   2280     one:
   2281  0: one:
   2282  1: one:
   2283 
   2284 /((\w|:)+::)?(\w+)$/
   2285     abcd
   2286  0: abcd
   2287  1: <unset>
   2288  2: <unset>
   2289  3: abcd
   2290     xy:z:::abcd
   2291  0: xy:z:::abcd
   2292  1: xy:z:::
   2293  2: :
   2294  3: abcd
   2295 
   2296 /^[^bcd]*(c+)/
   2297     aexycd
   2298  0: aexyc
   2299  1: c
   2300 
   2301 /(a*)b+/
   2302     caab
   2303  0: aab
   2304  1: aa
   2305 
   2306 /((\w|:)+::)?(\w+)$/
   2307     abcd
   2308  0: abcd
   2309  1: <unset>
   2310  2: <unset>
   2311  3: abcd
   2312     xy:z:::abcd
   2313  0: xy:z:::abcd
   2314  1: xy:z:::
   2315  2: :
   2316  3: abcd
   2317     *** Failers
   2318  0: Failers
   2319  1: <unset>
   2320  2: <unset>
   2321  3: Failers
   2322     abcd:
   2323 No match
   2324     abcd:
   2325 No match
   2326 
   2327 /^[^bcd]*(c+)/
   2328     aexycd
   2329  0: aexyc
   2330  1: c
   2331 
   2332 /((Z)+|A)*/
   2333     ZABCDEFG
   2334  0: ZA
   2335  1: A
   2336  2: Z
   2337 
   2338 /(Z()|A)*/
   2339     ZABCDEFG
   2340  0: ZA
   2341  1: A
   2342  2: 
   2343 
   2344 /(Z(())|A)*/
   2345     ZABCDEFG
   2346  0: ZA
   2347  1: A
   2348  2: 
   2349  3: 
   2350 
   2351 /(.*)[0-9]+\1/
   2352     abc123abc
   2353  0: abc123abc
   2354  1: abc
   2355     abc123bc 
   2356  0: bc123bc
   2357  1: bc
   2358 
   2359 /((.*))[0-9]+\1/
   2360     abc123abc
   2361  0: abc123abc
   2362  1: abc
   2363  2: abc
   2364     abc123bc  
   2365  0: bc123bc
   2366  1: bc
   2367  2: bc
   2368 
   2369 /^a{2,5}$/
   2370     aa
   2371  0: aa
   2372     aaa
   2373  0: aaa
   2374     aaaa
   2375  0: aaaa
   2376     aaaaa
   2377  0: aaaaa
   2378     *** Failers
   2379 No match
   2380     a
   2381 No match
   2382     b
   2383 No match
   2384     aaaaab
   2385 No match
   2386     aaaaaa
   2387