Annotation of embedaddon/php/ext/pcre/pcrelib/testdata/testoutput1, revision 1.1

1.1     ! misho       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@dom.ain>
        !          1138:     <user\@dom.ain>
        !          1139:  0: user@dom.ain
        !          1140:     user\@dom.ain
        !          1141:  0: user@dom.ain
        !          1142:     \"A. Other\" <user.1234\@dom.ain> (a comment)
        !          1143:  0: "A. Other" <user.1234@dom.ain> (a comment)
        !          1144:     A. Other <user.1234\@dom.ain> (a comment)
        !          1145:  0:  Other <user.1234@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@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@dom.ain>
        !          1739:     <user\@dom.ain>
        !          1740:  0: user@dom.ain
        !          1741:     user\@dom.ain
        !          1742:  0: user@dom.ain
        !          1743:     \"A. Other\" <user.1234\@dom.ain> (a comment)
        !          1744:  0: "A. Other" <user.1234@dom.ain>
        !          1745:     A. Other <user.1234\@dom.ain> (a comment)
        !          1746:  0:  Other <user.1234@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@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
        !          1824:     abc
        !          1825:  0: abc
        !          1826: 
        !          1827: /^(a|)\1*b/
        !          1828:     ab
        !          1829:  0: ab
        !          1830:  1: a
        !          1831:     aaaab
        !          1832:  0: aaaab
        !          1833:  1: a
        !          1834:     b
        !          1835:  0: b
        !          1836:  1: 
        !          1837:     *** Failers
        !          1838: No match
        !          1839:     acb
        !          1840: No match
        !          1841: 
        !          1842: /^(a|)\1+b/
        !          1843:     aab
        !          1844:  0: aab
        !          1845:  1: a
        !          1846:     aaaab
        !          1847:  0: aaaab
        !          1848:  1: a
        !          1849:     b
        !          1850:  0: b
        !          1851:  1: 
        !          1852:     *** Failers
        !          1853: No match
        !          1854:     ab
        !          1855: No match
        !          1856: 
        !          1857: /^(a|)\1?b/
        !          1858:     ab
        !          1859:  0: ab
        !          1860:  1: a
        !          1861:     aab
        !          1862:  0: aab
        !          1863:  1: a
        !          1864:     b
        !          1865:  0: b
        !          1866:  1: 
        !          1867:     *** Failers
        !          1868: No match
        !          1869:     acb
        !          1870: No match
        !          1871: 
        !          1872: /^(a|)\1{2}b/
        !          1873:     aaab
        !          1874:  0: aaab
        !          1875:  1: a
        !          1876:     b
        !          1877:  0: b
        !          1878:  1: 
        !          1879:     *** Failers
        !          1880: No match
        !          1881:     ab
        !          1882: No match
        !          1883:     aab
        !          1884: No match
        !          1885:     aaaab
        !          1886: No match
        !          1887: 
        !          1888: /^(a|)\1{2,3}b/
        !          1889:     aaab
        !          1890:  0: aaab
        !          1891:  1: a
        !          1892:     aaaab
        !          1893:  0: aaaab
        !          1894:  1: a
        !          1895:     b
        !          1896:  0: b
        !          1897:  1: 
        !          1898:     *** Failers
        !          1899: No match
        !          1900:     ab
        !          1901: No match
        !          1902:     aab
        !          1903: No match
        !          1904:     aaaaab
        !          1905: No match
        !          1906: 
        !          1907: /ab{1,3}bc/
        !          1908:     abbbbc
        !          1909:  0: abbbbc
        !          1910:     abbbc
        !          1911:  0: abbbc
        !          1912:     abbc
        !          1913:  0: abbc
        !          1914:     *** Failers
        !          1915: No match
        !          1916:     abc
        !          1917: No match
        !          1918:     abbbbbc
        !          1919: No match
        !          1920: 
        !          1921: /([^.]*)\.([^:]*):[T ]+(.*)/
        !          1922:     track1.title:TBlah blah blah
        !          1923:  0: track1.title:TBlah blah blah
        !          1924:  1: track1
        !          1925:  2: title
        !          1926:  3: Blah blah blah
        !          1927: 
        !          1928: /([^.]*)\.([^:]*):[T ]+(.*)/i
        !          1929:     track1.title:TBlah blah blah
        !          1930:  0: track1.title:TBlah blah blah
        !          1931:  1: track1
        !          1932:  2: title
        !          1933:  3: Blah blah blah
        !          1934: 
        !          1935: /([^.]*)\.([^:]*):[t ]+(.*)/i
        !          1936:     track1.title:TBlah blah blah
        !          1937:  0: track1.title:TBlah blah blah
        !          1938:  1: track1
        !          1939:  2: title
        !          1940:  3: Blah blah blah
        !          1941: 
        !          1942: /^[W-c]+$/
        !          1943:     WXY_^abc
        !          1944:  0: WXY_^abc
        !          1945:     *** Failers
        !          1946: No match
        !          1947:     wxy
        !          1948: No match
        !          1949: 
        !          1950: /^[W-c]+$/i
        !          1951:     WXY_^abc
        !          1952:  0: WXY_^abc
        !          1953:     wxy_^ABC
        !          1954:  0: wxy_^ABC
        !          1955: 
        !          1956: /^[\x3f-\x5F]+$/i
        !          1957:     WXY_^abc
        !          1958:  0: WXY_^abc
        !          1959:     wxy_^ABC
        !          1960:  0: wxy_^ABC
        !          1961: 
        !          1962: /^abc$/m
        !          1963:     abc
        !          1964:  0: abc
        !          1965:     qqq\nabc
        !          1966:  0: abc
        !          1967:     abc\nzzz
        !          1968:  0: abc
        !          1969:     qqq\nabc\nzzz
        !          1970:  0: abc
        !          1971: 
        !          1972: /^abc$/
        !          1973:     abc
        !          1974:  0: abc
        !          1975:     *** Failers
        !          1976: No match
        !          1977:     qqq\nabc
        !          1978: No match
        !          1979:     abc\nzzz
        !          1980: No match
        !          1981:     qqq\nabc\nzzz
        !          1982: No match
        !          1983: 
        !          1984: /\Aabc\Z/m
        !          1985:     abc
        !          1986:  0: abc
        !          1987:     abc\n 
        !          1988:  0: abc
        !          1989:     *** Failers
        !          1990: No match
        !          1991:     qqq\nabc
        !          1992: No match
        !          1993:     abc\nzzz
        !          1994: No match
        !          1995:     qqq\nabc\nzzz
        !          1996: No match
        !          1997:     
        !          1998: /\A(.)*\Z/s
        !          1999:     abc\ndef
        !          2000:  0: abc\x0adef
        !          2001:  1: f
        !          2002: 
        !          2003: /\A(.)*\Z/m
        !          2004:     *** Failers
        !          2005:  0: *** Failers
        !          2006:  1: s
        !          2007:     abc\ndef
        !          2008: No match
        !          2009: 
        !          2010: /(?:b)|(?::+)/
        !          2011:     b::c
        !          2012:  0: b
        !          2013:     c::b
        !          2014:  0: ::
        !          2015: 
        !          2016: /[-az]+/
        !          2017:     az-
        !          2018:  0: az-
        !          2019:     *** Failers
        !          2020:  0: a
        !          2021:     b
        !          2022: No match
        !          2023: 
        !          2024: /[az-]+/
        !          2025:     za-
        !          2026:  0: za-
        !          2027:     *** Failers
        !          2028:  0: a
        !          2029:     b
        !          2030: No match
        !          2031: 
        !          2032: /[a\-z]+/
        !          2033:     a-z
        !          2034:  0: a-z
        !          2035:     *** Failers
        !          2036:  0: a
        !          2037:     b
        !          2038: No match
        !          2039: 
        !          2040: /[a-z]+/
        !          2041:     abcdxyz
        !          2042:  0: abcdxyz
        !          2043: 
        !          2044: /[\d-]+/
        !          2045:     12-34
        !          2046:  0: 12-34
        !          2047:     *** Failers
        !          2048: No match
        !          2049:     aaa
        !          2050: No match
        !          2051: 
        !          2052: /[\d-z]+/
        !          2053:     12-34z
        !          2054:  0: 12-34z
        !          2055:     *** Failers
        !          2056: No match
        !          2057:     aaa
        !          2058: No match
        !          2059: 
        !          2060: /\x5c/
        !          2061:     \\
        !          2062:  0: \
        !          2063: 
        !          2064: /\x20Z/
        !          2065:     the Zoo
        !          2066:  0:  Z
        !          2067:     *** Failers
        !          2068: No match
        !          2069:     Zulu
        !          2070: No match
        !          2071: 
        !          2072: /(abc)\1/i
        !          2073:     abcabc
        !          2074:  0: abcabc
        !          2075:  1: abc
        !          2076:     ABCabc
        !          2077:  0: ABCabc
        !          2078:  1: ABC
        !          2079:     abcABC
        !          2080:  0: abcABC
        !          2081:  1: abc
        !          2082: 
        !          2083: /ab{3cd/
        !          2084:     ab{3cd
        !          2085:  0: ab{3cd
        !          2086: 
        !          2087: /ab{3,cd/
        !          2088:     ab{3,cd
        !          2089:  0: ab{3,cd
        !          2090: 
        !          2091: /ab{3,4a}cd/
        !          2092:     ab{3,4a}cd
        !          2093:  0: ab{3,4a}cd
        !          2094: 
        !          2095: /{4,5a}bc/
        !          2096:     {4,5a}bc
        !          2097:  0: {4,5a}bc
        !          2098: 
        !          2099: /abc$/
        !          2100:     abc
        !          2101:  0: abc
        !          2102:     abc\n
        !          2103:  0: abc
        !          2104:     *** Failers
        !          2105: No match
        !          2106:     abc\ndef
        !          2107: No match
        !          2108: 
        !          2109: /(abc)\123/
        !          2110:     abc\x53
        !          2111:  0: abcS
        !          2112:  1: abc
        !          2113: 
        !          2114: /(abc)\223/
        !          2115:     abc\x93
        !          2116:  0: abc\x93
        !          2117:  1: abc
        !          2118: 
        !          2119: /(abc)\323/
        !          2120:     abc\xd3
        !          2121:  0: abc\xd3
        !          2122:  1: abc
        !          2123: 
        !          2124: /(abc)\100/
        !          2125:     abc\x40
        !          2126:  0: abc@
        !          2127:  1: abc
        !          2128:     abc\100
        !          2129:  0: abc@
        !          2130:  1: abc
        !          2131: 
        !          2132: /(abc)\1000/
        !          2133:     abc\x400
        !          2134:  0: abc@0
        !          2135:  1: abc
        !          2136:     abc\x40\x30
        !          2137:  0: abc@0
        !          2138:  1: abc
        !          2139:     abc\1000
        !          2140:  0: abc@0
        !          2141:  1: abc
        !          2142:     abc\100\x30
        !          2143:  0: abc@0
        !          2144:  1: abc
        !          2145:     abc\100\060
        !          2146:  0: abc@0
        !          2147:  1: abc
        !          2148:     abc\100\60
        !          2149:  0: abc@0
        !          2150:  1: abc
        !          2151: 
        !          2152: /abc\81/
        !          2153:     abc\081
        !          2154:  0: abc\x0081
        !          2155:     abc\0\x38\x31
        !          2156:  0: abc\x0081
        !          2157: 
        !          2158: /abc\91/
        !          2159:     abc\091
        !          2160:  0: abc\x0091
        !          2161:     abc\0\x39\x31
        !          2162:  0: abc\x0091
        !          2163: 
        !          2164: /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\12\123/
        !          2165:     abcdefghijkllS
        !          2166:  0: abcdefghijkllS
        !          2167:  1: a
        !          2168:  2: b
        !          2169:  3: c
        !          2170:  4: d
        !          2171:  5: e
        !          2172:  6: f
        !          2173:  7: g
        !          2174:  8: h
        !          2175:  9: i
        !          2176: 10: j
        !          2177: 11: k
        !          2178: 12: l
        !          2179: 
        !          2180: /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
        !          2181:     abcdefghijk\12S
        !          2182:  0: abcdefghijk\x0aS
        !          2183:  1: a
        !          2184:  2: b
        !          2185:  3: c
        !          2186:  4: d
        !          2187:  5: e
        !          2188:  6: f
        !          2189:  7: g
        !          2190:  8: h
        !          2191:  9: i
        !          2192: 10: j
        !          2193: 11: k
        !          2194: 
        !          2195: /ab\idef/
        !          2196:     abidef
        !          2197:  0: abidef
        !          2198: 
        !          2199: /a{0}bc/
        !          2200:     bc
        !          2201:  0: bc
        !          2202: 
        !          2203: /(a|(bc)){0,0}?xyz/
        !          2204:     xyz
        !          2205:  0: xyz
        !          2206: 
        !          2207: /abc[\10]de/
        !          2208:     abc\010de
        !          2209:  0: abc\x08de
        !          2210: 
        !          2211: /abc[\1]de/
        !          2212:     abc\1de
        !          2213:  0: abc\x01de
        !          2214: 
        !          2215: /(abc)[\1]de/
        !          2216:     abc\1de
        !          2217:  0: abc\x01de
        !          2218:  1: abc
        !          2219: 
        !          2220: /(?s)a.b/
        !          2221:     a\nb
        !          2222:  0: a\x0ab
        !          2223: 
        !          2224: /^([^a])([^\b])([^c]*)([^d]{3,4})/
        !          2225:     baNOTccccd
        !          2226:  0: baNOTcccc
        !          2227:  1: b
        !          2228:  2: a
        !          2229:  3: NOT
        !          2230:  4: cccc
        !          2231:     baNOTcccd
        !          2232:  0: baNOTccc
        !          2233:  1: b
        !          2234:  2: a
        !          2235:  3: NOT
        !          2236:  4: ccc
        !          2237:     baNOTccd
        !          2238:  0: baNOTcc
        !          2239:  1: b
        !          2240:  2: a
        !          2241:  3: NO
        !          2242:  4: Tcc
        !          2243:     bacccd
        !          2244:  0: baccc
        !          2245:  1: b
        !          2246:  2: a
        !          2247:  3: 
        !          2248:  4: ccc
        !          2249:     *** Failers
        !          2250:  0: *** Failers
        !          2251:  1: *
        !          2252:  2: *
        !          2253:  3: * Fail
        !          2254:  4: ers
        !          2255:     anything
        !          2256: No match
        !          2257:     b\bc   
        !          2258: No match
        !          2259:     baccd
        !          2260: No match
        !          2261: 
        !          2262: /[^a]/
        !          2263:     Abc
        !          2264:  0: A
        !          2265:   
        !          2266: /[^a]/i
        !          2267:     Abc 
        !          2268:  0: b
        !          2269: 
        !          2270: /[^a]+/
        !          2271:     AAAaAbc
        !          2272:  0: AAA
        !          2273:   
        !          2274: /[^a]+/i
        !          2275:     AAAaAbc 
        !          2276:  0: bc
        !          2277: 
        !          2278: /[^a]+/
        !          2279:     bbb\nccc
        !          2280:  0: bbb\x0accc
        !          2281:    
        !          2282: /[^k]$/
        !          2283:     abc
        !          2284:  0: c
        !          2285:     *** Failers
        !          2286:  0: s
        !          2287:     abk   
        !          2288: No match
        !          2289:    
        !          2290: /[^k]{2,3}$/
        !          2291:     abc
        !          2292:  0: abc
        !          2293:     kbc
        !          2294:  0: bc
        !          2295:     kabc 
        !          2296:  0: abc
        !          2297:     *** Failers
        !          2298:  0: ers
        !          2299:     abk
        !          2300: No match
        !          2301:     akb
        !          2302: No match
        !          2303:     akk 
        !          2304: No match
        !          2305: 
        !          2306: /^\d{8,}\@.+[^k]$/
        !          2307:     12345678\@a.b.c.d
        !          2308:  0: 12345678@a.b.c.d
        !          2309:     123456789\@x.y.z
        !          2310:  0: 123456789@x.y.z
        !          2311:     *** Failers
        !          2312: No match
        !          2313:     12345678\@x.y.uk
        !          2314: No match
        !          2315:     1234567\@a.b.c.d       
        !          2316: No match
        !          2317: 
        !          2318: /(a)\1{8,}/
        !          2319:     aaaaaaaaa
        !          2320:  0: aaaaaaaaa
        !          2321:  1: a
        !          2322:     aaaaaaaaaa
        !          2323:  0: aaaaaaaaaa
        !          2324:  1: a
        !          2325:     *** Failers
        !          2326: No match
        !          2327:     aaaaaaa   
        !          2328: No match
        !          2329: 
        !          2330: /[^a]/
        !          2331:     aaaabcd
        !          2332:  0: b
        !          2333:     aaAabcd 
        !          2334:  0: A
        !          2335: 
        !          2336: /[^a]/i
        !          2337:     aaaabcd
        !          2338:  0: b
        !          2339:     aaAabcd 
        !          2340:  0: b
        !          2341: 
        !          2342: /[^az]/
        !          2343:     aaaabcd
        !          2344:  0: b
        !          2345:     aaAabcd 
        !          2346:  0: A
        !          2347: 
        !          2348: /[^az]/i
        !          2349:     aaaabcd
        !          2350:  0: b
        !          2351:     aaAabcd 
        !          2352:  0: b
        !          2353: 
        !          2354: /\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/
        !          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:  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
        !          2357: 
        !          2358: /P[^*]TAIRE[^*]{1,6}?LL/
        !          2359:     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
        !          2360:  0: PSTAIREISLL
        !          2361: 
        !          2362: /P[^*]TAIRE[^*]{1,}?LL/
        !          2363:     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
        !          2364:  0: PSTAIREISLL
        !          2365: 
        !          2366: /(\.\d\d[1-9]?)\d+/
        !          2367:     1.230003938
        !          2368:  0: .230003938
        !          2369:  1: .23
        !          2370:     1.875000282   
        !          2371:  0: .875000282
        !          2372:  1: .875
        !          2373:     1.235  
        !          2374:  0: .235
        !          2375:  1: .23
        !          2376:                   
        !          2377: /(\.\d\d((?=0)|\d(?=\d)))/
        !          2378:     1.230003938      
        !          2379:  0: .23
        !          2380:  1: .23
        !          2381:  2: 
        !          2382:     1.875000282
        !          2383:  0: .875
        !          2384:  1: .875
        !          2385:  2: 5
        !          2386:     *** Failers 
        !          2387: No match
        !          2388:     1.235 
        !          2389: No match
        !          2390:     
        !          2391: /a(?)b/
        !          2392:     ab 
        !          2393:  0: ab
        !          2394:  
        !          2395: /\b(foo)\s+(\w+)/i
        !          2396:     Food is on the foo table
        !          2397:  0: foo table
        !          2398:  1: foo
        !          2399:  2: table
        !          2400:     
        !          2401: /foo(.*)bar/
        !          2402:     The food is under the bar in the barn.
        !          2403:  0: food is under the bar in the bar
        !          2404:  1: d is under the bar in the 
        !          2405:     
        !          2406: /foo(.*?)bar/  
        !          2407:     The food is under the bar in the barn.
        !          2408:  0: food is under the bar
        !          2409:  1: d is under the 
        !          2410: 
        !          2411: /(.*)(\d*)/
        !          2412:     I have 2 numbers: 53147
        !          2413:  0: I have 2 numbers: 53147
        !          2414:  1: I have 2 numbers: 53147
        !          2415:  2: 
        !          2416:     
        !          2417: /(.*)(\d+)/
        !          2418:     I have 2 numbers: 53147
        !          2419:  0: I have 2 numbers: 53147
        !          2420:  1: I have 2 numbers: 5314
        !          2421:  2: 7
        !          2422:  
        !          2423: /(.*?)(\d*)/
        !          2424:     I have 2 numbers: 53147
        !          2425:  0: 
        !          2426:  1: 
        !          2427:  2: 
        !          2428: 
        !          2429: /(.*?)(\d+)/
        !          2430:     I have 2 numbers: 53147
        !          2431:  0: I have 2
        !          2432:  1: I have 
        !          2433:  2: 2
        !          2434: 
        !          2435: /(.*)(\d+)$/
        !          2436:     I have 2 numbers: 53147
        !          2437:  0: I have 2 numbers: 53147
        !          2438:  1: I have 2 numbers: 5314
        !          2439:  2: 7
        !          2440: 
        !          2441: /(.*?)(\d+)$/
        !          2442:     I have 2 numbers: 53147
        !          2443:  0: I have 2 numbers: 53147
        !          2444:  1: I have 2 numbers: 
        !          2445:  2: 53147
        !          2446: 
        !          2447: /(.*)\b(\d+)$/
        !          2448:     I have 2 numbers: 53147
        !          2449:  0: I have 2 numbers: 53147
        !          2450:  1: I have 2 numbers: 
        !          2451:  2: 53147
        !          2452: 
        !          2453: /(.*\D)(\d+)$/
        !          2454:     I have 2 numbers: 53147
        !          2455:  0: I have 2 numbers: 53147
        !          2456:  1: I have 2 numbers: 
        !          2457:  2: 53147
        !          2458: 
        !          2459: /^\D*(?!123)/
        !          2460:     ABC123
        !          2461:  0: AB
        !          2462:      
        !          2463: /^(\D*)(?=\d)(?!123)/
        !          2464:     ABC445
        !          2465:  0: ABC
        !          2466:  1: ABC
        !          2467:     *** Failers
        !          2468: No match
        !          2469:     ABC123
        !          2470: No match
        !          2471:     
        !          2472: /^[W-]46]/
        !          2473:     W46]789 
        !          2474:  0: W46]
        !          2475:     -46]789
        !          2476:  0: -46]
        !          2477:     *** Failers
        !          2478: No match
        !          2479:     Wall
        !          2480: No match
        !          2481:     Zebra
        !          2482: No match
        !          2483:     42
        !          2484: No match
        !          2485:     [abcd] 
        !          2486: No match
        !          2487:     ]abcd[
        !          2488: No match
        !          2489:        
        !          2490: /^[W-\]46]/
        !          2491:     W46]789 
        !          2492:  0: W
        !          2493:     Wall
        !          2494:  0: W
        !          2495:     Zebra
        !          2496:  0: Z
        !          2497:     Xylophone  
        !          2498:  0: X
        !          2499:     42
        !          2500:  0: 4
        !          2501:     [abcd] 
        !          2502:  0: [
        !          2503:     ]abcd[
        !          2504:  0: ]
        !          2505:     \\backslash 
        !          2506:  0: \
        !          2507:     *** Failers
        !          2508: No match
        !          2509:     -46]789
        !          2510: No match
        !          2511:     well
        !          2512: No match
        !          2513:     
        !          2514: /\d\d\/\d\d\/\d\d\d\d/
        !          2515:     01/01/2000
        !          2516:  0: 01/01/2000
        !          2517: 
        !          2518: /word (?:[a-zA-Z0-9]+ ){0,10}otherword/
        !          2519:   word cat dog elephant mussel cow horse canary baboon snake shark otherword
        !          2520:  0: word cat dog elephant mussel cow horse canary baboon snake shark otherword
        !          2521:   word cat dog elephant mussel cow horse canary baboon snake shark
        !          2522: No match
        !          2523: 
        !          2524: /word (?:[a-zA-Z0-9]+ ){0,300}otherword/
        !          2525:   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
        !          2526: No match
        !          2527: 
        !          2528: /^(a){0,0}/
        !          2529:     bcd
        !          2530:  0: 
        !          2531:     abc
        !          2532:  0: 
        !          2533:     aab     
        !          2534:  0: 
        !          2535: 
        !          2536: /^(a){0,1}/
        !          2537:     bcd
        !          2538:  0: 
        !          2539:     abc
        !          2540:  0: a
        !          2541:  1: a
        !          2542:     aab  
        !          2543:  0: a
        !          2544:  1: a
        !          2545: 
        !          2546: /^(a){0,2}/
        !          2547:     bcd
        !          2548:  0: 
        !          2549:     abc
        !          2550:  0: a
        !          2551:  1: a
        !          2552:     aab  
        !          2553:  0: aa
        !          2554:  1: a
        !          2555: 
        !          2556: /^(a){0,3}/
        !          2557:     bcd
        !          2558:  0: 
        !          2559:     abc
        !          2560:  0: a
        !          2561:  1: a
        !          2562:     aab
        !          2563:  0: aa
        !          2564:  1: a
        !          2565:     aaa   
        !          2566:  0: aaa
        !          2567:  1: a
        !          2568: 
        !          2569: /^(a){0,}/
        !          2570:     bcd
        !          2571:  0: 
        !          2572:     abc
        !          2573:  0: a
        !          2574:  1: a
        !          2575:     aab
        !          2576:  0: aa
        !          2577:  1: a
        !          2578:     aaa
        !          2579:  0: aaa
        !          2580:  1: a
        !          2581:     aaaaaaaa    
        !          2582:  0: aaaaaaaa
        !          2583:  1: a
        !          2584: 
        !          2585: /^(a){1,1}/
        !          2586:     bcd
        !          2587: No match
        !          2588:     abc
        !          2589:  0: a
        !          2590:  1: a
        !          2591:     aab  
        !          2592:  0: a
        !          2593:  1: a
        !          2594: 
        !          2595: /^(a){1,2}/
        !          2596:     bcd
        !          2597: No match
        !          2598:     abc
        !          2599:  0: a
        !          2600:  1: a
        !          2601:     aab  
        !          2602:  0: aa
        !          2603:  1: a
        !          2604: 
        !          2605: /^(a){1,3}/
        !          2606:     bcd
        !          2607: No match
        !          2608:     abc
        !          2609:  0: a
        !          2610:  1: a
        !          2611:     aab
        !          2612:  0: aa
        !          2613:  1: a
        !          2614:     aaa   
        !          2615:  0: aaa
        !          2616:  1: a
        !          2617: 
        !          2618: /^(a){1,}/
        !          2619:     bcd
        !          2620: No match
        !          2621:     abc
        !          2622:  0: a
        !          2623:  1: a
        !          2624:     aab
        !          2625:  0: aa
        !          2626:  1: a
        !          2627:     aaa
        !          2628:  0: aaa
        !          2629:  1: a
        !          2630:     aaaaaaaa    
        !          2631:  0: aaaaaaaa
        !          2632:  1: a
        !          2633: 
        !          2634: /.*\.gif/
        !          2635:     borfle\nbib.gif\nno
        !          2636:  0: bib.gif
        !          2637: 
        !          2638: /.{0,}\.gif/
        !          2639:     borfle\nbib.gif\nno
        !          2640:  0: bib.gif
        !          2641: 
        !          2642: /.*\.gif/m
        !          2643:     borfle\nbib.gif\nno
        !          2644:  0: bib.gif
        !          2645: 
        !          2646: /.*\.gif/s
        !          2647:     borfle\nbib.gif\nno
        !          2648:  0: borfle\x0abib.gif
        !          2649: 
        !          2650: /.*\.gif/ms
        !          2651:     borfle\nbib.gif\nno
        !          2652:  0: borfle\x0abib.gif
        !          2653:     
        !          2654: /.*$/
        !          2655:     borfle\nbib.gif\nno
        !          2656:  0: no
        !          2657: 
        !          2658: /.*$/m
        !          2659:     borfle\nbib.gif\nno
        !          2660:  0: borfle
        !          2661: 
        !          2662: /.*$/s
        !          2663:     borfle\nbib.gif\nno
        !          2664:  0: borfle\x0abib.gif\x0ano
        !          2665: 
        !          2666: /.*$/ms
        !          2667:     borfle\nbib.gif\nno
        !          2668:  0: borfle\x0abib.gif\x0ano
        !          2669:     
        !          2670: /.*$/
        !          2671:     borfle\nbib.gif\nno\n
        !          2672:  0: no
        !          2673: 
        !          2674: /.*$/m
        !          2675:     borfle\nbib.gif\nno\n
        !          2676:  0: borfle
        !          2677: 
        !          2678: /.*$/s
        !          2679:     borfle\nbib.gif\nno\n
        !          2680:  0: borfle\x0abib.gif\x0ano\x0a
        !          2681: 
        !          2682: /.*$/ms
        !          2683:     borfle\nbib.gif\nno\n
        !          2684:  0: borfle\x0abib.gif\x0ano\x0a
        !          2685:     
        !          2686: /(.*X|^B)/
        !          2687:     abcde\n1234Xyz
        !          2688:  0: 1234X
        !          2689:  1: 1234X
        !          2690:     BarFoo 
        !          2691:  0: B
        !          2692:  1: B
        !          2693:     *** Failers
        !          2694: No match
        !          2695:     abcde\nBar  
        !          2696: No match
        !          2697: 
        !          2698: /(.*X|^B)/m
        !          2699:     abcde\n1234Xyz
        !          2700:  0: 1234X
        !          2701:  1: 1234X
        !          2702:     BarFoo 
        !          2703:  0: B
        !          2704:  1: B
        !          2705:     abcde\nBar  
        !          2706:  0: B
        !          2707:  1: B
        !          2708: 
        !          2709: /(.*X|^B)/s
        !          2710:     abcde\n1234Xyz
        !          2711:  0: abcde\x0a1234X
        !          2712:  1: abcde\x0a1234X
        !          2713:     BarFoo 
        !          2714:  0: B
        !          2715:  1: B
        !          2716:     *** Failers
        !          2717: No match
        !          2718:     abcde\nBar  
        !          2719: No match
        !          2720: 
        !          2721: /(.*X|^B)/ms
        !          2722:     abcde\n1234Xyz
        !          2723:  0: abcde\x0a1234X
        !          2724:  1: abcde\x0a1234X
        !          2725:     BarFoo 
        !          2726:  0: B
        !          2727:  1: B
        !          2728:     abcde\nBar  
        !          2729:  0: B
        !          2730:  1: B
        !          2731: 
        !          2732: /(?s)(.*X|^B)/
        !          2733:     abcde\n1234Xyz
        !          2734:  0: abcde\x0a1234X
        !          2735:  1: abcde\x0a1234X
        !          2736:     BarFoo 
        !          2737:  0: B
        !          2738:  1: B
        !          2739:     *** Failers 
        !          2740: No match
        !          2741:     abcde\nBar  
        !          2742: No match
        !          2743: 
        !          2744: /(?s:.*X|^B)/
        !          2745:     abcde\n1234Xyz
        !          2746:  0: abcde\x0a1234X
        !          2747:     BarFoo 
        !          2748:  0: B
        !          2749:     *** Failers 
        !          2750: No match
        !          2751:     abcde\nBar  
        !          2752: No match
        !          2753: 
        !          2754: /^.*B/
        !          2755:     **** Failers
        !          2756: No match
        !          2757:     abc\nB
        !          2758: No match
        !          2759:      
        !          2760: /(?s)^.*B/
        !          2761:     abc\nB
        !          2762:  0: abc\x0aB
        !          2763: 
        !          2764: /(?m)^.*B/
        !          2765:     abc\nB
        !          2766:  0: B
        !          2767:      
        !          2768: /(?ms)^.*B/
        !          2769:     abc\nB
        !          2770:  0: abc\x0aB
        !          2771: 
        !          2772: /(?ms)^B/
        !          2773:     abc\nB
        !          2774:  0: B
        !          2775: 
        !          2776: /(?s)B$/
        !          2777:     B\n
        !          2778:  0: B
        !          2779: 
        !          2780: /^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
        !          2781:     123456654321
        !          2782:  0: 123456654321
        !          2783:   
        !          2784: /^\d\d\d\d\d\d\d\d\d\d\d\d/
        !          2785:     123456654321 
        !          2786:  0: 123456654321
        !          2787: 
        !          2788: /^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/
        !          2789:     123456654321
        !          2790:  0: 123456654321
        !          2791:   
        !          2792: /^[abc]{12}/
        !          2793:     abcabcabcabc
        !          2794:  0: abcabcabcabc
        !          2795:     
        !          2796: /^[a-c]{12}/
        !          2797:     abcabcabcabc
        !          2798:  0: abcabcabcabc
        !          2799:     
        !          2800: /^(a|b|c){12}/
        !          2801:     abcabcabcabc 
        !          2802:  0: abcabcabcabc
        !          2803:  1: c
        !          2804: 
        !          2805: /^[abcdefghijklmnopqrstuvwxy0123456789]/
        !          2806:     n
        !          2807:  0: n
        !          2808:     *** Failers 
        !          2809: No match
        !          2810:     z 
        !          2811: No match
        !          2812: 
        !          2813: /abcde{0,0}/
        !          2814:     abcd
        !          2815:  0: abcd
        !          2816:     *** Failers
        !          2817: No match
        !          2818:     abce  
        !          2819: No match
        !          2820: 
        !          2821: /ab[cd]{0,0}e/
        !          2822:     abe
        !          2823:  0: abe
        !          2824:     *** Failers
        !          2825: No match
        !          2826:     abcde 
        !          2827: No match
        !          2828:     
        !          2829: /ab(c){0,0}d/
        !          2830:     abd
        !          2831:  0: abd
        !          2832:     *** Failers
        !          2833: No match
        !          2834:     abcd   
        !          2835: No match
        !          2836: 
        !          2837: /a(b*)/
        !          2838:     a
        !          2839:  0: a
        !          2840:  1: 
        !          2841:     ab
        !          2842:  0: ab
        !          2843:  1: b
        !          2844:     abbbb
        !          2845:  0: abbbb
        !          2846:  1: bbbb
        !          2847:     *** Failers
        !          2848:  0: a
        !          2849:  1: 
        !          2850:     bbbbb    
        !          2851: No match
        !          2852:     
        !          2853: /ab\d{0}e/
        !          2854:     abe
        !          2855:  0: abe
        !          2856:     *** Failers
        !          2857: No match
        !          2858:     ab1e   
        !          2859: No match
        !          2860:     
        !          2861: /"([^\\"]+|\\.)*"/
        !          2862:     the \"quick\" brown fox
        !          2863:  0: "quick"
        !          2864:  1: quick
        !          2865:     \"the \\\"quick\\\" brown fox\" 
        !          2866:  0: "the \"quick\" brown fox"
        !          2867:  1:  brown fox
        !          2868: 
        !          2869: /.*?/g+
        !          2870:     abc
        !          2871:  0: 
        !          2872:  0+ abc
        !          2873:  0: a
        !          2874:  0+ bc
        !          2875:  0: 
        !          2876:  0+ bc
        !          2877:  0: b
        !          2878:  0+ c
        !          2879:  0: 
        !          2880:  0+ c
        !          2881:  0: c
        !          2882:  0+ 
        !          2883:  0: 
        !          2884:  0+ 
        !          2885:   
        !          2886: /\b/g+
        !          2887:     abc 
        !          2888:  0: 
        !          2889:  0+ abc
        !          2890:  0: 
        !          2891:  0+ 
        !          2892: 
        !          2893: /\b/+g
        !          2894:     abc 
        !          2895:  0: 
        !          2896:  0+ abc
        !          2897:  0: 
        !          2898:  0+ 
        !          2899: 
        !          2900: //g
        !          2901:     abc
        !          2902:  0: 
        !          2903:  0: 
        !          2904:  0: 
        !          2905:  0: 
        !          2906: 
        !          2907: /<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
        !          2908:   <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>
        !          2909:  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>
        !          2910:  1:  BGCOLOR='#DBE9E9'
        !          2911:  2:  align=left valign=top
        !          2912:  3: 43.
        !          2913:  4: <a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)
        !          2914:  5: 
        !          2915:  6: 
        !          2916:  7: <unset>
        !          2917:  8:  align=left valign=top
        !          2918:  9: Lega lstaff.com
        !          2919: 10:  align=left valign=top
        !          2920: 11: CA - Statewide
        !          2921: 
        !          2922: /a[^a]b/
        !          2923:     acb
        !          2924:  0: acb
        !          2925:     a\nb
        !          2926:  0: a\x0ab
        !          2927:     
        !          2928: /a.b/
        !          2929:     acb
        !          2930:  0: acb
        !          2931:     *** Failers 
        !          2932: No match
        !          2933:     a\nb   
        !          2934: No match
        !          2935:     
        !          2936: /a[^a]b/s
        !          2937:     acb
        !          2938:  0: acb
        !          2939:     a\nb  
        !          2940:  0: a\x0ab
        !          2941:     
        !          2942: /a.b/s
        !          2943:     acb
        !          2944:  0: acb
        !          2945:     a\nb  
        !          2946:  0: a\x0ab
        !          2947: 
        !          2948: /^(b+?|a){1,2}?c/
        !          2949:     bac
        !          2950:  0: bac
        !          2951:  1: a
        !          2952:     bbac
        !          2953:  0: bbac
        !          2954:  1: a
        !          2955:     bbbac
        !          2956:  0: bbbac
        !          2957:  1: a
        !          2958:     bbbbac
        !          2959:  0: bbbbac
        !          2960:  1: a
        !          2961:     bbbbbac 
        !          2962:  0: bbbbbac
        !          2963:  1: a
        !          2964: 
        !          2965: /^(b+|a){1,2}?c/
        !          2966:     bac
        !          2967:  0: bac
        !          2968:  1: a
        !          2969:     bbac
        !          2970:  0: bbac
        !          2971:  1: a
        !          2972:     bbbac
        !          2973:  0: bbbac
        !          2974:  1: a
        !          2975:     bbbbac
        !          2976:  0: bbbbac
        !          2977:  1: a
        !          2978:     bbbbbac 
        !          2979:  0: bbbbbac
        !          2980:  1: a
        !          2981:     
        !          2982: /(?!\A)x/m
        !          2983:     x\nb\n
        !          2984: No match
        !          2985:     a\bx\n  
        !          2986:  0: x
        !          2987:     
        !          2988: /\x0{ab}/
        !          2989:     \0{ab} 
        !          2990:  0: \x00{ab}
        !          2991: 
        !          2992: /(A|B)*?CD/
        !          2993:     CD 
        !          2994:  0: CD
        !          2995:     
        !          2996: /(A|B)*CD/
        !          2997:     CD 
        !          2998:  0: CD
        !          2999: 
        !          3000: /(AB)*?\1/
        !          3001:     ABABAB
        !          3002:  0: ABAB
        !          3003:  1: AB
        !          3004: 
        !          3005: /(AB)*\1/
        !          3006:     ABABAB
        !          3007:  0: ABABAB
        !          3008:  1: AB
        !          3009:     
        !          3010: /(?<!bar)foo/
        !          3011:     foo
        !          3012:  0: foo
        !          3013:     catfood
        !          3014:  0: foo
        !          3015:     arfootle
        !          3016:  0: foo
        !          3017:     rfoosh
        !          3018:  0: foo
        !          3019:     *** Failers
        !          3020: No match
        !          3021:     barfoo
        !          3022: No match
        !          3023:     towbarfoo
        !          3024: No match
        !          3025: 
        !          3026: /\w{3}(?<!bar)foo/
        !          3027:     catfood
        !          3028:  0: catfoo
        !          3029:     *** Failers
        !          3030: No match
        !          3031:     foo
        !          3032: No match
        !          3033:     barfoo
        !          3034: No match
        !          3035:     towbarfoo
        !          3036: No match
        !          3037: 
        !          3038: /(?<=(foo)a)bar/
        !          3039:     fooabar
        !          3040:  0: bar
        !          3041:  1: foo
        !          3042:     *** Failers
        !          3043: No match
        !          3044:     bar
        !          3045: No match
        !          3046:     foobbar
        !          3047: No match
        !          3048:       
        !          3049: /\Aabc\z/m
        !          3050:     abc
        !          3051:  0: abc
        !          3052:     *** Failers
        !          3053: No match
        !          3054:     abc\n   
        !          3055: No match
        !          3056:     qqq\nabc
        !          3057: No match
        !          3058:     abc\nzzz
        !          3059: No match
        !          3060:     qqq\nabc\nzzz
        !          3061: No match
        !          3062: 
        !          3063: "(?>.*/)foo"
        !          3064:     /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/
        !          3065: No match
        !          3066: 
        !          3067: "(?>.*/)foo"
        !          3068:     /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
        !          3069:  0: /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
        !          3070: 
        !          3071: /(?>(\.\d\d[1-9]?))\d+/
        !          3072:     1.230003938
        !          3073:  0: .230003938
        !          3074:  1: .23
        !          3075:     1.875000282
        !          3076:  0: .875000282
        !          3077:  1: .875
        !          3078:     *** Failers 
        !          3079: No match
        !          3080:     1.235 
        !          3081: No match
        !          3082: 
        !          3083: /^((?>\w+)|(?>\s+))*$/
        !          3084:     now is the time for all good men to come to the aid of the party
        !          3085:  0: now is the time for all good men to come to the aid of the party
        !          3086:  1: party
        !          3087:     *** Failers
        !          3088: No match
        !          3089:     this is not a line with only words and spaces!
        !          3090: No match
        !          3091:     
        !          3092: /(\d+)(\w)/
        !          3093:     12345a
        !          3094:  0: 12345a
        !          3095:  1: 12345
        !          3096:  2: a
        !          3097:     12345+ 
        !          3098:  0: 12345
        !          3099:  1: 1234
        !          3100:  2: 5
        !          3101: 
        !          3102: /((?>\d+))(\w)/
        !          3103:     12345a
        !          3104:  0: 12345a
        !          3105:  1: 12345
        !          3106:  2: a
        !          3107:     *** Failers
        !          3108: No match
        !          3109:     12345+ 
        !          3110: No match
        !          3111: 
        !          3112: /(?>a+)b/
        !          3113:     aaab
        !          3114:  0: aaab
        !          3115: 
        !          3116: /((?>a+)b)/
        !          3117:     aaab
        !          3118:  0: aaab
        !          3119:  1: aaab
        !          3120: 
        !          3121: /(?>(a+))b/
        !          3122:     aaab
        !          3123:  0: aaab
        !          3124:  1: aaa
        !          3125: 
        !          3126: /(?>b)+/
        !          3127:     aaabbbccc
        !          3128:  0: bbb
        !          3129: 
        !          3130: /(?>a+|b+|c+)*c/
        !          3131:     aaabbbbccccd
        !          3132:  0: aaabbbbc
        !          3133: 
        !          3134: /((?>[^()]+)|\([^()]*\))+/
        !          3135:     ((abc(ade)ufh()()x
        !          3136:  0: abc(ade)ufh()()x
        !          3137:  1: x
        !          3138:     
        !          3139: /\(((?>[^()]+)|\([^()]+\))+\)/ 
        !          3140:     (abc)
        !          3141:  0: (abc)
        !          3142:  1: abc
        !          3143:     (abc(def)xyz)
        !          3144:  0: (abc(def)xyz)
        !          3145:  1: xyz
        !          3146:     *** Failers
        !          3147: No match
        !          3148:     ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa   
        !          3149: No match
        !          3150: 
        !          3151: /a(?-i)b/i
        !          3152:     ab
        !          3153:  0: ab
        !          3154:     Ab
        !          3155:  0: Ab
        !          3156:     *** Failers 
        !          3157: No match
        !          3158:     aB
        !          3159: No match
        !          3160:     AB
        !          3161: No match
        !          3162:         
        !          3163: /(a (?x)b c)d e/
        !          3164:     a bcd e
        !          3165:  0: a bcd e
        !          3166:  1: a bc
        !          3167:     *** Failers
        !          3168: No match
        !          3169:     a b cd e
        !          3170: No match
        !          3171:     abcd e   
        !          3172: No match
        !          3173:     a bcde 
        !          3174: No match
        !          3175:  
        !          3176: /(a b(?x)c d (?-x)e f)/
        !          3177:     a bcde f
        !          3178:  0: a bcde f
        !          3179:  1: a bcde f
        !          3180:     *** Failers
        !          3181: No match
        !          3182:     abcdef  
        !          3183: No match
        !          3184: 
        !          3185: /(a(?i)b)c/
        !          3186:     abc
        !          3187:  0: abc
        !          3188:  1: ab
        !          3189:     aBc
        !          3190:  0: aBc
        !          3191:  1: aB
        !          3192:     *** Failers
        !          3193: No match
        !          3194:     abC
        !          3195: No match
        !          3196:     aBC  
        !          3197: No match
        !          3198:     Abc
        !          3199: No match
        !          3200:     ABc
        !          3201: No match
        !          3202:     ABC
        !          3203: No match
        !          3204:     AbC
        !          3205: No match
        !          3206:     
        !          3207: /a(?i:b)c/
        !          3208:     abc
        !          3209:  0: abc
        !          3210:     aBc
        !          3211:  0: aBc
        !          3212:     *** Failers 
        !          3213: No match
        !          3214:     ABC
        !          3215: No match
        !          3216:     abC
        !          3217: No match
        !          3218:     aBC
        !          3219: No match
        !          3220:     
        !          3221: /a(?i:b)*c/
        !          3222:     aBc
        !          3223:  0: aBc
        !          3224:     aBBc
        !          3225:  0: aBBc
        !          3226:     *** Failers 
        !          3227: No match
        !          3228:     aBC
        !          3229: No match
        !          3230:     aBBC
        !          3231: No match
        !          3232:     
        !          3233: /a(?=b(?i)c)\w\wd/
        !          3234:     abcd
        !          3235:  0: abcd
        !          3236:     abCd
        !          3237:  0: abCd
        !          3238:     *** Failers
        !          3239: No match
        !          3240:     aBCd
        !          3241: No match
        !          3242:     abcD     
        !          3243: No match
        !          3244:     
        !          3245: /(?s-i:more.*than).*million/i
        !          3246:     more than million
        !          3247:  0: more than million
        !          3248:     more than MILLION
        !          3249:  0: more than MILLION
        !          3250:     more \n than Million 
        !          3251:  0: more \x0a than Million
        !          3252:     *** Failers
        !          3253: No match
        !          3254:     MORE THAN MILLION    
        !          3255: No match
        !          3256:     more \n than \n million 
        !          3257: No match
        !          3258: 
        !          3259: /(?:(?s-i)more.*than).*million/i
        !          3260:     more than million
        !          3261:  0: more than million
        !          3262:     more than MILLION
        !          3263:  0: more than MILLION
        !          3264:     more \n than Million 
        !          3265:  0: more \x0a than Million
        !          3266:     *** Failers
        !          3267: No match
        !          3268:     MORE THAN MILLION    
        !          3269: No match
        !          3270:     more \n than \n million 
        !          3271: No match
        !          3272:     
        !          3273: /(?>a(?i)b+)+c/ 
        !          3274:     abc
        !          3275:  0: abc
        !          3276:     aBbc
        !          3277:  0: aBbc
        !          3278:     aBBc 
        !          3279:  0: aBBc
        !          3280:     *** Failers
        !          3281: No match
        !          3282:     Abc
        !          3283: No match
        !          3284:     abAb    
        !          3285: No match
        !          3286:     abbC 
        !          3287: No match
        !          3288:     
        !          3289: /(?=a(?i)b)\w\wc/
        !          3290:     abc
        !          3291:  0: abc
        !          3292:     aBc
        !          3293:  0: aBc
        !          3294:     *** Failers
        !          3295: No match
        !          3296:     Ab 
        !          3297: No match
        !          3298:     abC
        !          3299: No match
        !          3300:     aBC     
        !          3301: No match
        !          3302:     
        !          3303: /(?<=a(?i)b)(\w\w)c/
        !          3304:     abxxc
        !          3305:  0: xxc
        !          3306:  1: xx
        !          3307:     aBxxc
        !          3308:  0: xxc
        !          3309:  1: xx
        !          3310:     *** Failers
        !          3311: No match
        !          3312:     Abxxc
        !          3313: No match
        !          3314:     ABxxc
        !          3315: No match
        !          3316:     abxxC      
        !          3317: No match
        !          3318: 
        !          3319: /(?:(a)|b)(?(1)A|B)/
        !          3320:     aA
        !          3321:  0: aA
        !          3322:  1: a
        !          3323:     bB
        !          3324:  0: bB
        !          3325:     *** Failers
        !          3326: No match
        !          3327:     aB
        !          3328: No match
        !          3329:     bA    
        !          3330: No match
        !          3331: 
        !          3332: /^(a)?(?(1)a|b)+$/
        !          3333:     aa
        !          3334:  0: aa
        !          3335:  1: a
        !          3336:     b
        !          3337:  0: b
        !          3338:     bb  
        !          3339:  0: bb
        !          3340:     *** Failers
        !          3341: No match
        !          3342:     ab   
        !          3343: No match
        !          3344: 
        !          3345: /^(?(?=abc)\w{3}:|\d\d)$/
        !          3346:     abc:
        !          3347:  0: abc:
        !          3348:     12
        !          3349:  0: 12
        !          3350:     *** Failers
        !          3351: No match
        !          3352:     123
        !          3353: No match
        !          3354:     xyz    
        !          3355: No match
        !          3356: 
        !          3357: /^(?(?!abc)\d\d|\w{3}:)$/
        !          3358:     abc:
        !          3359:  0: abc:
        !          3360:     12
        !          3361:  0: 12
        !          3362:     *** Failers
        !          3363: No match
        !          3364:     123
        !          3365: No match
        !          3366:     xyz    
        !          3367: No match
        !          3368:     
        !          3369: /(?(?<=foo)bar|cat)/
        !          3370:     foobar
        !          3371:  0: bar
        !          3372:     cat
        !          3373:  0: cat
        !          3374:     fcat
        !          3375:  0: cat
        !          3376:     focat   
        !          3377:  0: cat
        !          3378:     *** Failers
        !          3379: No match
        !          3380:     foocat  
        !          3381: No match
        !          3382: 
        !          3383: /(?(?<!foo)cat|bar)/
        !          3384:     foobar
        !          3385:  0: bar
        !          3386:     cat
        !          3387:  0: cat
        !          3388:     fcat
        !          3389:  0: cat
        !          3390:     focat   
        !          3391:  0: cat
        !          3392:     *** Failers
        !          3393: No match
        !          3394:     foocat  
        !          3395: No match
        !          3396: 
        !          3397: /( \( )? [^()]+ (?(1) \) |) /x
        !          3398:     abcd
        !          3399:  0: abcd
        !          3400:     (abcd)
        !          3401:  0: (abcd)
        !          3402:  1: (
        !          3403:     the quick (abcd) fox
        !          3404:  0: the quick 
        !          3405:     (abcd   
        !          3406:  0: abcd
        !          3407: 
        !          3408: /( \( )? [^()]+ (?(1) \) ) /x
        !          3409:     abcd
        !          3410:  0: abcd
        !          3411:     (abcd)
        !          3412:  0: (abcd)
        !          3413:  1: (
        !          3414:     the quick (abcd) fox
        !          3415:  0: the quick 
        !          3416:     (abcd   
        !          3417:  0: abcd
        !          3418: 
        !          3419: /^(?(2)a|(1)(2))+$/
        !          3420:     12
        !          3421:  0: 12
        !          3422:  1: 1
        !          3423:  2: 2
        !          3424:     12a
        !          3425:  0: 12a
        !          3426:  1: 1
        !          3427:  2: 2
        !          3428:     12aa
        !          3429:  0: 12aa
        !          3430:  1: 1
        !          3431:  2: 2
        !          3432:     *** Failers
        !          3433: No match
        !          3434:     1234    
        !          3435: No match
        !          3436: 
        !          3437: /((?i)blah)\s+\1/
        !          3438:     blah blah
        !          3439:  0: blah blah
        !          3440:  1: blah
        !          3441:     BLAH BLAH
        !          3442:  0: BLAH BLAH
        !          3443:  1: BLAH
        !          3444:     Blah Blah
        !          3445:  0: Blah Blah
        !          3446:  1: Blah
        !          3447:     blaH blaH
        !          3448:  0: blaH blaH
        !          3449:  1: blaH
        !          3450:     *** Failers
        !          3451: No match
        !          3452:     blah BLAH
        !          3453: No match
        !          3454:     Blah blah      
        !          3455: No match
        !          3456:     blaH blah 
        !          3457: No match
        !          3458: 
        !          3459: /((?i)blah)\s+(?i:\1)/
        !          3460:     blah blah
        !          3461:  0: blah blah
        !          3462:  1: blah
        !          3463:     BLAH BLAH
        !          3464:  0: BLAH BLAH
        !          3465:  1: BLAH
        !          3466:     Blah Blah
        !          3467:  0: Blah Blah
        !          3468:  1: Blah
        !          3469:     blaH blaH
        !          3470:  0: blaH blaH
        !          3471:  1: blaH
        !          3472:     blah BLAH
        !          3473:  0: blah BLAH
        !          3474:  1: blah
        !          3475:     Blah blah      
        !          3476:  0: Blah blah
        !          3477:  1: Blah
        !          3478:     blaH blah 
        !          3479:  0: blaH blah
        !          3480:  1: blaH
        !          3481: 
        !          3482: /(?>a*)*/
        !          3483:     a
        !          3484:  0: a
        !          3485:     aa
        !          3486:  0: aa
        !          3487:     aaaa
        !          3488:  0: aaaa
        !          3489:     
        !          3490: /(abc|)+/
        !          3491:     abc
        !          3492:  0: abc
        !          3493:  1: 
        !          3494:     abcabc
        !          3495:  0: abcabc
        !          3496:  1: 
        !          3497:     abcabcabc
        !          3498:  0: abcabcabc
        !          3499:  1: 
        !          3500:     xyz      
        !          3501:  0: 
        !          3502:  1: 
        !          3503: 
        !          3504: /([a]*)*/
        !          3505:     a
        !          3506:  0: a
        !          3507:  1: 
        !          3508:     aaaaa 
        !          3509:  0: aaaaa
        !          3510:  1: 
        !          3511:  
        !          3512: /([ab]*)*/
        !          3513:     a
        !          3514:  0: a
        !          3515:  1: 
        !          3516:     b
        !          3517:  0: b
        !          3518:  1: 
        !          3519:     ababab
        !          3520:  0: ababab
        !          3521:  1: 
        !          3522:     aaaabcde
        !          3523:  0: aaaab
        !          3524:  1: 
        !          3525:     bbbb    
        !          3526:  0: bbbb
        !          3527:  1: 
        !          3528:  
        !          3529: /([^a]*)*/
        !          3530:     b
        !          3531:  0: b
        !          3532:  1: 
        !          3533:     bbbb
        !          3534:  0: bbbb
        !          3535:  1: 
        !          3536:     aaa   
        !          3537:  0: 
        !          3538:  1: 
        !          3539:  
        !          3540: /([^ab]*)*/
        !          3541:     cccc
        !          3542:  0: cccc
        !          3543:  1: 
        !          3544:     abab  
        !          3545:  0: 
        !          3546:  1: 
        !          3547:  
        !          3548: /([a]*?)*/
        !          3549:     a
        !          3550:  0: 
        !          3551:  1: 
        !          3552:     aaaa 
        !          3553:  0: 
        !          3554:  1: 
        !          3555:  
        !          3556: /([ab]*?)*/
        !          3557:     a
        !          3558:  0: 
        !          3559:  1: 
        !          3560:     b
        !          3561:  0: 
        !          3562:  1: 
        !          3563:     abab
        !          3564:  0: 
        !          3565:  1: 
        !          3566:     baba   
        !          3567:  0: 
        !          3568:  1: 
        !          3569:  
        !          3570: /([^a]*?)*/
        !          3571:     b
        !          3572:  0: 
        !          3573:  1: 
        !          3574:     bbbb
        !          3575:  0: 
        !          3576:  1: 
        !          3577:     aaa   
        !          3578:  0: 
        !          3579:  1: 
        !          3580:  
        !          3581: /([^ab]*?)*/
        !          3582:     c
        !          3583:  0: 
        !          3584:  1: 
        !          3585:     cccc
        !          3586:  0: 
        !          3587:  1: 
        !          3588:     baba   
        !          3589:  0: 
        !          3590:  1: 
        !          3591:  
        !          3592: /(?>a*)*/
        !          3593:     a
        !          3594:  0: a
        !          3595:     aaabcde 
        !          3596:  0: aaa
        !          3597:  
        !          3598: /((?>a*))*/
        !          3599:     aaaaa
        !          3600:  0: aaaaa
        !          3601:  1: 
        !          3602:     aabbaa 
        !          3603:  0: aa
        !          3604:  1: 
        !          3605:  
        !          3606: /((?>a*?))*/
        !          3607:     aaaaa
        !          3608:  0: 
        !          3609:  1: 
        !          3610:     aabbaa 
        !          3611:  0: 
        !          3612:  1: 
        !          3613: 
        !          3614: /(?(?=[^a-z]+[a-z])  \d{2}-[a-z]{3}-\d{2}  |  \d{2}-\d{2}-\d{2} ) /x
        !          3615:     12-sep-98
        !          3616:  0: 12-sep-98
        !          3617:     12-09-98
        !          3618:  0: 12-09-98
        !          3619:     *** Failers
        !          3620: No match
        !          3621:     sep-12-98
        !          3622: No match
        !          3623:         
        !          3624: /(?<=(foo))bar\1/
        !          3625:     foobarfoo
        !          3626:  0: barfoo
        !          3627:  1: foo
        !          3628:     foobarfootling 
        !          3629:  0: barfoo
        !          3630:  1: foo
        !          3631:     *** Failers
        !          3632: No match
        !          3633:     foobar
        !          3634: No match
        !          3635:     barfoo   
        !          3636: No match
        !          3637: 
        !          3638: /(?i:saturday|sunday)/
        !          3639:     saturday
        !          3640:  0: saturday
        !          3641:     sunday
        !          3642:  0: sunday
        !          3643:     Saturday
        !          3644:  0: Saturday
        !          3645:     Sunday
        !          3646:  0: Sunday
        !          3647:     SATURDAY
        !          3648:  0: SATURDAY
        !          3649:     SUNDAY
        !          3650:  0: SUNDAY
        !          3651:     SunDay
        !          3652:  0: SunDay
        !          3653:     
        !          3654: /(a(?i)bc|BB)x/
        !          3655:     abcx
        !          3656:  0: abcx
        !          3657:  1: abc
        !          3658:     aBCx
        !          3659:  0: aBCx
        !          3660:  1: aBC
        !          3661:     bbx
        !          3662:  0: bbx
        !          3663:  1: bb
        !          3664:     BBx
        !          3665:  0: BBx
        !          3666:  1: BB
        !          3667:     *** Failers
        !          3668: No match
        !          3669:     abcX
        !          3670: No match
        !          3671:     aBCX
        !          3672: No match
        !          3673:     bbX
        !          3674: No match
        !          3675:     BBX               
        !          3676: No match
        !          3677: 
        !          3678: /^([ab](?i)[cd]|[ef])/
        !          3679:     ac
        !          3680:  0: ac
        !          3681:  1: ac
        !          3682:     aC
        !          3683:  0: aC
        !          3684:  1: aC
        !          3685:     bD
        !          3686:  0: bD
        !          3687:  1: bD
        !          3688:     elephant
        !          3689:  0: e
        !          3690:  1: e
        !          3691:     Europe 
        !          3692:  0: E
        !          3693:  1: E
        !          3694:     frog
        !          3695:  0: f
        !          3696:  1: f
        !          3697:     France
        !          3698:  0: F
        !          3699:  1: F
        !          3700:     *** Failers
        !          3701: No match
        !          3702:     Africa     
        !          3703: No match
        !          3704: 
        !          3705: /^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/
        !          3706:     ab
        !          3707:  0: ab
        !          3708:  1: ab
        !          3709:     aBd
        !          3710:  0: aBd
        !          3711:  1: aBd
        !          3712:     xy
        !          3713:  0: xy
        !          3714:  1: xy
        !          3715:     xY
        !          3716:  0: xY
        !          3717:  1: xY
        !          3718:     zebra
        !          3719:  0: z
        !          3720:  1: z
        !          3721:     Zambesi
        !          3722:  0: Z
        !          3723:  1: Z
        !          3724:     *** Failers
        !          3725: No match
        !          3726:     aCD  
        !          3727: No match
        !          3728:     XY  
        !          3729: No match
        !          3730: 
        !          3731: /(?<=foo\n)^bar/m
        !          3732:     foo\nbar
        !          3733:  0: bar
        !          3734:     *** Failers
        !          3735: No match
        !          3736:     bar
        !          3737: No match
        !          3738:     baz\nbar   
        !          3739: No match
        !          3740: 
        !          3741: /(?<=(?<!foo)bar)baz/
        !          3742:     barbaz
        !          3743:  0: baz
        !          3744:     barbarbaz 
        !          3745:  0: baz
        !          3746:     koobarbaz 
        !          3747:  0: baz
        !          3748:     *** Failers
        !          3749: No match
        !          3750:     baz
        !          3751: No match
        !          3752:     foobarbaz 
        !          3753: No match
        !          3754: 
        !          3755: /The cases of aaaa and aaaaaa are missed out below because Perl does things/
        !          3756: /differently. We know that odd, and maybe incorrect, things happen with/
        !          3757: No match
        !          3758: /recursive references in Perl, as far as 5.11.3 - see some stuff in test #2./
        !          3759: No match
        !          3760: 
        !          3761: /^(a\1?){4}$/
        !          3762:     a
        !          3763: No match
        !          3764:     aa
        !          3765: No match
        !          3766:     aaa
        !          3767: No match
        !          3768:     aaaaa
        !          3769:  0: aaaaa
        !          3770:  1: a
        !          3771:     aaaaaaa
        !          3772:  0: aaaaaaa
        !          3773:  1: a
        !          3774:     aaaaaaaa
        !          3775: No match
        !          3776:     aaaaaaaaa
        !          3777: No match
        !          3778:     aaaaaaaaaa
        !          3779:  0: aaaaaaaaaa
        !          3780:  1: aaaa
        !          3781:     aaaaaaaaaaa
        !          3782: No match
        !          3783:     aaaaaaaaaaaa
        !          3784: No match
        !          3785:     aaaaaaaaaaaaa
        !          3786: No match
        !          3787:     aaaaaaaaaaaaaa
        !          3788: No match
        !          3789:     aaaaaaaaaaaaaaa
        !          3790: No match
        !          3791:     aaaaaaaaaaaaaaaa               
        !          3792: No match
        !          3793: 
        !          3794: /^(a\1?)(a\1?)(a\2?)(a\3?)$/
        !          3795:     a
        !          3796: No match
        !          3797:     aa
        !          3798: No match
        !          3799:     aaa
        !          3800: No match
        !          3801:     aaaa
        !          3802:  0: aaaa
        !          3803:  1: a
        !          3804:  2: a
        !          3805:  3: a
        !          3806:  4: a
        !          3807:     aaaaa
        !          3808:  0: aaaaa
        !          3809:  1: a
        !          3810:  2: aa
        !          3811:  3: a
        !          3812:  4: a
        !          3813:     aaaaaa
        !          3814:  0: aaaaaa
        !          3815:  1: a
        !          3816:  2: aa
        !          3817:  3: a
        !          3818:  4: aa
        !          3819:     aaaaaaa
        !          3820:  0: aaaaaaa
        !          3821:  1: a
        !          3822:  2: aa
        !          3823:  3: aaa
        !          3824:  4: a
        !          3825:     aaaaaaaa
        !          3826: No match
        !          3827:     aaaaaaaaa
        !          3828: No match
        !          3829:     aaaaaaaaaa
        !          3830:  0: aaaaaaaaaa
        !          3831:  1: a
        !          3832:  2: aa
        !          3833:  3: aaa
        !          3834:  4: aaaa
        !          3835:     aaaaaaaaaaa
        !          3836: No match
        !          3837:     aaaaaaaaaaaa
        !          3838: No match
        !          3839:     aaaaaaaaaaaaa
        !          3840: No match
        !          3841:     aaaaaaaaaaaaaa
        !          3842: No match
        !          3843:     aaaaaaaaaaaaaaa
        !          3844: No match
        !          3845:     aaaaaaaaaaaaaaaa               
        !          3846: No match
        !          3847: 
        !          3848: /The following tests are taken from the Perl 5.005 test suite; some of them/
        !          3849: /are compatible with 5.004, but I'd rather not have to sort them out./
        !          3850: No match
        !          3851: 
        !          3852: /abc/
        !          3853:     abc
        !          3854:  0: abc
        !          3855:     xabcy
        !          3856:  0: abc
        !          3857:     ababc
        !          3858:  0: abc
        !          3859:     *** Failers
        !          3860: No match
        !          3861:     xbc
        !          3862: No match
        !          3863:     axc
        !          3864: No match
        !          3865:     abx
        !          3866: No match
        !          3867: 
        !          3868: /ab*c/
        !          3869:     abc
        !          3870:  0: abc
        !          3871: 
        !          3872: /ab*bc/
        !          3873:     abc
        !          3874:  0: abc
        !          3875:     abbc
        !          3876:  0: abbc
        !          3877:     abbbbc
        !          3878:  0: abbbbc
        !          3879: 
        !          3880: /.{1}/
        !          3881:     abbbbc
        !          3882:  0: a
        !          3883: 
        !          3884: /.{3,4}/
        !          3885:     abbbbc
        !          3886:  0: abbb
        !          3887: 
        !          3888: /ab{0,}bc/
        !          3889:     abbbbc
        !          3890:  0: abbbbc
        !          3891: 
        !          3892: /ab+bc/
        !          3893:     abbc
        !          3894:  0: abbc
        !          3895:     *** Failers
        !          3896: No match
        !          3897:     abc
        !          3898: No match
        !          3899:     abq
        !          3900: No match
        !          3901: 
        !          3902: /ab{1,}bc/
        !          3903: 
        !          3904: /ab+bc/
        !          3905:     abbbbc
        !          3906:  0: abbbbc
        !          3907: 
        !          3908: /ab{1,}bc/
        !          3909:     abbbbc
        !          3910:  0: abbbbc
        !          3911: 
        !          3912: /ab{1,3}bc/
        !          3913:     abbbbc
        !          3914:  0: abbbbc
        !          3915: 
        !          3916: /ab{3,4}bc/
        !          3917:     abbbbc
        !          3918:  0: abbbbc
        !          3919: 
        !          3920: /ab{4,5}bc/
        !          3921:     *** Failers
        !          3922: No match
        !          3923:     abq
        !          3924: No match
        !          3925:     abbbbc
        !          3926: No match
        !          3927: 
        !          3928: /ab?bc/
        !          3929:     abbc
        !          3930:  0: abbc
        !          3931:     abc
        !          3932:  0: abc
        !          3933: 
        !          3934: /ab{0,1}bc/
        !          3935:     abc
        !          3936:  0: abc
        !          3937: 
        !          3938: /ab?bc/
        !          3939: 
        !          3940: /ab?c/
        !          3941:     abc
        !          3942:  0: abc
        !          3943: 
        !          3944: /ab{0,1}c/
        !          3945:     abc
        !          3946:  0: abc
        !          3947: 
        !          3948: /^abc$/
        !          3949:     abc
        !          3950:  0: abc
        !          3951:     *** Failers
        !          3952: No match
        !          3953:     abbbbc
        !          3954: No match
        !          3955:     abcc
        !          3956: No match
        !          3957: 
        !          3958: /^abc/
        !          3959:     abcc
        !          3960:  0: abc
        !          3961: 
        !          3962: /^abc$/
        !          3963: 
        !          3964: /abc$/
        !          3965:     aabc
        !          3966:  0: abc
        !          3967:     *** Failers
        !          3968: No match
        !          3969:     aabc
        !          3970:  0: abc
        !          3971:     aabcd
        !          3972: No match
        !          3973: 
        !          3974: /^/
        !          3975:     abc
        !          3976:  0: 
        !          3977: 
        !          3978: /$/
        !          3979:     abc
        !          3980:  0: 
        !          3981: 
        !          3982: /a.c/
        !          3983:     abc
        !          3984:  0: abc
        !          3985:     axc
        !          3986:  0: axc
        !          3987: 
        !          3988: /a.*c/
        !          3989:     axyzc
        !          3990:  0: axyzc
        !          3991: 
        !          3992: /a[bc]d/
        !          3993:     abd
        !          3994:  0: abd
        !          3995:     *** Failers
        !          3996: No match
        !          3997:     axyzd
        !          3998: No match
        !          3999:     abc
        !          4000: No match
        !          4001: 
        !          4002: /a[b-d]e/
        !          4003:     ace
        !          4004:  0: ace
        !          4005: 
        !          4006: /a[b-d]/
        !          4007:     aac
        !          4008:  0: ac
        !          4009: 
        !          4010: /a[-b]/
        !          4011:     a-
        !          4012:  0: a-
        !          4013: 
        !          4014: /a[b-]/
        !          4015:     a-
        !          4016:  0: a-
        !          4017: 
        !          4018: /a]/
        !          4019:     a]
        !          4020:  0: a]
        !          4021: 
        !          4022: /a[]]b/
        !          4023:     a]b
        !          4024:  0: a]b
        !          4025: 
        !          4026: /a[^bc]d/
        !          4027:     aed
        !          4028:  0: aed
        !          4029:     *** Failers
        !          4030: No match
        !          4031:     abd
        !          4032: No match
        !          4033:     abd
        !          4034: No match
        !          4035: 
        !          4036: /a[^-b]c/
        !          4037:     adc
        !          4038:  0: adc
        !          4039: 
        !          4040: /a[^]b]c/
        !          4041:     adc
        !          4042:  0: adc
        !          4043:     *** Failers
        !          4044: No match
        !          4045:     a-c
        !          4046:  0: a-c
        !          4047:     a]c
        !          4048: No match
        !          4049: 
        !          4050: /\ba\b/
        !          4051:     a-
        !          4052:  0: a
        !          4053:     -a
        !          4054:  0: a
        !          4055:     -a-
        !          4056:  0: a
        !          4057: 
        !          4058: /\by\b/
        !          4059:     *** Failers
        !          4060: No match
        !          4061:     xy
        !          4062: No match
        !          4063:     yz
        !          4064: No match
        !          4065:     xyz
        !          4066: No match
        !          4067: 
        !          4068: /\Ba\B/
        !          4069:     *** Failers
        !          4070:  0: a
        !          4071:     a-
        !          4072: No match
        !          4073:     -a
        !          4074: No match
        !          4075:     -a-
        !          4076: No match
        !          4077: 
        !          4078: /\By\b/
        !          4079:     xy
        !          4080:  0: y
        !          4081: 
        !          4082: /\by\B/
        !          4083:     yz
        !          4084:  0: y
        !          4085: 
        !          4086: /\By\B/
        !          4087:     xyz
        !          4088:  0: y
        !          4089: 
        !          4090: /\w/
        !          4091:     a
        !          4092:  0: a
        !          4093: 
        !          4094: /\W/
        !          4095:     -
        !          4096:  0: -
        !          4097:     *** Failers
        !          4098:  0: *
        !          4099:     -
        !          4100:  0: -
        !          4101:     a
        !          4102: No match
        !          4103: 
        !          4104: /a\sb/
        !          4105:     a b
        !          4106:  0: a b
        !          4107: 
        !          4108: /a\Sb/
        !          4109:     a-b
        !          4110:  0: a-b
        !          4111:     *** Failers
        !          4112: No match
        !          4113:     a-b
        !          4114:  0: a-b
        !          4115:     a b
        !          4116: No match
        !          4117: 
        !          4118: /\d/
        !          4119:     1
        !          4120:  0: 1
        !          4121: 
        !          4122: /\D/
        !          4123:     -
        !          4124:  0: -
        !          4125:     *** Failers
        !          4126:  0: *
        !          4127:     -
        !          4128:  0: -
        !          4129:     1
        !          4130: No match
        !          4131: 
        !          4132: /[\w]/
        !          4133:     a
        !          4134:  0: a
        !          4135: 
        !          4136: /[\W]/
        !          4137:     -
        !          4138:  0: -
        !          4139:     *** Failers
        !          4140:  0: *
        !          4141:     -
        !          4142:  0: -
        !          4143:     a
        !          4144: No match
        !          4145: 
        !          4146: /a[\s]b/
        !          4147:     a b
        !          4148:  0: a b
        !          4149: 
        !          4150: /a[\S]b/
        !          4151:     a-b
        !          4152:  0: a-b
        !          4153:     *** Failers
        !          4154: No match
        !          4155:     a-b
        !          4156:  0: a-b
        !          4157:     a b
        !          4158: No match
        !          4159: 
        !          4160: /[\d]/
        !          4161:     1
        !          4162:  0: 1
        !          4163: 
        !          4164: /[\D]/
        !          4165:     -
        !          4166:  0: -
        !          4167:     *** Failers
        !          4168:  0: *
        !          4169:     -
        !          4170:  0: -
        !          4171:     1
        !          4172: No match
        !          4173: 
        !          4174: /ab|cd/
        !          4175:     abc
        !          4176:  0: ab
        !          4177:     abcd
        !          4178:  0: ab
        !          4179: 
        !          4180: /()ef/
        !          4181:     def
        !          4182:  0: ef
        !          4183:  1: 
        !          4184: 
        !          4185: /$b/
        !          4186: 
        !          4187: /a\(b/
        !          4188:     a(b
        !          4189:  0: a(b
        !          4190: 
        !          4191: /a\(*b/
        !          4192:     ab
        !          4193:  0: ab
        !          4194:     a((b
        !          4195:  0: a((b
        !          4196: 
        !          4197: /a\\b/
        !          4198:     a\b
        !          4199: No match
        !          4200: 
        !          4201: /((a))/
        !          4202:     abc
        !          4203:  0: a
        !          4204:  1: a
        !          4205:  2: a
        !          4206: 
        !          4207: /(a)b(c)/
        !          4208:     abc
        !          4209:  0: abc
        !          4210:  1: a
        !          4211:  2: c
        !          4212: 
        !          4213: /a+b+c/
        !          4214:     aabbabc
        !          4215:  0: abc
        !          4216: 
        !          4217: /a{1,}b{1,}c/
        !          4218:     aabbabc
        !          4219:  0: abc
        !          4220: 
        !          4221: /a.+?c/
        !          4222:     abcabc
        !          4223:  0: abc
        !          4224: 
        !          4225: /(a+|b)*/
        !          4226:     ab
        !          4227:  0: ab
        !          4228:  1: b
        !          4229: 
        !          4230: /(a+|b){0,}/
        !          4231:     ab
        !          4232:  0: ab
        !          4233:  1: b
        !          4234: 
        !          4235: /(a+|b)+/
        !          4236:     ab
        !          4237:  0: ab
        !          4238:  1: b
        !          4239: 
        !          4240: /(a+|b){1,}/
        !          4241:     ab
        !          4242:  0: ab
        !          4243:  1: b
        !          4244: 
        !          4245: /(a+|b)?/
        !          4246:     ab
        !          4247:  0: a
        !          4248:  1: a
        !          4249: 
        !          4250: /(a+|b){0,1}/
        !          4251:     ab
        !          4252:  0: a
        !          4253:  1: a
        !          4254: 
        !          4255: /[^ab]*/
        !          4256:     cde
        !          4257:  0: cde
        !          4258: 
        !          4259: /abc/
        !          4260:     *** Failers
        !          4261: No match
        !          4262:     b
        !          4263: No match
        !          4264:     
        !          4265: 
        !          4266: /a*/
        !          4267:     
        !          4268: 
        !          4269: /([abc])*d/
        !          4270:     abbbcd
        !          4271:  0: abbbcd
        !          4272:  1: c
        !          4273: 
        !          4274: /([abc])*bcd/
        !          4275:     abcd
        !          4276:  0: abcd
        !          4277:  1: a
        !          4278: 
        !          4279: /a|b|c|d|e/
        !          4280:     e
        !          4281:  0: e
        !          4282: 
        !          4283: /(a|b|c|d|e)f/
        !          4284:     ef
        !          4285:  0: ef
        !          4286:  1: e
        !          4287: 
        !          4288: /abcd*efg/
        !          4289:     abcdefg
        !          4290:  0: abcdefg
        !          4291: 
        !          4292: /ab*/
        !          4293:     xabyabbbz
        !          4294:  0: ab
        !          4295:     xayabbbz
        !          4296:  0: a
        !          4297: 
        !          4298: /(ab|cd)e/
        !          4299:     abcde
        !          4300:  0: cde
        !          4301:  1: cd
        !          4302: 
        !          4303: /[abhgefdc]ij/
        !          4304:     hij
        !          4305:  0: hij
        !          4306: 
        !          4307: /^(ab|cd)e/
        !          4308: 
        !          4309: /(abc|)ef/
        !          4310:     abcdef
        !          4311:  0: ef
        !          4312:  1: 
        !          4313: 
        !          4314: /(a|b)c*d/
        !          4315:     abcd
        !          4316:  0: bcd
        !          4317:  1: b
        !          4318: 
        !          4319: /(ab|ab*)bc/
        !          4320:     abc
        !          4321:  0: abc
        !          4322:  1: a
        !          4323: 
        !          4324: /a([bc]*)c*/
        !          4325:     abc
        !          4326:  0: abc
        !          4327:  1: bc
        !          4328: 
        !          4329: /a([bc]*)(c*d)/
        !          4330:     abcd
        !          4331:  0: abcd
        !          4332:  1: bc
        !          4333:  2: d
        !          4334: 
        !          4335: /a([bc]+)(c*d)/
        !          4336:     abcd
        !          4337:  0: abcd
        !          4338:  1: bc
        !          4339:  2: d
        !          4340: 
        !          4341: /a([bc]*)(c+d)/
        !          4342:     abcd
        !          4343:  0: abcd
        !          4344:  1: b
        !          4345:  2: cd
        !          4346: 
        !          4347: /a[bcd]*dcdcde/
        !          4348:     adcdcde
        !          4349:  0: adcdcde
        !          4350: 
        !          4351: /a[bcd]+dcdcde/
        !          4352:     *** Failers
        !          4353: No match
        !          4354:     abcde
        !          4355: No match
        !          4356:     adcdcde
        !          4357: No match
        !          4358: 
        !          4359: /(ab|a)b*c/
        !          4360:     abc
        !          4361:  0: abc
        !          4362:  1: ab
        !          4363: 
        !          4364: /((a)(b)c)(d)/
        !          4365:     abcd
        !          4366:  0: abcd
        !          4367:  1: abc
        !          4368:  2: a
        !          4369:  3: b
        !          4370:  4: d
        !          4371: 
        !          4372: /[a-zA-Z_][a-zA-Z0-9_]*/
        !          4373:     alpha
        !          4374:  0: alpha
        !          4375: 
        !          4376: /^a(bc+|b[eh])g|.h$/
        !          4377:     abh
        !          4378:  0: bh
        !          4379: 
        !          4380: /(bc+d$|ef*g.|h?i(j|k))/
        !          4381:     effgz
        !          4382:  0: effgz
        !          4383:  1: effgz
        !          4384:     ij
        !          4385:  0: ij
        !          4386:  1: ij
        !          4387:  2: j
        !          4388:     reffgz
        !          4389:  0: effgz
        !          4390:  1: effgz
        !          4391:     *** Failers
        !          4392: No match
        !          4393:     effg
        !          4394: No match
        !          4395:     bcdd
        !          4396: No match
        !          4397: 
        !          4398: /((((((((((a))))))))))/
        !          4399:     a
        !          4400:  0: a
        !          4401:  1: a
        !          4402:  2: a
        !          4403:  3: a
        !          4404:  4: a
        !          4405:  5: a
        !          4406:  6: a
        !          4407:  7: a
        !          4408:  8: a
        !          4409:  9: a
        !          4410: 10: a
        !          4411: 
        !          4412: /((((((((((a))))))))))\10/
        !          4413:     aa
        !          4414:  0: aa
        !          4415:  1: a
        !          4416:  2: a
        !          4417:  3: a
        !          4418:  4: a
        !          4419:  5: a
        !          4420:  6: a
        !          4421:  7: a
        !          4422:  8: a
        !          4423:  9: a
        !          4424: 10: a
        !          4425: 
        !          4426: /(((((((((a)))))))))/
        !          4427:     a
        !          4428:  0: a
        !          4429:  1: a
        !          4430:  2: a
        !          4431:  3: a
        !          4432:  4: a
        !          4433:  5: a
        !          4434:  6: a
        !          4435:  7: a
        !          4436:  8: a
        !          4437:  9: a
        !          4438: 
        !          4439: /multiple words of text/
        !          4440:     *** Failers
        !          4441: No match
        !          4442:     aa
        !          4443: No match
        !          4444:     uh-uh
        !          4445: No match
        !          4446: 
        !          4447: /multiple words/
        !          4448:     multiple words, yeah
        !          4449:  0: multiple words
        !          4450: 
        !          4451: /(.*)c(.*)/
        !          4452:     abcde
        !          4453:  0: abcde
        !          4454:  1: ab
        !          4455:  2: de
        !          4456: 
        !          4457: /\((.*), (.*)\)/
        !          4458:     (a, b)
        !          4459:  0: (a, b)
        !          4460:  1: a
        !          4461:  2: b
        !          4462: 
        !          4463: /[k]/
        !          4464: 
        !          4465: /abcd/
        !          4466:     abcd
        !          4467:  0: abcd
        !          4468: 
        !          4469: /a(bc)d/
        !          4470:     abcd
        !          4471:  0: abcd
        !          4472:  1: bc
        !          4473: 
        !          4474: /a[-]?c/
        !          4475:     ac
        !          4476:  0: ac
        !          4477: 
        !          4478: /(abc)\1/
        !          4479:     abcabc
        !          4480:  0: abcabc
        !          4481:  1: abc
        !          4482: 
        !          4483: /([a-c]*)\1/
        !          4484:     abcabc
        !          4485:  0: abcabc
        !          4486:  1: abc
        !          4487: 
        !          4488: /(a)|\1/
        !          4489:     a
        !          4490:  0: a
        !          4491:  1: a
        !          4492:     *** Failers
        !          4493:  0: a
        !          4494:  1: a
        !          4495:     ab
        !          4496:  0: a
        !          4497:  1: a
        !          4498:     x
        !          4499: No match
        !          4500: 
        !          4501: /(([a-c])b*?\2)*/
        !          4502:     ababbbcbc
        !          4503:  0: ababb
        !          4504:  1: bb
        !          4505:  2: b
        !          4506: 
        !          4507: /(([a-c])b*?\2){3}/
        !          4508:     ababbbcbc
        !          4509:  0: ababbbcbc
        !          4510:  1: cbc
        !          4511:  2: c
        !          4512: 
        !          4513: /((\3|b)\2(a)x)+/
        !          4514:     aaaxabaxbaaxbbax
        !          4515:  0: bbax
        !          4516:  1: bbax
        !          4517:  2: b
        !          4518:  3: a
        !          4519: 
        !          4520: /((\3|b)\2(a)){2,}/
        !          4521:     bbaababbabaaaaabbaaaabba
        !          4522:  0: bbaaaabba
        !          4523:  1: bba
        !          4524:  2: b
        !          4525:  3: a
        !          4526: 
        !          4527: /abc/i
        !          4528:     ABC
        !          4529:  0: ABC
        !          4530:     XABCY
        !          4531:  0: ABC
        !          4532:     ABABC
        !          4533:  0: ABC
        !          4534:     *** Failers
        !          4535: No match
        !          4536:     aaxabxbaxbbx
        !          4537: No match
        !          4538:     XBC
        !          4539: No match
        !          4540:     AXC
        !          4541: No match
        !          4542:     ABX
        !          4543: No match
        !          4544: 
        !          4545: /ab*c/i
        !          4546:     ABC
        !          4547:  0: ABC
        !          4548: 
        !          4549: /ab*bc/i
        !          4550:     ABC
        !          4551:  0: ABC
        !          4552:     ABBC
        !          4553:  0: ABBC
        !          4554: 
        !          4555: /ab*?bc/i
        !          4556:     ABBBBC
        !          4557:  0: ABBBBC
        !          4558: 
        !          4559: /ab{0,}?bc/i
        !          4560:     ABBBBC
        !          4561:  0: ABBBBC
        !          4562: 
        !          4563: /ab+?bc/i
        !          4564:     ABBC
        !          4565:  0: ABBC
        !          4566: 
        !          4567: /ab+bc/i
        !          4568:     *** Failers
        !          4569: No match
        !          4570:     ABC
        !          4571: No match
        !          4572:     ABQ
        !          4573: No match
        !          4574: 
        !          4575: /ab{1,}bc/i
        !          4576: 
        !          4577: /ab+bc/i
        !          4578:     ABBBBC
        !          4579:  0: ABBBBC
        !          4580: 
        !          4581: /ab{1,}?bc/i
        !          4582:     ABBBBC
        !          4583:  0: ABBBBC
        !          4584: 
        !          4585: /ab{1,3}?bc/i
        !          4586:     ABBBBC
        !          4587:  0: ABBBBC
        !          4588: 
        !          4589: /ab{3,4}?bc/i
        !          4590:     ABBBBC
        !          4591:  0: ABBBBC
        !          4592: 
        !          4593: /ab{4,5}?bc/i
        !          4594:     *** Failers
        !          4595: No match
        !          4596:     ABQ
        !          4597: No match
        !          4598:     ABBBBC
        !          4599: No match
        !          4600: 
        !          4601: /ab??bc/i
        !          4602:     ABBC
        !          4603:  0: ABBC
        !          4604:     ABC
        !          4605:  0: ABC
        !          4606: 
        !          4607: /ab{0,1}?bc/i
        !          4608:     ABC
        !          4609:  0: ABC
        !          4610: 
        !          4611: /ab??bc/i
        !          4612: 
        !          4613: /ab??c/i
        !          4614:     ABC
        !          4615:  0: ABC
        !          4616: 
        !          4617: /ab{0,1}?c/i
        !          4618:     ABC
        !          4619:  0: ABC
        !          4620: 
        !          4621: /^abc$/i
        !          4622:     ABC
        !          4623:  0: ABC
        !          4624:     *** Failers
        !          4625: No match
        !          4626:     ABBBBC
        !          4627: No match
        !          4628:     ABCC
        !          4629: No match
        !          4630: 
        !          4631: /^abc/i
        !          4632:     ABCC
        !          4633:  0: ABC
        !          4634: 
        !          4635: /^abc$/i
        !          4636: 
        !          4637: /abc$/i
        !          4638:     AABC
        !          4639:  0: ABC
        !          4640: 
        !          4641: /^/i
        !          4642:     ABC
        !          4643:  0: 
        !          4644: 
        !          4645: /$/i
        !          4646:     ABC
        !          4647:  0: 
        !          4648: 
        !          4649: /a.c/i
        !          4650:     ABC
        !          4651:  0: ABC
        !          4652:     AXC
        !          4653:  0: AXC
        !          4654: 
        !          4655: /a.*?c/i
        !          4656:     AXYZC
        !          4657:  0: AXYZC
        !          4658: 
        !          4659: /a.*c/i
        !          4660:     *** Failers
        !          4661: No match
        !          4662:     AABC
        !          4663:  0: AABC
        !          4664:     AXYZD
        !          4665: No match
        !          4666: 
        !          4667: /a[bc]d/i
        !          4668:     ABD
        !          4669:  0: ABD
        !          4670: 
        !          4671: /a[b-d]e/i
        !          4672:     ACE
        !          4673:  0: ACE
        !          4674:     *** Failers
        !          4675: No match
        !          4676:     ABC
        !          4677: No match
        !          4678:     ABD
        !          4679: No match
        !          4680: 
        !          4681: /a[b-d]/i
        !          4682:     AAC
        !          4683:  0: AC
        !          4684: 
        !          4685: /a[-b]/i
        !          4686:     A-
        !          4687:  0: A-
        !          4688: 
        !          4689: /a[b-]/i
        !          4690:     A-
        !          4691:  0: A-
        !          4692: 
        !          4693: /a]/i
        !          4694:     A]
        !          4695:  0: A]
        !          4696: 
        !          4697: /a[]]b/i
        !          4698:     A]B
        !          4699:  0: A]B
        !          4700: 
        !          4701: /a[^bc]d/i
        !          4702:     AED
        !          4703:  0: AED
        !          4704: 
        !          4705: /a[^-b]c/i
        !          4706:     ADC
        !          4707:  0: ADC
        !          4708:     *** Failers
        !          4709: No match
        !          4710:     ABD
        !          4711: No match
        !          4712:     A-C
        !          4713: No match
        !          4714: 
        !          4715: /a[^]b]c/i
        !          4716:     ADC
        !          4717:  0: ADC
        !          4718: 
        !          4719: /ab|cd/i
        !          4720:     ABC
        !          4721:  0: AB
        !          4722:     ABCD
        !          4723:  0: AB
        !          4724: 
        !          4725: /()ef/i
        !          4726:     DEF
        !          4727:  0: EF
        !          4728:  1: 
        !          4729: 
        !          4730: /$b/i
        !          4731:     *** Failers
        !          4732: No match
        !          4733:     A]C
        !          4734: No match
        !          4735:     B
        !          4736: No match
        !          4737: 
        !          4738: /a\(b/i
        !          4739:     A(B
        !          4740:  0: A(B
        !          4741: 
        !          4742: /a\(*b/i
        !          4743:     AB
        !          4744:  0: AB
        !          4745:     A((B
        !          4746:  0: A((B
        !          4747: 
        !          4748: /a\\b/i
        !          4749:     A\B
        !          4750: No match
        !          4751: 
        !          4752: /((a))/i
        !          4753:     ABC
        !          4754:  0: A
        !          4755:  1: A
        !          4756:  2: A
        !          4757: 
        !          4758: /(a)b(c)/i
        !          4759:     ABC
        !          4760:  0: ABC
        !          4761:  1: A
        !          4762:  2: C
        !          4763: 
        !          4764: /a+b+c/i
        !          4765:     AABBABC
        !          4766:  0: ABC
        !          4767: 
        !          4768: /a{1,}b{1,}c/i
        !          4769:     AABBABC
        !          4770:  0: ABC
        !          4771: 
        !          4772: /a.+?c/i
        !          4773:     ABCABC
        !          4774:  0: ABC
        !          4775: 
        !          4776: /a.*?c/i
        !          4777:     ABCABC
        !          4778:  0: ABC
        !          4779: 
        !          4780: /a.{0,5}?c/i
        !          4781:     ABCABC
        !          4782:  0: ABC
        !          4783: 
        !          4784: /(a+|b)*/i
        !          4785:     AB
        !          4786:  0: AB
        !          4787:  1: B
        !          4788: 
        !          4789: /(a+|b){0,}/i
        !          4790:     AB
        !          4791:  0: AB
        !          4792:  1: B
        !          4793: 
        !          4794: /(a+|b)+/i
        !          4795:     AB
        !          4796:  0: AB
        !          4797:  1: B
        !          4798: 
        !          4799: /(a+|b){1,}/i
        !          4800:     AB
        !          4801:  0: AB
        !          4802:  1: B
        !          4803: 
        !          4804: /(a+|b)?/i
        !          4805:     AB
        !          4806:  0: A
        !          4807:  1: A
        !          4808: 
        !          4809: /(a+|b){0,1}/i
        !          4810:     AB
        !          4811:  0: A
        !          4812:  1: A
        !          4813: 
        !          4814: /(a+|b){0,1}?/i
        !          4815:     AB
        !          4816:  0: 
        !          4817: 
        !          4818: /[^ab]*/i
        !          4819:     CDE
        !          4820:  0: CDE
        !          4821: 
        !          4822: /abc/i
        !          4823: 
        !          4824: /a*/i
        !          4825:     
        !          4826: 
        !          4827: /([abc])*d/i
        !          4828:     ABBBCD
        !          4829:  0: ABBBCD
        !          4830:  1: C
        !          4831: 
        !          4832: /([abc])*bcd/i
        !          4833:     ABCD
        !          4834:  0: ABCD
        !          4835:  1: A
        !          4836: 
        !          4837: /a|b|c|d|e/i
        !          4838:     E
        !          4839:  0: E
        !          4840: 
        !          4841: /(a|b|c|d|e)f/i
        !          4842:     EF
        !          4843:  0: EF
        !          4844:  1: E
        !          4845: 
        !          4846: /abcd*efg/i
        !          4847:     ABCDEFG
        !          4848:  0: ABCDEFG
        !          4849: 
        !          4850: /ab*/i
        !          4851:     XABYABBBZ
        !          4852:  0: AB
        !          4853:     XAYABBBZ
        !          4854:  0: A
        !          4855: 
        !          4856: /(ab|cd)e/i
        !          4857:     ABCDE
        !          4858:  0: CDE
        !          4859:  1: CD
        !          4860: 
        !          4861: /[abhgefdc]ij/i
        !          4862:     HIJ
        !          4863:  0: HIJ
        !          4864: 
        !          4865: /^(ab|cd)e/i
        !          4866:     ABCDE
        !          4867: No match
        !          4868: 
        !          4869: /(abc|)ef/i
        !          4870:     ABCDEF
        !          4871:  0: EF
        !          4872:  1: 
        !          4873: 
        !          4874: /(a|b)c*d/i
        !          4875:     ABCD
        !          4876:  0: BCD
        !          4877:  1: B
        !          4878: 
        !          4879: /(ab|ab*)bc/i
        !          4880:     ABC
        !          4881:  0: ABC
        !          4882:  1: A
        !          4883: 
        !          4884: /a([bc]*)c*/i
        !          4885:     ABC
        !          4886:  0: ABC
        !          4887:  1: BC
        !          4888: 
        !          4889: /a([bc]*)(c*d)/i
        !          4890:     ABCD
        !          4891:  0: ABCD
        !          4892:  1: BC
        !          4893:  2: D
        !          4894: 
        !          4895: /a([bc]+)(c*d)/i
        !          4896:     ABCD
        !          4897:  0: ABCD
        !          4898:  1: BC
        !          4899:  2: D
        !          4900: 
        !          4901: /a([bc]*)(c+d)/i
        !          4902:     ABCD
        !          4903:  0: ABCD
        !          4904:  1: B
        !          4905:  2: CD
        !          4906: 
        !          4907: /a[bcd]*dcdcde/i
        !          4908:     ADCDCDE
        !          4909:  0: ADCDCDE
        !          4910: 
        !          4911: /a[bcd]+dcdcde/i
        !          4912: 
        !          4913: /(ab|a)b*c/i
        !          4914:     ABC
        !          4915:  0: ABC
        !          4916:  1: AB
        !          4917: 
        !          4918: /((a)(b)c)(d)/i
        !          4919:     ABCD
        !          4920:  0: ABCD
        !          4921:  1: ABC
        !          4922:  2: A
        !          4923:  3: B
        !          4924:  4: D
        !          4925: 
        !          4926: /[a-zA-Z_][a-zA-Z0-9_]*/i
        !          4927:     ALPHA
        !          4928:  0: ALPHA
        !          4929: 
        !          4930: /^a(bc+|b[eh])g|.h$/i
        !          4931:     ABH
        !          4932:  0: BH
        !          4933: 
        !          4934: /(bc+d$|ef*g.|h?i(j|k))/i
        !          4935:     EFFGZ
        !          4936:  0: EFFGZ
        !          4937:  1: EFFGZ
        !          4938:     IJ
        !          4939:  0: IJ
        !          4940:  1: IJ
        !          4941:  2: J
        !          4942:     REFFGZ
        !          4943:  0: EFFGZ
        !          4944:  1: EFFGZ
        !          4945:     *** Failers
        !          4946: No match
        !          4947:     ADCDCDE
        !          4948: No match
        !          4949:     EFFG
        !          4950: No match
        !          4951:     BCDD
        !          4952: No match
        !          4953: 
        !          4954: /((((((((((a))))))))))/i
        !          4955:     A
        !          4956:  0: A
        !          4957:  1: A
        !          4958:  2: A
        !          4959:  3: A
        !          4960:  4: A
        !          4961:  5: A
        !          4962:  6: A
        !          4963:  7: A
        !          4964:  8: A
        !          4965:  9: A
        !          4966: 10: A
        !          4967: 
        !          4968: /((((((((((a))))))))))\10/i
        !          4969:     AA
        !          4970:  0: AA
        !          4971:  1: A
        !          4972:  2: A
        !          4973:  3: A
        !          4974:  4: A
        !          4975:  5: A
        !          4976:  6: A
        !          4977:  7: A
        !          4978:  8: A
        !          4979:  9: A
        !          4980: 10: A
        !          4981: 
        !          4982: /(((((((((a)))))))))/i
        !          4983:     A
        !          4984:  0: A
        !          4985:  1: A
        !          4986:  2: A
        !          4987:  3: A
        !          4988:  4: A
        !          4989:  5: A
        !          4990:  6: A
        !          4991:  7: A
        !          4992:  8: A
        !          4993:  9: A
        !          4994: 
        !          4995: /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i
        !          4996:     A
        !          4997:  0: A
        !          4998:  1: A
        !          4999: 
        !          5000: /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i
        !          5001:     C
        !          5002:  0: C
        !          5003:  1: C
        !          5004: 
        !          5005: /multiple words of text/i
        !          5006:     *** Failers
        !          5007: No match
        !          5008:     AA
        !          5009: No match
        !          5010:     UH-UH
        !          5011: No match
        !          5012: 
        !          5013: /multiple words/i
        !          5014:     MULTIPLE WORDS, YEAH
        !          5015:  0: MULTIPLE WORDS
        !          5016: 
        !          5017: /(.*)c(.*)/i
        !          5018:     ABCDE
        !          5019:  0: ABCDE
        !          5020:  1: AB
        !          5021:  2: DE
        !          5022: 
        !          5023: /\((.*), (.*)\)/i
        !          5024:     (A, B)
        !          5025:  0: (A, B)
        !          5026:  1: A
        !          5027:  2: B
        !          5028: 
        !          5029: /[k]/i
        !          5030: 
        !          5031: /abcd/i
        !          5032:     ABCD
        !          5033:  0: ABCD
        !          5034: 
        !          5035: /a(bc)d/i
        !          5036:     ABCD
        !          5037:  0: ABCD
        !          5038:  1: BC
        !          5039: 
        !          5040: /a[-]?c/i
        !          5041:     AC
        !          5042:  0: AC
        !          5043: 
        !          5044: /(abc)\1/i
        !          5045:     ABCABC
        !          5046:  0: ABCABC
        !          5047:  1: ABC
        !          5048: 
        !          5049: /([a-c]*)\1/i
        !          5050:     ABCABC
        !          5051:  0: ABCABC
        !          5052:  1: ABC
        !          5053: 
        !          5054: /a(?!b)./
        !          5055:     abad
        !          5056:  0: ad
        !          5057: 
        !          5058: /a(?=d)./
        !          5059:     abad
        !          5060:  0: ad
        !          5061: 
        !          5062: /a(?=c|d)./
        !          5063:     abad
        !          5064:  0: ad
        !          5065: 
        !          5066: /a(?:b|c|d)(.)/
        !          5067:     ace
        !          5068:  0: ace
        !          5069:  1: e
        !          5070: 
        !          5071: /a(?:b|c|d)*(.)/
        !          5072:     ace
        !          5073:  0: ace
        !          5074:  1: e
        !          5075: 
        !          5076: /a(?:b|c|d)+?(.)/
        !          5077:     ace
        !          5078:  0: ace
        !          5079:  1: e
        !          5080:     acdbcdbe
        !          5081:  0: acd
        !          5082:  1: d
        !          5083: 
        !          5084: /a(?:b|c|d)+(.)/
        !          5085:     acdbcdbe
        !          5086:  0: acdbcdbe
        !          5087:  1: e
        !          5088: 
        !          5089: /a(?:b|c|d){2}(.)/
        !          5090:     acdbcdbe
        !          5091:  0: acdb
        !          5092:  1: b
        !          5093: 
        !          5094: /a(?:b|c|d){4,5}(.)/
        !          5095:     acdbcdbe
        !          5096:  0: acdbcdb
        !          5097:  1: b
        !          5098: 
        !          5099: /a(?:b|c|d){4,5}?(.)/
        !          5100:     acdbcdbe
        !          5101:  0: acdbcd
        !          5102:  1: d
        !          5103: 
        !          5104: /((foo)|(bar))*/
        !          5105:     foobar
        !          5106:  0: foobar
        !          5107:  1: bar
        !          5108:  2: foo
        !          5109:  3: bar
        !          5110: 
        !          5111: /a(?:b|c|d){6,7}(.)/
        !          5112:     acdbcdbe
        !          5113:  0: acdbcdbe
        !          5114:  1: e
        !          5115: 
        !          5116: /a(?:b|c|d){6,7}?(.)/
        !          5117:     acdbcdbe
        !          5118:  0: acdbcdbe
        !          5119:  1: e
        !          5120: 
        !          5121: /a(?:b|c|d){5,6}(.)/
        !          5122:     acdbcdbe
        !          5123:  0: acdbcdbe
        !          5124:  1: e
        !          5125: 
        !          5126: /a(?:b|c|d){5,6}?(.)/
        !          5127:     acdbcdbe
        !          5128:  0: acdbcdb
        !          5129:  1: b
        !          5130: 
        !          5131: /a(?:b|c|d){5,7}(.)/
        !          5132:     acdbcdbe
        !          5133:  0: acdbcdbe
        !          5134:  1: e
        !          5135: 
        !          5136: /a(?:b|c|d){5,7}?(.)/
        !          5137:     acdbcdbe
        !          5138:  0: acdbcdb
        !          5139:  1: b
        !          5140: 
        !          5141: /a(?:b|(c|e){1,2}?|d)+?(.)/
        !          5142:     ace
        !          5143:  0: ace
        !          5144:  1: c
        !          5145:  2: e
        !          5146: 
        !          5147: /^(.+)?B/
        !          5148:     AB
        !          5149:  0: AB
        !          5150:  1: A
        !          5151: 
        !          5152: /^([^a-z])|(\^)$/
        !          5153:     .
        !          5154:  0: .
        !          5155:  1: .
        !          5156: 
        !          5157: /^[<>]&/
        !          5158:     <&OUT
        !          5159:  0: <&
        !          5160: 
        !          5161: /^(a\1?){4}$/
        !          5162:     aaaaaaaaaa
        !          5163:  0: aaaaaaaaaa
        !          5164:  1: aaaa
        !          5165:     *** Failers
        !          5166: No match
        !          5167:     AB
        !          5168: No match
        !          5169:     aaaaaaaaa
        !          5170: No match
        !          5171:     aaaaaaaaaaa
        !          5172: No match
        !          5173: 
        !          5174: /^(a(?(1)\1)){4}$/
        !          5175:     aaaaaaaaaa
        !          5176:  0: aaaaaaaaaa
        !          5177:  1: aaaa
        !          5178:     *** Failers
        !          5179: No match
        !          5180:     aaaaaaaaa
        !          5181: No match
        !          5182:     aaaaaaaaaaa
        !          5183: No match
        !          5184: 
        !          5185: /(?:(f)(o)(o)|(b)(a)(r))*/
        !          5186:     foobar
        !          5187:  0: foobar
        !          5188:  1: f
        !          5189:  2: o
        !          5190:  3: o
        !          5191:  4: b
        !          5192:  5: a
        !          5193:  6: r
        !          5194: 
        !          5195: /(?<=a)b/
        !          5196:     ab
        !          5197:  0: b
        !          5198:     *** Failers
        !          5199: No match
        !          5200:     cb
        !          5201: No match
        !          5202:     b
        !          5203: No match
        !          5204: 
        !          5205: /(?<!c)b/
        !          5206:     ab
        !          5207:  0: b
        !          5208:     b
        !          5209:  0: b
        !          5210:     b
        !          5211:  0: b
        !          5212: 
        !          5213: /(?:..)*a/
        !          5214:     aba
        !          5215:  0: aba
        !          5216: 
        !          5217: /(?:..)*?a/
        !          5218:     aba
        !          5219:  0: a
        !          5220: 
        !          5221: /^(?:b|a(?=(.)))*\1/
        !          5222:     abc
        !          5223:  0: ab
        !          5224:  1: b
        !          5225: 
        !          5226: /^(){3,5}/
        !          5227:     abc
        !          5228:  0: 
        !          5229:  1: 
        !          5230: 
        !          5231: /^(a+)*ax/
        !          5232:     aax
        !          5233:  0: aax
        !          5234:  1: a
        !          5235: 
        !          5236: /^((a|b)+)*ax/
        !          5237:     aax
        !          5238:  0: aax
        !          5239:  1: a
        !          5240:  2: a
        !          5241: 
        !          5242: /^((a|bc)+)*ax/
        !          5243:     aax
        !          5244:  0: aax
        !          5245:  1: a
        !          5246:  2: a
        !          5247: 
        !          5248: /(a|x)*ab/
        !          5249:     cab
        !          5250:  0: ab
        !          5251: 
        !          5252: /(a)*ab/
        !          5253:     cab
        !          5254:  0: ab
        !          5255: 
        !          5256: /(?:(?i)a)b/
        !          5257:     ab
        !          5258:  0: ab
        !          5259: 
        !          5260: /((?i)a)b/
        !          5261:     ab
        !          5262:  0: ab
        !          5263:  1: a
        !          5264: 
        !          5265: /(?:(?i)a)b/
        !          5266:     Ab
        !          5267:  0: Ab
        !          5268: 
        !          5269: /((?i)a)b/
        !          5270:     Ab
        !          5271:  0: Ab
        !          5272:  1: A
        !          5273: 
        !          5274: /(?:(?i)a)b/
        !          5275:     *** Failers
        !          5276: No match
        !          5277:     cb
        !          5278: No match
        !          5279:     aB
        !          5280: No match
        !          5281: 
        !          5282: /((?i)a)b/
        !          5283: 
        !          5284: /(?i:a)b/
        !          5285:     ab
        !          5286:  0: ab
        !          5287: 
        !          5288: /((?i:a))b/
        !          5289:     ab
        !          5290:  0: ab
        !          5291:  1: a
        !          5292: 
        !          5293: /(?i:a)b/
        !          5294:     Ab
        !          5295:  0: Ab
        !          5296: 
        !          5297: /((?i:a))b/
        !          5298:     Ab
        !          5299:  0: Ab
        !          5300:  1: A
        !          5301: 
        !          5302: /(?i:a)b/
        !          5303:     *** Failers
        !          5304: No match
        !          5305:     aB
        !          5306: No match
        !          5307:     aB
        !          5308: No match
        !          5309: 
        !          5310: /((?i:a))b/
        !          5311: 
        !          5312: /(?:(?-i)a)b/i
        !          5313:     ab
        !          5314:  0: ab
        !          5315: 
        !          5316: /((?-i)a)b/i
        !          5317:     ab
        !          5318:  0: ab
        !          5319:  1: a
        !          5320: 
        !          5321: /(?:(?-i)a)b/i
        !          5322:     aB
        !          5323:  0: aB
        !          5324: 
        !          5325: /((?-i)a)b/i
        !          5326:     aB
        !          5327:  0: aB
        !          5328:  1: a
        !          5329: 
        !          5330: /(?:(?-i)a)b/i
        !          5331:     *** Failers
        !          5332: No match
        !          5333:     aB
        !          5334:  0: aB
        !          5335:     Ab
        !          5336: No match
        !          5337: 
        !          5338: /((?-i)a)b/i
        !          5339: 
        !          5340: /(?:(?-i)a)b/i
        !          5341:     aB
        !          5342:  0: aB
        !          5343: 
        !          5344: /((?-i)a)b/i
        !          5345:     aB
        !          5346:  0: aB
        !          5347:  1: a
        !          5348: 
        !          5349: /(?:(?-i)a)b/i
        !          5350:     *** Failers
        !          5351: No match
        !          5352:     Ab
        !          5353: No match
        !          5354:     AB
        !          5355: No match
        !          5356: 
        !          5357: /((?-i)a)b/i
        !          5358: 
        !          5359: /(?-i:a)b/i
        !          5360:     ab
        !          5361:  0: ab
        !          5362: 
        !          5363: /((?-i:a))b/i
        !          5364:     ab
        !          5365:  0: ab
        !          5366:  1: a
        !          5367: 
        !          5368: /(?-i:a)b/i
        !          5369:     aB
        !          5370:  0: aB
        !          5371: 
        !          5372: /((?-i:a))b/i
        !          5373:     aB
        !          5374:  0: aB
        !          5375:  1: a
        !          5376: 
        !          5377: /(?-i:a)b/i
        !          5378:     *** Failers
        !          5379: No match
        !          5380:     AB
        !          5381: No match
        !          5382:     Ab
        !          5383: No match
        !          5384: 
        !          5385: /((?-i:a))b/i
        !          5386: 
        !          5387: /(?-i:a)b/i
        !          5388:     aB
        !          5389:  0: aB
        !          5390: 
        !          5391: /((?-i:a))b/i
        !          5392:     aB
        !          5393:  0: aB
        !          5394:  1: a
        !          5395: 
        !          5396: /(?-i:a)b/i
        !          5397:     *** Failers
        !          5398: No match
        !          5399:     Ab
        !          5400: No match
        !          5401:     AB
        !          5402: No match
        !          5403: 
        !          5404: /((?-i:a))b/i
        !          5405: 
        !          5406: /((?-i:a.))b/i
        !          5407:     *** Failers
        !          5408: No match
        !          5409:     AB
        !          5410: No match
        !          5411:     a\nB
        !          5412: No match
        !          5413: 
        !          5414: /((?s-i:a.))b/i
        !          5415:     a\nB
        !          5416:  0: a\x0aB
        !          5417:  1: a\x0a
        !          5418: 
        !          5419: /(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/
        !          5420:     cabbbb
        !          5421:  0: cabbbb
        !          5422: 
        !          5423: /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/
        !          5424:     caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
        !          5425:  0: caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
        !          5426: 
        !          5427: /(ab)\d\1/i
        !          5428:     Ab4ab
        !          5429:  0: Ab4ab
        !          5430:  1: Ab
        !          5431:     ab4Ab
        !          5432:  0: ab4Ab
        !          5433:  1: ab
        !          5434: 
        !          5435: /foo\w*\d{4}baz/
        !          5436:     foobar1234baz
        !          5437:  0: foobar1234baz
        !          5438: 
        !          5439: /x(~~)*(?:(?:F)?)?/
        !          5440:     x~~
        !          5441:  0: x~~
        !          5442:  1: ~~
        !          5443: 
        !          5444: /^a(?#xxx){3}c/
        !          5445:     aaac
        !          5446:  0: aaac
        !          5447: 
        !          5448: /^a (?#xxx) (?#yyy) {3}c/x
        !          5449:     aaac
        !          5450:  0: aaac
        !          5451: 
        !          5452: /(?<![cd])b/
        !          5453:     *** Failers
        !          5454: No match
        !          5455:     B\nB
        !          5456: No match
        !          5457:     dbcb
        !          5458: No match
        !          5459: 
        !          5460: /(?<![cd])[ab]/
        !          5461:     dbaacb
        !          5462:  0: a
        !          5463: 
        !          5464: /(?<!(c|d))b/
        !          5465: 
        !          5466: /(?<!(c|d))[ab]/
        !          5467:     dbaacb
        !          5468:  0: a
        !          5469: 
        !          5470: /(?<!cd)[ab]/
        !          5471:     cdaccb
        !          5472:  0: b
        !          5473: 
        !          5474: /^(?:a?b?)*$/
        !          5475:     \
        !          5476:  0: 
        !          5477:     a
        !          5478:  0: a
        !          5479:     ab
        !          5480:  0: ab
        !          5481:     aaa   
        !          5482:  0: aaa
        !          5483:     *** Failers
        !          5484: No match
        !          5485:     dbcb
        !          5486: No match
        !          5487:     a--
        !          5488: No match
        !          5489:     aa-- 
        !          5490: No match
        !          5491: 
        !          5492: /((?s)^a(.))((?m)^b$)/
        !          5493:     a\nb\nc\n
        !          5494:  0: a\x0ab
        !          5495:  1: a\x0a
        !          5496:  2: \x0a
        !          5497:  3: b
        !          5498: 
        !          5499: /((?m)^b$)/
        !          5500:     a\nb\nc\n
        !          5501:  0: b
        !          5502:  1: b
        !          5503: 
        !          5504: /(?m)^b/
        !          5505:     a\nb\n
        !          5506:  0: b
        !          5507: 
        !          5508: /(?m)^(b)/
        !          5509:     a\nb\n
        !          5510:  0: b
        !          5511:  1: b
        !          5512: 
        !          5513: /((?m)^b)/
        !          5514:     a\nb\n
        !          5515:  0: b
        !          5516:  1: b
        !          5517: 
        !          5518: /\n((?m)^b)/
        !          5519:     a\nb\n
        !          5520:  0: \x0ab
        !          5521:  1: b
        !          5522: 
        !          5523: /((?s).)c(?!.)/
        !          5524:     a\nb\nc\n
        !          5525:  0: \x0ac
        !          5526:  1: \x0a
        !          5527:     a\nb\nc\n
        !          5528:  0: \x0ac
        !          5529:  1: \x0a
        !          5530: 
        !          5531: /((?s)b.)c(?!.)/
        !          5532:     a\nb\nc\n
        !          5533:  0: b\x0ac
        !          5534:  1: b\x0a
        !          5535:     a\nb\nc\n
        !          5536:  0: b\x0ac
        !          5537:  1: b\x0a
        !          5538: 
        !          5539: /^b/
        !          5540: 
        !          5541: /()^b/
        !          5542:     *** Failers
        !          5543: No match
        !          5544:     a\nb\nc\n
        !          5545: No match
        !          5546:     a\nb\nc\n
        !          5547: No match
        !          5548: 
        !          5549: /((?m)^b)/
        !          5550:     a\nb\nc\n
        !          5551:  0: b
        !          5552:  1: b
        !          5553: 
        !          5554: /(x)?(?(1)a|b)/
        !          5555:     *** Failers
        !          5556: No match
        !          5557:     a
        !          5558: No match
        !          5559:     a
        !          5560: No match
        !          5561: 
        !          5562: /(x)?(?(1)b|a)/
        !          5563:     a
        !          5564:  0: a
        !          5565: 
        !          5566: /()?(?(1)b|a)/
        !          5567:     a
        !          5568:  0: a
        !          5569: 
        !          5570: /()(?(1)b|a)/
        !          5571: 
        !          5572: /()?(?(1)a|b)/
        !          5573:     a
        !          5574:  0: a
        !          5575:  1: 
        !          5576: 
        !          5577: /^(\()?blah(?(1)(\)))$/
        !          5578:     (blah)
        !          5579:  0: (blah)
        !          5580:  1: (
        !          5581:  2: )
        !          5582:     blah
        !          5583:  0: blah
        !          5584:     *** Failers
        !          5585: No match
        !          5586:     a
        !          5587: No match
        !          5588:     blah)
        !          5589: No match
        !          5590:     (blah
        !          5591: No match
        !          5592: 
        !          5593: /^(\(+)?blah(?(1)(\)))$/
        !          5594:     (blah)
        !          5595:  0: (blah)
        !          5596:  1: (
        !          5597:  2: )
        !          5598:     blah
        !          5599:  0: blah
        !          5600:     *** Failers
        !          5601: No match
        !          5602:     blah)
        !          5603: No match
        !          5604:     (blah
        !          5605: No match
        !          5606: 
        !          5607: /(?(?!a)a|b)/
        !          5608: 
        !          5609: /(?(?!a)b|a)/
        !          5610:     a
        !          5611:  0: a
        !          5612: 
        !          5613: /(?(?=a)b|a)/
        !          5614:     *** Failers
        !          5615: No match
        !          5616:     a
        !          5617: No match
        !          5618:     a
        !          5619: No match
        !          5620: 
        !          5621: /(?(?=a)a|b)/
        !          5622:     a
        !          5623:  0: a
        !          5624: 
        !          5625: /(?=(a+?))(\1ab)/
        !          5626:     aaab
        !          5627:  0: aab
        !          5628:  1: a
        !          5629:  2: aab
        !          5630: 
        !          5631: /^(?=(a+?))\1ab/
        !          5632: 
        !          5633: /(\w+:)+/
        !          5634:     one:
        !          5635:  0: one:
        !          5636:  1: one:
        !          5637: 
        !          5638: /$(?<=^(a))/
        !          5639:     a
        !          5640:  0: 
        !          5641:  1: a
        !          5642: 
        !          5643: /(?=(a+?))(\1ab)/
        !          5644:     aaab
        !          5645:  0: aab
        !          5646:  1: a
        !          5647:  2: aab
        !          5648: 
        !          5649: /^(?=(a+?))\1ab/
        !          5650:     *** Failers
        !          5651: No match
        !          5652:     aaab
        !          5653: No match
        !          5654:     aaab
        !          5655: No match
        !          5656: 
        !          5657: /([\w:]+::)?(\w+)$/
        !          5658:     abcd
        !          5659:  0: abcd
        !          5660:  1: <unset>
        !          5661:  2: abcd
        !          5662:     xy:z:::abcd
        !          5663:  0: xy:z:::abcd
        !          5664:  1: xy:z:::
        !          5665:  2: abcd
        !          5666: 
        !          5667: /^[^bcd]*(c+)/
        !          5668:     aexycd
        !          5669:  0: aexyc
        !          5670:  1: c
        !          5671: 
        !          5672: /(a*)b+/
        !          5673:     caab
        !          5674:  0: aab
        !          5675:  1: aa
        !          5676: 
        !          5677: /([\w:]+::)?(\w+)$/
        !          5678:     abcd
        !          5679:  0: abcd
        !          5680:  1: <unset>
        !          5681:  2: abcd
        !          5682:     xy:z:::abcd
        !          5683:  0: xy:z:::abcd
        !          5684:  1: xy:z:::
        !          5685:  2: abcd
        !          5686:     *** Failers
        !          5687:  0: Failers
        !          5688:  1: <unset>
        !          5689:  2: Failers
        !          5690:     abcd:
        !          5691: No match
        !          5692:     abcd:
        !          5693: No match
        !          5694: 
        !          5695: /^[^bcd]*(c+)/
        !          5696:     aexycd
        !          5697:  0: aexyc
        !          5698:  1: c
        !          5699: 
        !          5700: /(>a+)ab/
        !          5701: 
        !          5702: /(?>a+)b/
        !          5703:     aaab
        !          5704:  0: aaab
        !          5705: 
        !          5706: /([[:]+)/
        !          5707:     a:[b]:
        !          5708:  0: :[
        !          5709:  1: :[
        !          5710: 
        !          5711: /([[=]+)/
        !          5712:     a=[b]=
        !          5713:  0: =[
        !          5714:  1: =[
        !          5715: 
        !          5716: /([[.]+)/
        !          5717:     a.[b].
        !          5718:  0: .[
        !          5719:  1: .[
        !          5720: 
        !          5721: /((?>a+)b)/
        !          5722:     aaab
        !          5723:  0: aaab
        !          5724:  1: aaab
        !          5725: 
        !          5726: /(?>(a+))b/
        !          5727:     aaab
        !          5728:  0: aaab
        !          5729:  1: aaa
        !          5730: 
        !          5731: /((?>[^()]+)|\([^()]*\))+/
        !          5732:     ((abc(ade)ufh()()x
        !          5733:  0: abc(ade)ufh()()x
        !          5734:  1: x
        !          5735: 
        !          5736: /a\Z/
        !          5737:     *** Failers
        !          5738: No match
        !          5739:     aaab
        !          5740: No match
        !          5741:     a\nb\n
        !          5742: No match
        !          5743: 
        !          5744: /b\Z/
        !          5745:     a\nb\n
        !          5746:  0: b
        !          5747: 
        !          5748: /b\z/
        !          5749: 
        !          5750: /b\Z/
        !          5751:     a\nb
        !          5752:  0: b
        !          5753: 
        !          5754: /b\z/
        !          5755:     a\nb
        !          5756:  0: b
        !          5757:     *** Failers
        !          5758: No match
        !          5759:     
        !          5760: /^(?>(?(1)\.|())[^\W_](?>[a-z0-9-]*[^\W_])?)+$/
        !          5761:     a
        !          5762:  0: a
        !          5763:  1: 
        !          5764:     abc
        !          5765:  0: abc
        !          5766:  1: 
        !          5767:     a-b
        !          5768:  0: a-b
        !          5769:  1: 
        !          5770:     0-9 
        !          5771:  0: 0-9
        !          5772:  1: 
        !          5773:     a.b
        !          5774:  0: a.b
        !          5775:  1: 
        !          5776:     5.6.7  
        !          5777:  0: 5.6.7
        !          5778:  1: 
        !          5779:     the.quick.brown.fox
        !          5780:  0: the.quick.brown.fox
        !          5781:  1: 
        !          5782:     a100.b200.300c  
        !          5783:  0: a100.b200.300c
        !          5784:  1: 
        !          5785:     12-ab.1245 
        !          5786:  0: 12-ab.1245
        !          5787:  1: 
        !          5788:     *** Failers
        !          5789: No match
        !          5790:     \
        !          5791: No match
        !          5792:     .a
        !          5793: No match
        !          5794:     -a
        !          5795: No match
        !          5796:     a-
        !          5797: No match
        !          5798:     a.  
        !          5799: No match
        !          5800:     a_b 
        !          5801: No match
        !          5802:     a.-
        !          5803: No match
        !          5804:     a..  
        !          5805: No match
        !          5806:     ab..bc 
        !          5807: No match
        !          5808:     the.quick.brown.fox-
        !          5809: No match
        !          5810:     the.quick.brown.fox.
        !          5811: No match
        !          5812:     the.quick.brown.fox_
        !          5813: No match
        !          5814:     the.quick.brown.fox+       
        !          5815: No match
        !          5816: 
        !          5817: /(?>.*)(?<=(abcd|wxyz))/
        !          5818:     alphabetabcd
        !          5819:  0: alphabetabcd
        !          5820:  1: abcd
        !          5821:     endingwxyz
        !          5822:  0: endingwxyz
        !          5823:  1: wxyz
        !          5824:     *** Failers
        !          5825: No match
        !          5826:     a rather long string that doesn't end with one of them
        !          5827: No match
        !          5828: 
        !          5829: /word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/
        !          5830:     word cat dog elephant mussel cow horse canary baboon snake shark otherword
        !          5831:  0: word cat dog elephant mussel cow horse canary baboon snake shark otherword
        !          5832:     word cat dog elephant mussel cow horse canary baboon snake shark
        !          5833: No match
        !          5834:   
        !          5835: /word (?>[a-zA-Z0-9]+ ){0,30}otherword/
        !          5836:     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
        !          5837: No match
        !          5838: 
        !          5839: /(?<=\d{3}(?!999))foo/
        !          5840:     999foo
        !          5841:  0: foo
        !          5842:     123999foo 
        !          5843:  0: foo
        !          5844:     *** Failers
        !          5845: No match
        !          5846:     123abcfoo
        !          5847: No match
        !          5848:     
        !          5849: /(?<=(?!...999)\d{3})foo/
        !          5850:     999foo
        !          5851:  0: foo
        !          5852:     123999foo 
        !          5853:  0: foo
        !          5854:     *** Failers
        !          5855: No match
        !          5856:     123abcfoo
        !          5857: No match
        !          5858: 
        !          5859: /(?<=\d{3}(?!999)...)foo/
        !          5860:     123abcfoo
        !          5861:  0: foo
        !          5862:     123456foo 
        !          5863:  0: foo
        !          5864:     *** Failers
        !          5865: No match
        !          5866:     123999foo  
        !          5867: No match
        !          5868:     
        !          5869: /(?<=\d{3}...)(?<!999)foo/
        !          5870:     123abcfoo   
        !          5871:  0: foo
        !          5872:     123456foo 
        !          5873:  0: foo
        !          5874:     *** Failers
        !          5875: No match
        !          5876:     123999foo  
        !          5877: No match
        !          5878: 
        !          5879: /<a[\s]+href[\s]*=[\s]*          # find <a href=
        !          5880:  ([\"\'])?                       # find single or double quote
        !          5881:  (?(1) (.*?)\1 | ([^\s]+))       # if quote found, match up to next matching
        !          5882:                                  # quote, otherwise match up to next space
        !          5883: /isx
        !          5884:     <a href=abcd xyz
        !          5885:  0: <a href=abcd
        !          5886:  1: <unset>
        !          5887:  2: <unset>
        !          5888:  3: abcd
        !          5889:     <a href=\"abcd xyz pqr\" cats
        !          5890:  0: <a href="abcd xyz pqr"
        !          5891:  1: "
        !          5892:  2: abcd xyz pqr
        !          5893:     <a href=\'abcd xyz pqr\' cats
        !          5894:  0: <a href='abcd xyz pqr'
        !          5895:  1: '
        !          5896:  2: abcd xyz pqr
        !          5897: 
        !          5898: /<a\s+href\s*=\s*                # find <a href=
        !          5899:  (["'])?                         # find single or double quote
        !          5900:  (?(1) (.*?)\1 | (\S+))          # if quote found, match up to next matching
        !          5901:                                  # quote, otherwise match up to next space
        !          5902: /isx
        !          5903:     <a href=abcd xyz
        !          5904:  0: <a href=abcd
        !          5905:  1: <unset>
        !          5906:  2: <unset>
        !          5907:  3: abcd
        !          5908:     <a href=\"abcd xyz pqr\" cats
        !          5909:  0: <a href="abcd xyz pqr"
        !          5910:  1: "
        !          5911:  2: abcd xyz pqr
        !          5912:     <a href       =       \'abcd xyz pqr\' cats
        !          5913:  0: <a href       =       'abcd xyz pqr'
        !          5914:  1: '
        !          5915:  2: abcd xyz pqr
        !          5916: 
        !          5917: /<a\s+href(?>\s*)=(?>\s*)        # find <a href=
        !          5918:  (["'])?                         # find single or double quote
        !          5919:  (?(1) (.*?)\1 | (\S+))          # if quote found, match up to next matching
        !          5920:                                  # quote, otherwise match up to next space
        !          5921: /isx
        !          5922:     <a href=abcd xyz
        !          5923:  0: <a href=abcd
        !          5924:  1: <unset>
        !          5925:  2: <unset>
        !          5926:  3: abcd
        !          5927:     <a href=\"abcd xyz pqr\" cats
        !          5928:  0: <a href="abcd xyz pqr"
        !          5929:  1: "
        !          5930:  2: abcd xyz pqr
        !          5931:     <a href       =       \'abcd xyz pqr\' cats
        !          5932:  0: <a href       =       'abcd xyz pqr'
        !          5933:  1: '
        !          5934:  2: abcd xyz pqr
        !          5935: 
        !          5936: /((Z)+|A)*/
        !          5937:     ZABCDEFG
        !          5938:  0: ZA
        !          5939:  1: A
        !          5940:  2: Z
        !          5941: 
        !          5942: /(Z()|A)*/
        !          5943:     ZABCDEFG
        !          5944:  0: ZA
        !          5945:  1: A
        !          5946:  2: 
        !          5947: 
        !          5948: /(Z(())|A)*/
        !          5949:     ZABCDEFG
        !          5950:  0: ZA
        !          5951:  1: A
        !          5952:  2: 
        !          5953:  3: 
        !          5954: 
        !          5955: /((?>Z)+|A)*/
        !          5956:     ZABCDEFG
        !          5957:  0: ZA
        !          5958:  1: A
        !          5959: 
        !          5960: /((?>)+|A)*/
        !          5961:     ZABCDEFG
        !          5962:  0: 
        !          5963:  1: 
        !          5964: 
        !          5965: /a*/g
        !          5966:     abbab
        !          5967:  0: a
        !          5968:  0: 
        !          5969:  0: 
        !          5970:  0: a
        !          5971:  0: 
        !          5972:  0: 
        !          5973: 
        !          5974: /^[a-\d]/
        !          5975:     abcde
        !          5976:  0: a
        !          5977:     -things
        !          5978:  0: -
        !          5979:     0digit
        !          5980:  0: 0
        !          5981:     *** Failers
        !          5982: No match
        !          5983:     bcdef    
        !          5984: No match
        !          5985: 
        !          5986: /^[\d-a]/
        !          5987:     abcde
        !          5988:  0: a
        !          5989:     -things
        !          5990:  0: -
        !          5991:     0digit
        !          5992:  0: 0
        !          5993:     *** Failers
        !          5994: No match
        !          5995:     bcdef    
        !          5996: No match
        !          5997:     
        !          5998: /[[:space:]]+/
        !          5999:     > \x09\x0a\x0c\x0d\x0b<
        !          6000:  0:  \x09\x0a\x0c\x0d\x0b
        !          6001:      
        !          6002: /[[:blank:]]+/
        !          6003:     > \x09\x0a\x0c\x0d\x0b<
        !          6004:  0:  \x09
        !          6005:      
        !          6006: /[\s]+/
        !          6007:     > \x09\x0a\x0c\x0d\x0b<
        !          6008:  0:  \x09\x0a\x0c\x0d
        !          6009:      
        !          6010: /\s+/
        !          6011:     > \x09\x0a\x0c\x0d\x0b<
        !          6012:  0:  \x09\x0a\x0c\x0d
        !          6013:      
        !          6014: /ab/x
        !          6015:     ab
        !          6016: No match
        !          6017: 
        !          6018: /(?!\A)x/m
        !          6019:   a\nxb\n
        !          6020:  0: x
        !          6021: 
        !          6022: /(?!^)x/m
        !          6023:   a\nxb\n
        !          6024: No match
        !          6025: 
        !          6026: /abc\Qabc\Eabc/
        !          6027:     abcabcabc
        !          6028:  0: abcabcabc
        !          6029:     
        !          6030: /abc\Q(*+|\Eabc/
        !          6031:     abc(*+|abc 
        !          6032:  0: abc(*+|abc
        !          6033: 
        !          6034: /   abc\Q abc\Eabc/x
        !          6035:     abc abcabc
        !          6036:  0: abc abcabc
        !          6037:     *** Failers
        !          6038: No match
        !          6039:     abcabcabc  
        !          6040: No match
        !          6041:     
        !          6042: /abc#comment
        !          6043:     \Q#not comment
        !          6044:     literal\E/x
        !          6045:     abc#not comment\n    literal     
        !          6046:  0: abc#not comment\x0a    literal
        !          6047: 
        !          6048: /abc#comment
        !          6049:     \Q#not comment
        !          6050:     literal/x
        !          6051:     abc#not comment\n    literal     
        !          6052:  0: abc#not comment\x0a    literal
        !          6053: 
        !          6054: /abc#comment
        !          6055:     \Q#not comment
        !          6056:     literal\E #more comment
        !          6057:     /x
        !          6058:     abc#not comment\n    literal     
        !          6059:  0: abc#not comment\x0a    literal
        !          6060: 
        !          6061: /abc#comment
        !          6062:     \Q#not comment
        !          6063:     literal\E #more comment/x
        !          6064:     abc#not comment\n    literal     
        !          6065:  0: abc#not comment\x0a    literal
        !          6066: 
        !          6067: /\Qabc\$xyz\E/
        !          6068:     abc\\\$xyz
        !          6069:  0: abc\$xyz
        !          6070: 
        !          6071: /\Qabc\E\$\Qxyz\E/
        !          6072:     abc\$xyz
        !          6073:  0: abc$xyz
        !          6074: 
        !          6075: /\Gabc/
        !          6076:     abc
        !          6077:  0: abc
        !          6078:     *** Failers
        !          6079: No match
        !          6080:     xyzabc  
        !          6081: No match
        !          6082: 
        !          6083: /\Gabc./g
        !          6084:     abc1abc2xyzabc3
        !          6085:  0: abc1
        !          6086:  0: abc2
        !          6087: 
        !          6088: /abc./g
        !          6089:     abc1abc2xyzabc3 
        !          6090:  0: abc1
        !          6091:  0: abc2
        !          6092:  0: abc3
        !          6093: 
        !          6094: /a(?x: b c )d/
        !          6095:     XabcdY
        !          6096:  0: abcd
        !          6097:     *** Failers 
        !          6098: No match
        !          6099:     Xa b c d Y 
        !          6100: No match
        !          6101: 
        !          6102: /((?x)x y z | a b c)/
        !          6103:     XabcY
        !          6104:  0: abc
        !          6105:  1: abc
        !          6106:     AxyzB 
        !          6107:  0: xyz
        !          6108:  1: xyz
        !          6109: 
        !          6110: /(?i)AB(?-i)C/
        !          6111:     XabCY
        !          6112:  0: abC
        !          6113:     *** Failers
        !          6114: No match
        !          6115:     XabcY  
        !          6116: No match
        !          6117: 
        !          6118: /((?i)AB(?-i)C|D)E/
        !          6119:     abCE
        !          6120:  0: abCE
        !          6121:  1: abC
        !          6122:     DE
        !          6123:  0: DE
        !          6124:  1: D
        !          6125:     *** Failers
        !          6126: No match
        !          6127:     abcE
        !          6128: No match
        !          6129:     abCe  
        !          6130: No match
        !          6131:     dE
        !          6132: No match
        !          6133:     De    
        !          6134: No match
        !          6135: 
        !          6136: /(.*)\d+\1/
        !          6137:     abc123abc
        !          6138:  0: abc123abc
        !          6139:  1: abc
        !          6140:     abc123bc 
        !          6141:  0: bc123bc
        !          6142:  1: bc
        !          6143: 
        !          6144: /(.*)\d+\1/s
        !          6145:     abc123abc
        !          6146:  0: abc123abc
        !          6147:  1: abc
        !          6148:     abc123bc 
        !          6149:  0: bc123bc
        !          6150:  1: bc
        !          6151:     
        !          6152: /((.*))\d+\1/
        !          6153:     abc123abc
        !          6154:  0: abc123abc
        !          6155:  1: abc
        !          6156:  2: abc
        !          6157:     abc123bc  
        !          6158:  0: bc123bc
        !          6159:  1: bc
        !          6160:  2: bc
        !          6161: 
        !          6162: /-- This tests for an IPv6 address in the form where it can have up to --/
        !          6163: /-- eight components, one and only one of which is empty. This must be --/
        !          6164: No match
        !          6165: /-- an internal component. --/
        !          6166: No match
        !          6167: 
        !          6168: /^(?!:)                       # colon disallowed at start
        !          6169:   (?:                         # start of item
        !          6170:     (?: [0-9a-f]{1,4} |       # 1-4 hex digits or
        !          6171:     (?(1)0 | () ) )           # if null previously matched, fail; else null
        !          6172:     :                         # followed by colon
        !          6173:   ){1,7}                      # end item; 1-7 of them required               
        !          6174:   [0-9a-f]{1,4} $             # final hex number at end of string
        !          6175:   (?(1)|.)                    # check that there was an empty component
        !          6176:   /xi
        !          6177:     a123::a123
        !          6178:  0: a123::a123
        !          6179:  1: 
        !          6180:     a123:b342::abcd
        !          6181:  0: a123:b342::abcd
        !          6182:  1: 
        !          6183:     a123:b342::324e:abcd
        !          6184:  0: a123:b342::324e:abcd
        !          6185:  1: 
        !          6186:     a123:ddde:b342::324e:abcd
        !          6187:  0: a123:ddde:b342::324e:abcd
        !          6188:  1: 
        !          6189:     a123:ddde:b342::324e:dcba:abcd
        !          6190:  0: a123:ddde:b342::324e:dcba:abcd
        !          6191:  1: 
        !          6192:     a123:ddde:9999:b342::324e:dcba:abcd
        !          6193:  0: a123:ddde:9999:b342::324e:dcba:abcd
        !          6194:  1: 
        !          6195:     *** Failers
        !          6196: No match
        !          6197:     1:2:3:4:5:6:7:8
        !          6198: No match
        !          6199:     a123:bce:ddde:9999:b342::324e:dcba:abcd
        !          6200: No match
        !          6201:     a123::9999:b342::324e:dcba:abcd
        !          6202: No match
        !          6203:     abcde:2:3:4:5:6:7:8
        !          6204: No match
        !          6205:     ::1
        !          6206: No match
        !          6207:     abcd:fee0:123::   
        !          6208: No match
        !          6209:     :1
        !          6210: No match
        !          6211:     1:  
        !          6212: No match
        !          6213: 
        !          6214: /[z\Qa-d]\E]/
        !          6215:     z
        !          6216:  0: z
        !          6217:     a
        !          6218:  0: a
        !          6219:     -
        !          6220:  0: -
        !          6221:     d
        !          6222:  0: d
        !          6223:     ] 
        !          6224:  0: ]
        !          6225:     *** Failers
        !          6226:  0: a
        !          6227:     b     
        !          6228: No match
        !          6229: 
        !          6230: /[\z\C]/
        !          6231:     z
        !          6232:  0: z
        !          6233:     C 
        !          6234:  0: C
        !          6235:     
        !          6236: /\M/
        !          6237:     M 
        !          6238:  0: M
        !          6239:     
        !          6240: /(a+)*b/
        !          6241:     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
        !          6242: No match
        !          6243:     
        !          6244: /(?i)reg(?:ul(?:[a]|ae)r|ex)/
        !          6245:     REGular
        !          6246:  0: REGular
        !          6247:     regulaer
        !          6248:  0: regulaer
        !          6249:     Regex  
        !          6250:  0: Regex
        !          6251:     regulr 
        !          6252:  0: regul\xe4r
        !          6253: 
        !          6254: /[--]+/
        !          6255:     
        !          6256:  0: \xc5\xe6\xe5\xe4\xe0
        !          6257:     
        !          6258:  0: \xc5\xe6\xe5\xe4\xff
        !          6259:     
        !          6260:  0: \xc5\xe6\xe5\xe4\xc0
        !          6261:     
        !          6262:  0: \xc5\xe6\xe5\xe4\xdf
        !          6263: 
        !          6264: /(?<=Z)X./
        !          6265:   \x84XAZXB
        !          6266:  0: XB
        !          6267: 
        !          6268: /ab cd (?x) de fg/
        !          6269:     ab cd defg
        !          6270:  0: ab cd defg
        !          6271: 
        !          6272: /ab cd(?x) de fg/
        !          6273:     ab cddefg
        !          6274:  0: ab cddefg
        !          6275:     ** Failers 
        !          6276: No match
        !          6277:     abcddefg
        !          6278: No match
        !          6279: 
        !          6280: /(?<![^f]oo)(bar)/
        !          6281:     foobarX 
        !          6282:  0: bar
        !          6283:  1: bar
        !          6284:     ** Failers 
        !          6285: No match
        !          6286:     boobarX
        !          6287: No match
        !          6288: 
        !          6289: /(?<![^f])X/
        !          6290:     offX
        !          6291:  0: X
        !          6292:     ** Failers
        !          6293: No match
        !          6294:     onyX  
        !          6295: No match
        !          6296: 
        !          6297: /(?<=[^f])X/
        !          6298:     onyX
        !          6299:  0: X
        !          6300:     ** Failers
        !          6301: No match
        !          6302:     offX 
        !          6303: No match
        !          6304: 
        !          6305: /^/mg
        !          6306:     a\nb\nc\n
        !          6307:  0: 
        !          6308:  0: 
        !          6309:  0: 
        !          6310:     \ 
        !          6311:  0: 
        !          6312:     
        !          6313: /(?<=C\n)^/mg
        !          6314:     A\nC\nC\n 
        !          6315:  0: 
        !          6316: 
        !          6317: /(?:(?(1)a|b)(X))+/
        !          6318:     bXaX
        !          6319:  0: bXaX
        !          6320:  1: X
        !          6321: 
        !          6322: /(?:(?(1)\1a|b)(X|Y))+/
        !          6323:     bXXaYYaY
        !          6324:  0: bXXaYYaY
        !          6325:  1: Y
        !          6326:     bXYaXXaX  
        !          6327:  0: bX
        !          6328:  1: X
        !          6329: 
        !          6330: /()()()()()()()()()(?:(?(10)\10a|b)(X|Y))+/
        !          6331:     bXXaYYaY
        !          6332:  0: bX
        !          6333:  1: 
        !          6334:  2: 
        !          6335:  3: 
        !          6336:  4: 
        !          6337:  5: 
        !          6338:  6: 
        !          6339:  7: 
        !          6340:  8: 
        !          6341:  9: 
        !          6342: 10: X
        !          6343: 
        !          6344: /[[,abc,]+]/
        !          6345:     abc]
        !          6346:  0: abc]
        !          6347:     a,b]
        !          6348:  0: a,b]
        !          6349:     [a,b,c]  
        !          6350:  0: [a,b,c]
        !          6351: 
        !          6352: /(?-x: )/x
        !          6353:     A\x20B
        !          6354:  0:  
        !          6355:     
        !          6356: "(?x)(?-x: \s*#\s*)"
        !          6357:     A # B
        !          6358:  0:  # 
        !          6359:     ** Failers
        !          6360: No match
        !          6361:     #  
        !          6362: No match
        !          6363: 
        !          6364: "(?x-is)(?:(?-ixs) \s*#\s*) include"
        !          6365:     A #include
        !          6366:  0:  #include
        !          6367:     ** Failers
        !          6368: No match
        !          6369:     A#include  
        !          6370: No match
        !          6371:     A #Include
        !          6372: No match
        !          6373: 
        !          6374: /a*b*\w/
        !          6375:     aaabbbb
        !          6376:  0: aaabbbb
        !          6377:     aaaa
        !          6378:  0: aaaa
        !          6379:     a
        !          6380:  0: a
        !          6381: 
        !          6382: /a*b?\w/
        !          6383:     aaabbbb
        !          6384:  0: aaabb
        !          6385:     aaaa
        !          6386:  0: aaaa
        !          6387:     a
        !          6388:  0: a
        !          6389: 
        !          6390: /a*b{0,4}\w/
        !          6391:     aaabbbb
        !          6392:  0: aaabbbb
        !          6393:     aaaa
        !          6394:  0: aaaa
        !          6395:     a
        !          6396:  0: a
        !          6397: 
        !          6398: /a*b{0,}\w/
        !          6399:     aaabbbb
        !          6400:  0: aaabbbb
        !          6401:     aaaa
        !          6402:  0: aaaa
        !          6403:     a
        !          6404:  0: a
        !          6405:     
        !          6406: /a*\d*\w/
        !          6407:     0a
        !          6408:  0: 0a
        !          6409:     a 
        !          6410:  0: a
        !          6411:     
        !          6412: /a*b *\w/x
        !          6413:     a 
        !          6414:  0: a
        !          6415: 
        !          6416: /a*b#comment
        !          6417:   *\w/x
        !          6418:     a 
        !          6419:  0: a
        !          6420: 
        !          6421: /a* b *\w/x
        !          6422:     a 
        !          6423:  0: a
        !          6424: 
        !          6425: /^\w+=.*(\\\n.*)*/
        !          6426:     abc=xyz\\\npqr
        !          6427:  0: abc=xyz\
        !          6428: 
        !          6429: /(?=(\w+))\1:/
        !          6430:     abcd:
        !          6431:  0: abcd:
        !          6432:  1: abcd
        !          6433: 
        !          6434: /^(?=(\w+))\1:/
        !          6435:     abcd:
        !          6436:  0: abcd:
        !          6437:  1: abcd
        !          6438: 
        !          6439: /^\Eabc/
        !          6440:     abc
        !          6441:  0: abc
        !          6442:     
        !          6443: /^[\Eabc]/
        !          6444:     a
        !          6445:  0: a
        !          6446:     ** Failers 
        !          6447: No match
        !          6448:     E 
        !          6449: No match
        !          6450:     
        !          6451: /^[a-\Ec]/
        !          6452:     b
        !          6453:  0: b
        !          6454:     ** Failers
        !          6455: No match
        !          6456:     -
        !          6457: No match
        !          6458:     E    
        !          6459: No match
        !          6460: 
        !          6461: /^[a\E\E-\Ec]/
        !          6462:     b
        !          6463:  0: b
        !          6464:     ** Failers
        !          6465: No match
        !          6466:     -
        !          6467: No match
        !          6468:     E    
        !          6469: No match
        !          6470: 
        !          6471: /^[\E\Qa\E-\Qz\E]+/
        !          6472:     b
        !          6473:  0: b
        !          6474:     ** Failers
        !          6475: No match
        !          6476:     -  
        !          6477: No match
        !          6478:     
        !          6479: /^[a\Q]bc\E]/
        !          6480:     a
        !          6481:  0: a
        !          6482:     ]
        !          6483:  0: ]
        !          6484:     c
        !          6485:  0: c
        !          6486:     
        !          6487: /^[a-\Q\E]/
        !          6488:     a
        !          6489:  0: a
        !          6490:     -     
        !          6491:  0: -
        !          6492: 
        !          6493: /^(a()*)*/
        !          6494:     aaaa
        !          6495:  0: aaaa
        !          6496:  1: a
        !          6497:  2: 
        !          6498: 
        !          6499: /^(?:a(?:(?:))*)*/
        !          6500:     aaaa
        !          6501:  0: aaaa
        !          6502: 
        !          6503: /^(a()+)+/
        !          6504:     aaaa
        !          6505:  0: aaaa
        !          6506:  1: a
        !          6507:  2: 
        !          6508: 
        !          6509: /^(?:a(?:(?:))+)+/
        !          6510:     aaaa
        !          6511:  0: aaaa
        !          6512: 
        !          6513: /(a){0,3}(?(1)b|(c|))*D/
        !          6514:     abbD
        !          6515:  0: abbD
        !          6516:  1: a
        !          6517:     ccccD
        !          6518:  0: ccccD
        !          6519:  1: <unset>
        !          6520:  2: 
        !          6521:     D  
        !          6522:  0: D
        !          6523:  1: <unset>
        !          6524:  2: 
        !          6525: 
        !          6526: /(a|)*\d/
        !          6527:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
        !          6528: No match
        !          6529:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
        !          6530:  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
        !          6531:  1: 
        !          6532: 
        !          6533: /(?>a|)*\d/
        !          6534:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
        !          6535: No match
        !          6536:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
        !          6537:  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
        !          6538: 
        !          6539: /(?:a|)*\d/
        !          6540:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
        !          6541: No match
        !          6542:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
        !          6543:  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
        !          6544: 
        !          6545: /\Z/g
        !          6546:   abc\n
        !          6547:  0: 
        !          6548:  0: 
        !          6549:   
        !          6550: /^(?s)(?>.*)(?<!\n)/
        !          6551:   abc
        !          6552:  0: abc
        !          6553:   abc\n  
        !          6554: No match
        !          6555: 
        !          6556: /^(?![^\n]*\n\z)/
        !          6557:   abc
        !          6558:  0: 
        !          6559:   abc\n 
        !          6560: No match
        !          6561:   
        !          6562: /\z(?<!\n)/
        !          6563:   abc
        !          6564:  0: 
        !          6565:   abc\n  
        !          6566: No match
        !          6567: 
        !          6568: /(.*(.)?)*/
        !          6569:     abcd
        !          6570:  0: abcd
        !          6571:  1: 
        !          6572: 
        !          6573: /( (A | (?(1)0|) )*   )/x
        !          6574:     abcd
        !          6575:  0: 
        !          6576:  1: 
        !          6577:  2: 
        !          6578: 
        !          6579: /( ( (?(1)0|) )*   )/x
        !          6580:     abcd
        !          6581:  0: 
        !          6582:  1: 
        !          6583:  2: 
        !          6584: 
        !          6585: /(  (?(1)0|)*   )/x
        !          6586:     abcd
        !          6587:  0: 
        !          6588:  1: 
        !          6589: 
        !          6590: /[[:abcd:xyz]]/
        !          6591:     a]
        !          6592:  0: a]
        !          6593:     :] 
        !          6594:  0: :]
        !          6595:     
        !          6596: /[abc[:x\]pqr]/
        !          6597:     a
        !          6598:  0: a
        !          6599:     [
        !          6600:  0: [
        !          6601:     :
        !          6602:  0: :
        !          6603:     ]
        !          6604:  0: ]
        !          6605:     p    
        !          6606:  0: p
        !          6607: 
        !          6608: /.*[op][xyz]/
        !          6609:     fooabcfoo
        !          6610: No match
        !          6611: 
        !          6612: /(?(?=.*b)b|^)/
        !          6613:    adc
        !          6614:  0: 
        !          6615:    abc 
        !          6616:  0: b
        !          6617: 
        !          6618: /(?(?=^.*b)b|^)/
        !          6619:    adc
        !          6620:  0: 
        !          6621:    abc 
        !          6622: No match
        !          6623: 
        !          6624: /(?(?=.*b)b|^)*/
        !          6625:    adc
        !          6626:  0: 
        !          6627:    abc 
        !          6628:  0: 
        !          6629: 
        !          6630: /(?(?=.*b)b|^)+/
        !          6631:    adc
        !          6632:  0: 
        !          6633:    abc 
        !          6634:  0: b
        !          6635: 
        !          6636: /(?(?=b).*b|^d)/
        !          6637:     abc
        !          6638:  0: b
        !          6639: 
        !          6640: /(?(?=.*b).*b|^d)/
        !          6641:     abc
        !          6642:  0: ab
        !          6643: 
        !          6644: /^%((?(?=[a])[^%])|b)*%$/
        !          6645:     %ab%
        !          6646:  0: %ab%
        !          6647:  1: 
        !          6648: 
        !          6649: /(?i)a(?-i)b|c/
        !          6650:     XabX
        !          6651:  0: ab
        !          6652:     XAbX
        !          6653:  0: Ab
        !          6654:     CcC 
        !          6655:  0: c
        !          6656:     ** Failers
        !          6657: No match
        !          6658:     XABX   
        !          6659: No match
        !          6660: 
        !          6661: /[\x00-\xff\s]+/
        !          6662:     \x0a\x0b\x0c\x0d
        !          6663:  0: \x0a\x0b\x0c\x0d
        !          6664: 
        !          6665: /^\c/
        !          6666:     ?
        !          6667:  0: ?
        !          6668: 
        !          6669: /-- End of testinput1 --/

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>