Annotation of embedaddon/pcre/testdata/testinput8, revision 1.1.1.2

1.1.1.2 ! misho       1: /-- This set of tests check the DFA matching functionality of pcre_dfa_exec().
        !             2:     The -dfa flag must be used with pcretest when running it. --/
        !             3:      
        !             4: /abc/
        !             5:     abc
        !             6:     
        !             7: /ab*c/
        !             8:     abc
        !             9:     abbbbc
        !            10:     ac
        !            11:     
        !            12: /ab+c/
        !            13:     abc
        !            14:     abbbbbbc
        !            15:     *** Failers 
        !            16:     ac
        !            17:     ab
        !            18:     
        !            19: /a*/
        !            20:     a
        !            21:     aaaaaaaaaaaaaaaaa
        !            22:     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
        !            23:     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\F 
        !            24:     
        !            25: /(a|abcd|african)/
        !            26:     a
        !            27:     abcd
        !            28:     african
        !            29:     
        !            30: /^abc/
        !            31:     abcdef
        !            32:     *** Failers
        !            33:     xyzabc
        !            34:     xyz\nabc    
        !            35:     
        !            36: /^abc/m
        !            37:     abcdef
        !            38:     xyz\nabc    
        !            39:     *** Failers
        !            40:     xyzabc
        !            41:     
        !            42: /\Aabc/
        !            43:     abcdef
        !            44:     *** Failers
        !            45:     xyzabc
        !            46:     xyz\nabc    
        !            47:     
        !            48: /\Aabc/m
        !            49:     abcdef
        !            50:     *** Failers
        !            51:     xyzabc
        !            52:     xyz\nabc    
        !            53:     
        !            54: /\Gabc/
        !            55:     abcdef
        !            56:     xyzabc\>3
        !            57:     *** Failers
        !            58:     xyzabc    
        !            59:     xyzabc\>2 
        !            60:     
        !            61: /x\dy\Dz/
        !            62:     x9yzz
        !            63:     x0y+z
        !            64:     *** Failers
        !            65:     xyz
        !            66:     xxy0z     
        !            67:     
        !            68: /x\sy\Sz/
        !            69:     x yzz
        !            70:     x y+z
        !            71:     *** Failers
        !            72:     xyz
        !            73:     xxyyz
        !            74:     
        !            75: /x\wy\Wz/
        !            76:     xxy+z
        !            77:     *** Failers
        !            78:     xxy0z
        !            79:     x+y+z         
        !            80:     
        !            81: /x.y/
        !            82:     x+y
        !            83:     x-y
        !            84:     *** Failers
        !            85:     x\ny
        !            86:     
        !            87: /x.y/s
        !            88:     x+y
        !            89:     x-y
        !            90:     x\ny
        !            91: 
        !            92: /(a.b(?s)c.d|x.y)p.q/
        !            93:     a+bc+dp+q
        !            94:     a+bc\ndp+q
        !            95:     x\nyp+q 
        !            96:     *** Failers 
        !            97:     a\nbc\ndp+q
        !            98:     a+bc\ndp\nq
        !            99:     x\nyp\nq 
        !           100: 
        !           101: /a\d\z/
        !           102:     ba0
        !           103:     *** Failers
        !           104:     ba0\n
        !           105:     ba0\ncd   
        !           106: 
        !           107: /a\d\z/m
        !           108:     ba0
        !           109:     *** Failers
        !           110:     ba0\n
        !           111:     ba0\ncd   
        !           112: 
        !           113: /a\d\Z/
        !           114:     ba0
        !           115:     ba0\n
        !           116:     *** Failers
        !           117:     ba0\ncd   
        !           118: 
        !           119: /a\d\Z/m
        !           120:     ba0
        !           121:     ba0\n
        !           122:     *** Failers
        !           123:     ba0\ncd   
        !           124: 
        !           125: /a\d$/
        !           126:     ba0
        !           127:     ba0\n
        !           128:     *** Failers
        !           129:     ba0\ncd   
        !           130: 
        !           131: /a\d$/m
        !           132:     ba0
        !           133:     ba0\n
        !           134:     ba0\ncd   
        !           135:     *** Failers
        !           136: 
        !           137: /abc/i
        !           138:     abc
        !           139:     aBc
        !           140:     ABC
        !           141:     
        !           142: /[^a]/
        !           143:     abcd
        !           144:     
        !           145: /ab?\w/
        !           146:     abz
        !           147:     abbz
        !           148:     azz  
        !           149: 
        !           150: /x{0,3}yz/
        !           151:     ayzq
        !           152:     axyzq
        !           153:     axxyz
        !           154:     axxxyzq
        !           155:     axxxxyzq
        !           156:     *** Failers
        !           157:     ax
        !           158:     axx     
        !           159:       
        !           160: /x{3}yz/
        !           161:     axxxyzq
        !           162:     axxxxyzq
        !           163:     *** Failers
        !           164:     ax
        !           165:     axx     
        !           166:     ayzq
        !           167:     axyzq
        !           168:     axxyz
        !           169:       
        !           170: /x{2,3}yz/
        !           171:     axxyz
        !           172:     axxxyzq
        !           173:     axxxxyzq
        !           174:     *** Failers
        !           175:     ax
        !           176:     axx     
        !           177:     ayzq
        !           178:     axyzq
        !           179:       
        !           180: /[^a]+/
        !           181:     bac
        !           182:     bcdefax
        !           183:     *** Failers
        !           184:     aaaaa   
        !           185: 
        !           186: /[^a]*/
        !           187:     bac
        !           188:     bcdefax
        !           189:     *** Failers
        !           190:     aaaaa   
        !           191:     
        !           192: /[^a]{3,5}/
        !           193:     xyz
        !           194:     awxyza
        !           195:     abcdefa
        !           196:     abcdefghijk
        !           197:     *** Failers
        !           198:     axya
        !           199:     axa
        !           200:     aaaaa         
        !           201: 
        !           202: /\d*/
        !           203:     1234b567
        !           204:     xyz
        !           205:     
        !           206: /\D*/
        !           207:     a1234b567
        !           208:     xyz
        !           209:      
        !           210: /\d+/
        !           211:     ab1234c56
        !           212:     *** Failers
        !           213:     xyz
        !           214:     
        !           215: /\D+/
        !           216:     ab123c56
        !           217:     *** Failers
        !           218:     789
        !           219:     
        !           220: /\d?A/
        !           221:     045ABC
        !           222:     ABC
        !           223:     *** Failers
        !           224:     XYZ
        !           225:     
        !           226: /\D?A/
        !           227:     ABC
        !           228:     BAC
        !           229:     9ABC             
        !           230:     *** Failers
        !           231: 
        !           232: /a+/
        !           233:     aaaa
        !           234: 
        !           235: /^.*xyz/
        !           236:     xyz
        !           237:     ggggggggxyz
        !           238:     
        !           239: /^.+xyz/
        !           240:     abcdxyz
        !           241:     axyz
        !           242:     *** Failers
        !           243:     xyz
        !           244:     
        !           245: /^.?xyz/
        !           246:     xyz
        !           247:     cxyz       
        !           248: 
        !           249: /^\d{2,3}X/
        !           250:     12X
        !           251:     123X
        !           252:     *** Failers
        !           253:     X
        !           254:     1X
        !           255:     1234X     
        !           256: 
        !           257: /^[abcd]\d/
        !           258:     a45
        !           259:     b93
        !           260:     c99z
        !           261:     d04
        !           262:     *** Failers
        !           263:     e45
        !           264:     abcd      
        !           265:     abcd1234
        !           266:     1234  
        !           267: 
        !           268: /^[abcd]*\d/
        !           269:     a45
        !           270:     b93
        !           271:     c99z
        !           272:     d04
        !           273:     abcd1234
        !           274:     1234  
        !           275:     *** Failers
        !           276:     e45
        !           277:     abcd      
        !           278: 
        !           279: /^[abcd]+\d/
        !           280:     a45
        !           281:     b93
        !           282:     c99z
        !           283:     d04
        !           284:     abcd1234
        !           285:     *** Failers
        !           286:     1234  
        !           287:     e45
        !           288:     abcd      
        !           289: 
        !           290: /^a+X/
        !           291:     aX
        !           292:     aaX 
        !           293: 
        !           294: /^[abcd]?\d/
        !           295:     a45
        !           296:     b93
        !           297:     c99z
        !           298:     d04
        !           299:     1234  
        !           300:     *** Failers
        !           301:     abcd1234
        !           302:     e45
        !           303: 
        !           304: /^[abcd]{2,3}\d/
        !           305:     ab45
        !           306:     bcd93
        !           307:     *** Failers
        !           308:     1234 
        !           309:     a36 
        !           310:     abcd1234
        !           311:     ee45
        !           312: 
        !           313: /^(abc)*\d/
        !           314:     abc45
        !           315:     abcabcabc45
        !           316:     42xyz 
        !           317:     *** Failers
        !           318: 
        !           319: /^(abc)+\d/
        !           320:     abc45
        !           321:     abcabcabc45
        !           322:     *** Failers
        !           323:     42xyz 
        !           324: 
        !           325: /^(abc)?\d/
        !           326:     abc45
        !           327:     42xyz 
        !           328:     *** Failers
        !           329:     abcabcabc45
        !           330: 
        !           331: /^(abc){2,3}\d/
        !           332:     abcabc45
        !           333:     abcabcabc45
        !           334:     *** Failers
        !           335:     abcabcabcabc45
        !           336:     abc45
        !           337:     42xyz 
        !           338: 
        !           339: /1(abc|xyz)2(?1)3/
        !           340:     1abc2abc3456
        !           341:     1abc2xyz3456 
        !           342: 
        !           343: /^(a*\w|ab)=(a*\w|ab)/
        !           344:     ab=ab
        !           345: 
        !           346: /^(a*\w|ab)=(?1)/
        !           347:     ab=ab
        !           348: 
        !           349: /^([^()]|\((?1)*\))*$/
        !           350:     abc
        !           351:     a(b)c
        !           352:     a(b(c))d  
        !           353:     *** Failers)
        !           354:     a(b(c)d  
        !           355: 
        !           356: /^>abc>([^()]|\((?1)*\))*<xyz<$/
        !           357:     >abc>123<xyz<
        !           358:     >abc>1(2)3<xyz<
        !           359:     >abc>(1(2)3)<xyz<
        !           360: 
        !           361: /^(?>a*)\d/
        !           362:     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9876
        !           363:     *** Failers 
        !           364:     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
        !           365: 
        !           366: /< (?: (?(R) \d++  | [^<>]*+) | (?R)) * >/x
        !           367:     <>
        !           368:     <abcd>
        !           369:     <abc <123> hij>
        !           370:     <abc <def> hij>
        !           371:     <abc<>def> 
        !           372:     <abc<>      
        !           373:     *** Failers
        !           374:     <abc
        !           375: 
        !           376: /^(?(?=abc)\w{3}:|\d\d)$/        
        !           377:     abc:                          
        !           378:     12                             
        !           379:     *** Failers                     
        !           380:     123                       
        !           381:     xyz                        
        !           382:                                 
        !           383: /^(?(?!abc)\d\d|\w{3}:)$/      
        !           384:     abc:                        
        !           385:     12         
        !           386:     *** Failers
        !           387:     123
        !           388:     xyz    
        !           389: 
        !           390: /^(?=abc)\w{5}:$/        
        !           391:     abcde:                          
        !           392:     *** Failers                     
        !           393:     abc.. 
        !           394:     123                       
        !           395:     vwxyz                        
        !           396:                                 
        !           397: /^(?!abc)\d\d$/      
        !           398:     12         
        !           399:     *** Failers
        !           400:     abcde:
        !           401:     abc..  
        !           402:     123
        !           403:     vwxyz    
        !           404: 
        !           405: /(?<=abc|xy)123/
        !           406:     abc12345
        !           407:     wxy123z
        !           408:     *** Failers
        !           409:     123abc
        !           410: 
        !           411: /(?<!abc|xy)123/
        !           412:     123abc
        !           413:     mno123456 
        !           414:     *** Failers
        !           415:     abc12345
        !           416:     wxy123z
        !           417: 
        !           418: /abc(?C1)xyz/
        !           419:     abcxyz
        !           420:     123abcxyz999 
        !           421: 
        !           422: /(ab|cd){3,4}/C
        !           423:   ababab
        !           424:   abcdabcd
        !           425:   abcdcdcdcdcd  
        !           426: 
        !           427: /^abc/
        !           428:     abcdef
        !           429:     *** Failers
        !           430:     abcdef\B  
        !           431: 
        !           432: /^(a*|xyz)/
        !           433:     bcd
        !           434:     aaabcd
        !           435:     xyz
        !           436:     xyz\N  
        !           437:     *** Failers
        !           438:     bcd\N   
        !           439:     
        !           440: /xyz$/
        !           441:     xyz
        !           442:     xyz\n
        !           443:     *** Failers
        !           444:     xyz\Z
        !           445:     xyz\n\Z    
        !           446:     
        !           447: /xyz$/m
        !           448:     xyz
        !           449:     xyz\n 
        !           450:     abcxyz\npqr 
        !           451:     abcxyz\npqr\Z 
        !           452:     xyz\n\Z    
        !           453:     *** Failers
        !           454:     xyz\Z
        !           455: 
        !           456: /\Gabc/
        !           457:     abcdef
        !           458:     defabcxyz\>3 
        !           459:     *** Failers 
        !           460:     defabcxyz
        !           461: 
        !           462: /^abcdef/
        !           463:     ab\P
        !           464:     abcde\P
        !           465:     abcdef\P
        !           466:     *** Failers
        !           467:     abx\P    
        !           468: 
        !           469: /^a{2,4}\d+z/
        !           470:     a\P
        !           471:     aa\P
        !           472:     aa2\P 
        !           473:     aaa\P
        !           474:     aaa23\P 
        !           475:     aaaa12345\P
        !           476:     aa0z\P
        !           477:     aaaa4444444444444z\P 
        !           478:     *** Failers
        !           479:     az\P 
        !           480:     aaaaa\P 
        !           481:     a56\P 
        !           482: 
        !           483: /^abcdef/
        !           484:    abc\P
        !           485:    def\R 
        !           486:    
        !           487: /(?<=foo)bar/
        !           488:    xyzfo\P 
        !           489:    foob\P\>2 
        !           490:    foobar...\R\P\>4 
        !           491:    xyzfo\P
        !           492:    foobar\>2  
        !           493:    *** Failers
        !           494:    xyzfo\P
        !           495:    obar\R   
        !           496: 
        !           497: /(ab*(cd|ef))+X/
        !           498:     adfadadaklhlkalkajhlkjahdfasdfasdfladsfjkj\P\Z
        !           499:     lkjhlkjhlkjhlkjhabbbbbbcdaefabbbbbbbefa\P\B\Z
        !           500:     cdabbbbbbbb\P\R\B\Z
        !           501:     efabbbbbbbbbbbbbbbb\P\R\B\Z
        !           502:     bbbbbbbbbbbbcdXyasdfadf\P\R\B\Z    
        !           503: 
        !           504: /(a|b)/SF>testsavedregex
        !           505: <testsavedregex
        !           506:     abc
        !           507:     ** Failers
        !           508:     def  
        !           509:     
        !           510: /the quick brown fox/
        !           511:     the quick brown fox
        !           512:     The quick brown FOX
        !           513:     What do you know about the quick brown fox?
        !           514:     What do you know about THE QUICK BROWN FOX?
        !           515: 
        !           516: /The quick brown fox/i
        !           517:     the quick brown fox
        !           518:     The quick brown FOX
        !           519:     What do you know about the quick brown fox?
        !           520:     What do you know about THE QUICK BROWN FOX?
        !           521: 
        !           522: /abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
        !           523:     abcd\t\n\r\f\a\e9;\$\\?caxyz
        !           524: 
        !           525: /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
        !           526:     abxyzpqrrrabbxyyyypqAzz
        !           527:     abxyzpqrrrabbxyyyypqAzz
        !           528:     aabxyzpqrrrabbxyyyypqAzz
        !           529:     aaabxyzpqrrrabbxyyyypqAzz
        !           530:     aaaabxyzpqrrrabbxyyyypqAzz
        !           531:     abcxyzpqrrrabbxyyyypqAzz
        !           532:     aabcxyzpqrrrabbxyyyypqAzz
        !           533:     aaabcxyzpqrrrabbxyyyypAzz
        !           534:     aaabcxyzpqrrrabbxyyyypqAzz
        !           535:     aaabcxyzpqrrrabbxyyyypqqAzz
        !           536:     aaabcxyzpqrrrabbxyyyypqqqAzz
        !           537:     aaabcxyzpqrrrabbxyyyypqqqqAzz
        !           538:     aaabcxyzpqrrrabbxyyyypqqqqqAzz
        !           539:     aaabcxyzpqrrrabbxyyyypqqqqqqAzz
        !           540:     aaaabcxyzpqrrrabbxyyyypqAzz
        !           541:     abxyzzpqrrrabbxyyyypqAzz
        !           542:     aabxyzzzpqrrrabbxyyyypqAzz
        !           543:     aaabxyzzzzpqrrrabbxyyyypqAzz
        !           544:     aaaabxyzzzzpqrrrabbxyyyypqAzz
        !           545:     abcxyzzpqrrrabbxyyyypqAzz
        !           546:     aabcxyzzzpqrrrabbxyyyypqAzz
        !           547:     aaabcxyzzzzpqrrrabbxyyyypqAzz
        !           548:     aaaabcxyzzzzpqrrrabbxyyyypqAzz
        !           549:     aaaabcxyzzzzpqrrrabbbxyyyypqAzz
        !           550:     aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
        !           551:     aaabcxyzpqrrrabbxyyyypABzz
        !           552:     aaabcxyzpqrrrabbxyyyypABBzz
        !           553:     >>>aaabxyzpqrrrabbxyyyypqAzz
        !           554:     >aaaabxyzpqrrrabbxyyyypqAzz
        !           555:     >>>>abcxyzpqrrrabbxyyyypqAzz
        !           556:     *** Failers
        !           557:     abxyzpqrrabbxyyyypqAzz
        !           558:     abxyzpqrrrrabbxyyyypqAzz
        !           559:     abxyzpqrrrabxyyyypqAzz
        !           560:     aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
        !           561:     aaaabcxyzzzzpqrrrabbbxyyypqAzz
        !           562:     aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
        !           563: 
        !           564: /^(abc){1,2}zz/
        !           565:     abczz
        !           566:     abcabczz
        !           567:     *** Failers
        !           568:     zz
        !           569:     abcabcabczz
        !           570:     >>abczz
        !           571: 
        !           572: /^(b+?|a){1,2}?c/
        !           573:     bc
        !           574:     bbc
        !           575:     bbbc
        !           576:     bac
        !           577:     bbac
        !           578:     aac
        !           579:     abbbbbbbbbbbc
        !           580:     bbbbbbbbbbbac
        !           581:     *** Failers
        !           582:     aaac
        !           583:     abbbbbbbbbbbac
        !           584: 
        !           585: /^(b+|a){1,2}c/
        !           586:     bc
        !           587:     bbc
        !           588:     bbbc
        !           589:     bac
        !           590:     bbac
        !           591:     aac
        !           592:     abbbbbbbbbbbc
        !           593:     bbbbbbbbbbbac
        !           594:     *** Failers
        !           595:     aaac
        !           596:     abbbbbbbbbbbac
        !           597: 
        !           598: /^(b+|a){1,2}?bc/
        !           599:     bbc
        !           600: 
        !           601: /^(b*|ba){1,2}?bc/
        !           602:     babc
        !           603:     bbabc
        !           604:     bababc
        !           605:     *** Failers
        !           606:     bababbc
        !           607:     babababc
        !           608: 
        !           609: /^(ba|b*){1,2}?bc/
        !           610:     babc
        !           611:     bbabc
        !           612:     bababc
        !           613:     *** Failers
        !           614:     bababbc
        !           615:     babababc
        !           616: 
        !           617: /^\ca\cA\c[\c{\c:/
        !           618:     \x01\x01\e;z
        !           619: 
        !           620: /^[ab\]cde]/
        !           621:     athing
        !           622:     bthing
        !           623:     ]thing
        !           624:     cthing
        !           625:     dthing
        !           626:     ething
        !           627:     *** Failers
        !           628:     fthing
        !           629:     [thing
        !           630:     \\thing
        !           631: 
        !           632: /^[]cde]/
        !           633:     ]thing
        !           634:     cthing
        !           635:     dthing
        !           636:     ething
        !           637:     *** Failers
        !           638:     athing
        !           639:     fthing
        !           640: 
        !           641: /^[^ab\]cde]/
        !           642:     fthing
        !           643:     [thing
        !           644:     \\thing
        !           645:     *** Failers
        !           646:     athing
        !           647:     bthing
        !           648:     ]thing
        !           649:     cthing
        !           650:     dthing
        !           651:     ething
        !           652: 
        !           653: /^[^]cde]/
        !           654:     athing
        !           655:     fthing
        !           656:     *** Failers
        !           657:     ]thing
        !           658:     cthing
        !           659:     dthing
        !           660:     ething
        !           661: 
        !           662: /^\/
        !           663:     
        !           664: 
        !           665: /^/
        !           666:     
        !           667: 
        !           668: /^[0-9]+$/
        !           669:     0
        !           670:     1
        !           671:     2
        !           672:     3
        !           673:     4
        !           674:     5
        !           675:     6
        !           676:     7
        !           677:     8
        !           678:     9
        !           679:     10
        !           680:     100
        !           681:     *** Failers
        !           682:     abc
        !           683: 
        !           684: /^.*nter/
        !           685:     enter
        !           686:     inter
        !           687:     uponter
        !           688: 
        !           689: /^xxx[0-9]+$/
        !           690:     xxx0
        !           691:     xxx1234
        !           692:     *** Failers
        !           693:     xxx
        !           694: 
        !           695: /^.+[0-9][0-9][0-9]$/
        !           696:     x123
        !           697:     xx123
        !           698:     123456
        !           699:     *** Failers
        !           700:     123
        !           701:     x1234
        !           702: 
        !           703: /^.+?[0-9][0-9][0-9]$/
        !           704:     x123
        !           705:     xx123
        !           706:     123456
        !           707:     *** Failers
        !           708:     123
        !           709:     x1234
        !           710: 
        !           711: /^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
        !           712:     abc!pqr=apquxz.ixr.zzz.ac.uk
        !           713:     *** Failers
        !           714:     !pqr=apquxz.ixr.zzz.ac.uk
        !           715:     abc!=apquxz.ixr.zzz.ac.uk
        !           716:     abc!pqr=apquxz:ixr.zzz.ac.uk
        !           717:     abc!pqr=apquxz.ixr.zzz.ac.ukk
        !           718: 
        !           719: /:/
        !           720:     Well, we need a colon: somewhere
        !           721:     *** Fail if we don't
        !           722: 
        !           723: /([\da-f:]+)$/i
        !           724:     0abc
        !           725:     abc
        !           726:     fed
        !           727:     E
        !           728:     ::
        !           729:     5f03:12C0::932e
        !           730:     fed def
        !           731:     Any old stuff
        !           732:     *** Failers
        !           733:     0zzz
        !           734:     gzzz
        !           735:     fed\x20
        !           736:     Any old rubbish
        !           737: 
        !           738: /^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
        !           739:     .1.2.3
        !           740:     A.12.123.0
        !           741:     *** Failers
        !           742:     .1.2.3333
        !           743:     1.2.3
        !           744:     1234.2.3
        !           745: 
        !           746: /^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
        !           747:     1 IN SOA non-sp1 non-sp2(
        !           748:     1    IN    SOA    non-sp1    non-sp2   (
        !           749:     *** Failers
        !           750:     1IN SOA non-sp1 non-sp2(
        !           751: 
        !           752: /^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/
        !           753:     a.
        !           754:     Z.
        !           755:     2.
        !           756:     ab-c.pq-r.
        !           757:     sxk.zzz.ac.uk.
        !           758:     x-.y-.
        !           759:     *** Failers
        !           760:     -abc.peq.
        !           761: 
        !           762: /^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/
        !           763:     *.a
        !           764:     *.b0-a
        !           765:     *.c3-b.c
        !           766:     *.c-a.b-c
        !           767:     *** Failers
        !           768:     *.0
        !           769:     *.a-
        !           770:     *.a-b.c-
        !           771:     *.c-a.0-c
        !           772: 
        !           773: /^(?=ab(de))(abd)(e)/
        !           774:     abde
        !           775: 
        !           776: /^(?!(ab)de|x)(abd)(f)/
        !           777:     abdf
        !           778: 
        !           779: /^(?=(ab(cd)))(ab)/
        !           780:     abcd
        !           781: 
        !           782: /^[\da-f](\.[\da-f])*$/i
        !           783:     a.b.c.d
        !           784:     A.B.C.D
        !           785:     a.b.c.1.2.3.C
        !           786: 
        !           787: /^\".*\"\s*(;.*)?$/
        !           788:     \"1234\"
        !           789:     \"abcd\" ;
        !           790:     \"\" ; rhubarb
        !           791:     *** Failers
        !           792:     \"1234\" : things
        !           793: 
        !           794: /^$/
        !           795:     \
        !           796:     *** Failers
        !           797: 
        !           798: /   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/x
        !           799:     ab c
        !           800:     *** Failers
        !           801:     abc
        !           802:     ab cde
        !           803: 
        !           804: /(?x)   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/
        !           805:     ab c
        !           806:     *** Failers
        !           807:     abc
        !           808:     ab cde
        !           809: 
        !           810: /^   a\ b[c ]d       $/x
        !           811:     a bcd
        !           812:     a b d
        !           813:     *** Failers
        !           814:     abcd
        !           815:     ab d
        !           816: 
        !           817: /^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
        !           818:     abcdefhijklm
        !           819: 
        !           820: /^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
        !           821:     abcdefhijklm
        !           822: 
        !           823: /^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
        !           824:     a+ Z0+\x08\n\x1d\x12
        !           825: 
        !           826: /^[.^$|()*+?{,}]+/
        !           827:     .^\$(*+)|{?,?}
        !           828: 
        !           829: /^a*\w/
        !           830:     z
        !           831:     az
        !           832:     aaaz
        !           833:     a
        !           834:     aa
        !           835:     aaaa
        !           836:     a+
        !           837:     aa+
        !           838: 
        !           839: /^a*?\w/
        !           840:     z
        !           841:     az
        !           842:     aaaz
        !           843:     a
        !           844:     aa
        !           845:     aaaa
        !           846:     a+
        !           847:     aa+
        !           848: 
        !           849: /^a+\w/
        !           850:     az
        !           851:     aaaz
        !           852:     aa
        !           853:     aaaa
        !           854:     aa+
        !           855: 
        !           856: /^a+?\w/
        !           857:     az
        !           858:     aaaz
        !           859:     aa
        !           860:     aaaa
        !           861:     aa+
        !           862: 
        !           863: /^\d{8}\w{2,}/
        !           864:     1234567890
        !           865:     12345678ab
        !           866:     12345678__
        !           867:     *** Failers
        !           868:     1234567
        !           869: 
        !           870: /^[aeiou\d]{4,5}$/
        !           871:     uoie
        !           872:     1234
        !           873:     12345
        !           874:     aaaaa
        !           875:     *** Failers
        !           876:     123456
        !           877: 
        !           878: /^[aeiou\d]{4,5}?/
        !           879:     uoie
        !           880:     1234
        !           881:     12345
        !           882:     aaaaa
        !           883:     123456
        !           884: 
        !           885: /^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]/
        !           886:     From abcd  Mon Sep 01 12:33:02 1997
        !           887: 
        !           888: /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
        !           889:     From abcd  Mon Sep 01 12:33:02 1997
        !           890:     From abcd  Mon Sep  1 12:33:02 1997
        !           891:     *** Failers
        !           892:     From abcd  Sep 01 12:33:02 1997
        !           893: 
        !           894: /^12.34/s
        !           895:     12\n34
        !           896:     12\r34
        !           897: 
        !           898: /\w+(?=\t)/
        !           899:     the quick brown\t fox
        !           900: 
        !           901: /foo(?!bar)(.*)/
        !           902:     foobar is foolish see?
        !           903: 
        !           904: /(?:(?!foo)...|^.{0,2})bar(.*)/
        !           905:     foobar crowbar etc
        !           906:     barrel
        !           907:     2barrel
        !           908:     A barrel
        !           909: 
        !           910: /^(\D*)(?=\d)(?!123)/
        !           911:     abc456
        !           912:     *** Failers
        !           913:     abc123
        !           914: 
        !           915: /^1234(?# test newlines
        !           916:   inside)/
        !           917:     1234
        !           918: 
        !           919: /^1234 #comment in extended re
        !           920:   /x
        !           921:     1234
        !           922: 
        !           923: /#rhubarb
        !           924:   abcd/x
        !           925:     abcd
        !           926: 
        !           927: /^abcd#rhubarb/x
        !           928:     abcd
        !           929: 
        !           930: /(?!^)abc/
        !           931:     the abc
        !           932:     *** Failers
        !           933:     abc
        !           934: 
        !           935: /(?=^)abc/
        !           936:     abc
        !           937:     *** Failers
        !           938:     the abc
        !           939: 
        !           940: /^[ab]{1,3}(ab*|b)/
        !           941:     aabbbbb
        !           942: 
        !           943: /^[ab]{1,3}?(ab*|b)/
        !           944:     aabbbbb
        !           945: 
        !           946: /^[ab]{1,3}?(ab*?|b)/
        !           947:     aabbbbb
        !           948: 
        !           949: /^[ab]{1,3}(ab*?|b)/
        !           950:     aabbbbb
        !           951: 
        !           952: /  (?: [\040\t] |  \(
        !           953: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
        !           954: \)  )*                          # optional leading comment
        !           955: (?:    (?:
        !           956: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
        !           957: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
        !           958: |
        !           959: " (?:                      # opening quote...
        !           960: [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
        !           961: |                     #    or
        !           962: \\ [^\x80-\xff]           #   Escaped something (something != CR)
        !           963: )* "  # closing quote
        !           964: )                    # initial word
        !           965: (?:  (?: [\040\t] |  \(
        !           966: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
        !           967: \)  )*  \.  (?: [\040\t] |  \(
        !           968: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
        !           969: \)  )*   (?:
        !           970: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
        !           971: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
        !           972: |
        !           973: " (?:                      # opening quote...
        !           974: [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
        !           975: |                     #    or
        !           976: \\ [^\x80-\xff]           #   Escaped something (something != CR)
        !           977: )* "  # closing quote
        !           978: )  )* # further okay, if led by a period
        !           979: (?: [\040\t] |  \(
        !           980: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
        !           981: \)  )*  @  (?: [\040\t] |  \(
        !           982: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
        !           983: \)  )*    (?:
        !           984: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
        !           985: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
        !           986: |   \[                         # [
        !           987: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
        !           988: \]                        #           ]
        !           989: )                           # initial subdomain
        !           990: (?:                                  #
        !           991: (?: [\040\t] |  \(
        !           992: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
        !           993: \)  )*  \.                        # if led by a period...
        !           994: (?: [\040\t] |  \(
        !           995: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
        !           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: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
        !          1001: \]                        #           ]
        !          1002: )                     #   ...further okay
        !          1003: )*
        !          1004: # address
        !          1005: |                     #  or
        !          1006: (?:
        !          1007: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
        !          1008: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
        !          1009: |
        !          1010: " (?:                      # opening quote...
        !          1011: [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
        !          1012: |                     #    or
        !          1013: \\ [^\x80-\xff]           #   Escaped something (something != CR)
        !          1014: )* "  # closing quote
        !          1015: )             # one word, optionally followed by....
        !          1016: (?:
        !          1017: [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]  |  # atom and space parts, or...
        !          1018: \(
        !          1019: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
        !          1020: \)       |  # comments, or...
        !          1021: 
        !          1022: " (?:                      # opening quote...
        !          1023: [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
        !          1024: |                     #    or
        !          1025: \\ [^\x80-\xff]           #   Escaped something (something != CR)
        !          1026: )* "  # closing quote
        !          1027: # quoted strings
        !          1028: )*
        !          1029: <  (?: [\040\t] |  \(
        !          1030: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
        !          1031: \)  )*                     # leading <
        !          1032: (?:  @  (?: [\040\t] |  \(
        !          1033: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
        !          1034: \)  )*    (?:
        !          1035: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
        !          1036: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
        !          1037: |   \[                         # [
        !          1038: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
        !          1039: \]                        #           ]
        !          1040: )                           # initial subdomain
        !          1041: (?:                                  #
        !          1042: (?: [\040\t] |  \(
        !          1043: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
        !          1044: \)  )*  \.                        # if led by a period...
        !          1045: (?: [\040\t] |  \(
        !          1046: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
        !          1047: \)  )*   (?:
        !          1048: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
        !          1049: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
        !          1050: |   \[                         # [
        !          1051: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
        !          1052: \]                        #           ]
        !          1053: )                     #   ...further okay
        !          1054: )*
        !          1055: 
        !          1056: (?:  (?: [\040\t] |  \(
        !          1057: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
        !          1058: \)  )*  ,  (?: [\040\t] |  \(
        !          1059: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
        !          1060: \)  )*  @  (?: [\040\t] |  \(
        !          1061: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
        !          1062: \)  )*    (?:
        !          1063: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
        !          1064: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
        !          1065: |   \[                         # [
        !          1066: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
        !          1067: \]                        #           ]
        !          1068: )                           # initial subdomain
        !          1069: (?:                                  #
        !          1070: (?: [\040\t] |  \(
        !          1071: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
        !          1072: \)  )*  \.                        # if led by a period...
        !          1073: (?: [\040\t] |  \(
        !          1074: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
        !          1075: \)  )*   (?:
        !          1076: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
        !          1077: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
        !          1078: |   \[                         # [
        !          1079: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
        !          1080: \]                        #           ]
        !          1081: )                     #   ...further okay
        !          1082: )*
        !          1083: )* # further okay, if led by comma
        !          1084: :                                # closing colon
        !          1085: (?: [\040\t] |  \(
        !          1086: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
        !          1087: \)  )*  )? #       optional route
        !          1088: (?:
        !          1089: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
        !          1090: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
        !          1091: |
        !          1092: " (?:                      # opening quote...
        !          1093: [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
        !          1094: |                     #    or
        !          1095: \\ [^\x80-\xff]           #   Escaped something (something != CR)
        !          1096: )* "  # closing quote
        !          1097: )                    # initial word
        !          1098: (?:  (?: [\040\t] |  \(
        !          1099: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
        !          1100: \)  )*  \.  (?: [\040\t] |  \(
        !          1101: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
        !          1102: \)  )*   (?:
        !          1103: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
        !          1104: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
        !          1105: |
        !          1106: " (?:                      # opening quote...
        !          1107: [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
        !          1108: |                     #    or
        !          1109: \\ [^\x80-\xff]           #   Escaped something (something != CR)
        !          1110: )* "  # closing quote
        !          1111: )  )* # further okay, if led by a period
        !          1112: (?: [\040\t] |  \(
        !          1113: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
        !          1114: \)  )*  @  (?: [\040\t] |  \(
        !          1115: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
        !          1116: \)  )*    (?:
        !          1117: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
        !          1118: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
        !          1119: |   \[                         # [
        !          1120: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
        !          1121: \]                        #           ]
        !          1122: )                           # initial subdomain
        !          1123: (?:                                  #
        !          1124: (?: [\040\t] |  \(
        !          1125: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
        !          1126: \)  )*  \.                        # if led by a period...
        !          1127: (?: [\040\t] |  \(
        !          1128: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
        !          1129: \)  )*   (?:
        !          1130: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
        !          1131: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
        !          1132: |   \[                         # [
        !          1133: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
        !          1134: \]                        #           ]
        !          1135: )                     #   ...further okay
        !          1136: )*
        !          1137: #       address spec
        !          1138: (?: [\040\t] |  \(
        !          1139: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
        !          1140: \)  )*  > #                  trailing >
        !          1141: # name and address
        !          1142: )  (?: [\040\t] |  \(
        !          1143: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
        !          1144: \)  )*                       # optional trailing comment
        !          1145: /x
        !          1146:     Alan Other <user\@dom.ain>
        !          1147:     <user\@dom.ain>
        !          1148:     user\@dom.ain
        !          1149:     \"A. Other\" <user.1234\@dom.ain> (a comment)
        !          1150:     A. Other <user.1234\@dom.ain> (a comment)
        !          1151:     \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
        !          1152:     A missing angle <user\@some.where
        !          1153:     *** Failers
        !          1154:     The quick brown fox
        !          1155: 
        !          1156: /[\040\t]*                    # Nab whitespace.
        !          1157: (?:
        !          1158: \(                              #  (
        !          1159: [^\\\x80-\xff\n\015()] *                             #     normal*
        !          1160: (?:                                 #       (
        !          1161: (?:  \\ [^\x80-\xff]  |
        !          1162: \(                            #  (
        !          1163: [^\\\x80-\xff\n\015()] *                            #     normal*
        !          1164: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
        !          1165: \)                           #                       )
        !          1166: )    #         special
        !          1167: [^\\\x80-\xff\n\015()] *                         #         normal*
        !          1168: )*                                  #            )*
        !          1169: \)                             #                )
        !          1170: [\040\t]* )*    # If comment found, allow more spaces.
        !          1171: # optional leading comment
        !          1172: (?:
        !          1173: (?:
        !          1174: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
        !          1175: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
        !          1176: # Atom
        !          1177: |                       #  or
        !          1178: "                                     # "
        !          1179: [^\\\x80-\xff\n\015"] *                            #   normal
        !          1180: (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
        !          1181: "                                     #        "
        !          1182: # Quoted string
        !          1183: )
        !          1184: [\040\t]*                    # Nab whitespace.
        !          1185: (?:
        !          1186: \(                              #  (
        !          1187: [^\\\x80-\xff\n\015()] *                             #     normal*
        !          1188: (?:                                 #       (
        !          1189: (?:  \\ [^\x80-\xff]  |
        !          1190: \(                            #  (
        !          1191: [^\\\x80-\xff\n\015()] *                            #     normal*
        !          1192: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
        !          1193: \)                           #                       )
        !          1194: )    #         special
        !          1195: [^\\\x80-\xff\n\015()] *                         #         normal*
        !          1196: )*                                  #            )*
        !          1197: \)                             #                )
        !          1198: [\040\t]* )*    # If comment found, allow more spaces.
        !          1199: (?:
        !          1200: \.
        !          1201: [\040\t]*                    # Nab whitespace.
        !          1202: (?:
        !          1203: \(                              #  (
        !          1204: [^\\\x80-\xff\n\015()] *                             #     normal*
        !          1205: (?:                                 #       (
        !          1206: (?:  \\ [^\x80-\xff]  |
        !          1207: \(                            #  (
        !          1208: [^\\\x80-\xff\n\015()] *                            #     normal*
        !          1209: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
        !          1210: \)                           #                       )
        !          1211: )    #         special
        !          1212: [^\\\x80-\xff\n\015()] *                         #         normal*
        !          1213: )*                                  #            )*
        !          1214: \)                             #                )
        !          1215: [\040\t]* )*    # If comment found, allow more spaces.
        !          1216: (?:
        !          1217: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
        !          1218: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
        !          1219: # Atom
        !          1220: |                       #  or
        !          1221: "                                     # "
        !          1222: [^\\\x80-\xff\n\015"] *                            #   normal
        !          1223: (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
        !          1224: "                                     #        "
        !          1225: # Quoted string
        !          1226: )
        !          1227: [\040\t]*                    # Nab whitespace.
        !          1228: (?:
        !          1229: \(                              #  (
        !          1230: [^\\\x80-\xff\n\015()] *                             #     normal*
        !          1231: (?:                                 #       (
        !          1232: (?:  \\ [^\x80-\xff]  |
        !          1233: \(                            #  (
        !          1234: [^\\\x80-\xff\n\015()] *                            #     normal*
        !          1235: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
        !          1236: \)                           #                       )
        !          1237: )    #         special
        !          1238: [^\\\x80-\xff\n\015()] *                         #         normal*
        !          1239: )*                                  #            )*
        !          1240: \)                             #                )
        !          1241: [\040\t]* )*    # If comment found, allow more spaces.
        !          1242: # additional words
        !          1243: )*
        !          1244: @
        !          1245: [\040\t]*                    # Nab whitespace.
        !          1246: (?:
        !          1247: \(                              #  (
        !          1248: [^\\\x80-\xff\n\015()] *                             #     normal*
        !          1249: (?:                                 #       (
        !          1250: (?:  \\ [^\x80-\xff]  |
        !          1251: \(                            #  (
        !          1252: [^\\\x80-\xff\n\015()] *                            #     normal*
        !          1253: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
        !          1254: \)                           #                       )
        !          1255: )    #         special
        !          1256: [^\\\x80-\xff\n\015()] *                         #         normal*
        !          1257: )*                                  #            )*
        !          1258: \)                             #                )
        !          1259: [\040\t]* )*    # If comment found, allow more spaces.
        !          1260: (?:
        !          1261: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
        !          1262: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
        !          1263: |
        !          1264: \[                            # [
        !          1265: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
        !          1266: \]                           #           ]
        !          1267: )
        !          1268: [\040\t]*                    # Nab whitespace.
        !          1269: (?:
        !          1270: \(                              #  (
        !          1271: [^\\\x80-\xff\n\015()] *                             #     normal*
        !          1272: (?:                                 #       (
        !          1273: (?:  \\ [^\x80-\xff]  |
        !          1274: \(                            #  (
        !          1275: [^\\\x80-\xff\n\015()] *                            #     normal*
        !          1276: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
        !          1277: \)                           #                       )
        !          1278: )    #         special
        !          1279: [^\\\x80-\xff\n\015()] *                         #         normal*
        !          1280: )*                                  #            )*
        !          1281: \)                             #                )
        !          1282: [\040\t]* )*    # If comment found, allow more spaces.
        !          1283: # optional trailing comments
        !          1284: (?:
        !          1285: \.
        !          1286: [\040\t]*                    # Nab whitespace.
        !          1287: (?:
        !          1288: \(                              #  (
        !          1289: [^\\\x80-\xff\n\015()] *                             #     normal*
        !          1290: (?:                                 #       (
        !          1291: (?:  \\ [^\x80-\xff]  |
        !          1292: \(                            #  (
        !          1293: [^\\\x80-\xff\n\015()] *                            #     normal*
        !          1294: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
        !          1295: \)                           #                       )
        !          1296: )    #         special
        !          1297: [^\\\x80-\xff\n\015()] *                         #         normal*
        !          1298: )*                                  #            )*
        !          1299: \)                             #                )
        !          1300: [\040\t]* )*    # If comment found, allow more spaces.
        !          1301: (?:
        !          1302: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
        !          1303: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
        !          1304: |
        !          1305: \[                            # [
        !          1306: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
        !          1307: \]                           #           ]
        !          1308: )
        !          1309: [\040\t]*                    # Nab whitespace.
        !          1310: (?:
        !          1311: \(                              #  (
        !          1312: [^\\\x80-\xff\n\015()] *                             #     normal*
        !          1313: (?:                                 #       (
        !          1314: (?:  \\ [^\x80-\xff]  |
        !          1315: \(                            #  (
        !          1316: [^\\\x80-\xff\n\015()] *                            #     normal*
        !          1317: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
        !          1318: \)                           #                       )
        !          1319: )    #         special
        !          1320: [^\\\x80-\xff\n\015()] *                         #         normal*
        !          1321: )*                                  #            )*
        !          1322: \)                             #                )
        !          1323: [\040\t]* )*    # If comment found, allow more spaces.
        !          1324: # optional trailing comments
        !          1325: )*
        !          1326: # address
        !          1327: |                             #  or
        !          1328: (?:
        !          1329: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
        !          1330: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
        !          1331: # Atom
        !          1332: |                       #  or
        !          1333: "                                     # "
        !          1334: [^\\\x80-\xff\n\015"] *                            #   normal
        !          1335: (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
        !          1336: "                                     #        "
        !          1337: # Quoted string
        !          1338: )
        !          1339: # leading word
        !          1340: [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] *               # "normal" atoms and or spaces
        !          1341: (?:
        !          1342: (?:
        !          1343: \(                              #  (
        !          1344: [^\\\x80-\xff\n\015()] *                             #     normal*
        !          1345: (?:                                 #       (
        !          1346: (?:  \\ [^\x80-\xff]  |
        !          1347: \(                            #  (
        !          1348: [^\\\x80-\xff\n\015()] *                            #     normal*
        !          1349: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
        !          1350: \)                           #                       )
        !          1351: )    #         special
        !          1352: [^\\\x80-\xff\n\015()] *                         #         normal*
        !          1353: )*                                  #            )*
        !          1354: \)                             #                )
        !          1355: |
        !          1356: "                                     # "
        !          1357: [^\\\x80-\xff\n\015"] *                            #   normal
        !          1358: (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
        !          1359: "                                     #        "
        !          1360: ) # "special" comment or quoted string
        !          1361: [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] *            #  more "normal"
        !          1362: )*
        !          1363: <
        !          1364: [\040\t]*                    # Nab whitespace.
        !          1365: (?:
        !          1366: \(                              #  (
        !          1367: [^\\\x80-\xff\n\015()] *                             #     normal*
        !          1368: (?:                                 #       (
        !          1369: (?:  \\ [^\x80-\xff]  |
        !          1370: \(                            #  (
        !          1371: [^\\\x80-\xff\n\015()] *                            #     normal*
        !          1372: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
        !          1373: \)                           #                       )
        !          1374: )    #         special
        !          1375: [^\\\x80-\xff\n\015()] *                         #         normal*
        !          1376: )*                                  #            )*
        !          1377: \)                             #                )
        !          1378: [\040\t]* )*    # If comment found, allow more spaces.
        !          1379: # <
        !          1380: (?:
        !          1381: @
        !          1382: [\040\t]*                    # Nab whitespace.
        !          1383: (?:
        !          1384: \(                              #  (
        !          1385: [^\\\x80-\xff\n\015()] *                             #     normal*
        !          1386: (?:                                 #       (
        !          1387: (?:  \\ [^\x80-\xff]  |
        !          1388: \(                            #  (
        !          1389: [^\\\x80-\xff\n\015()] *                            #     normal*
        !          1390: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
        !          1391: \)                           #                       )
        !          1392: )    #         special
        !          1393: [^\\\x80-\xff\n\015()] *                         #         normal*
        !          1394: )*                                  #            )*
        !          1395: \)                             #                )
        !          1396: [\040\t]* )*    # If comment found, allow more spaces.
        !          1397: (?:
        !          1398: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
        !          1399: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
        !          1400: |
        !          1401: \[                            # [
        !          1402: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
        !          1403: \]                           #           ]
        !          1404: )
        !          1405: [\040\t]*                    # Nab whitespace.
        !          1406: (?:
        !          1407: \(                              #  (
        !          1408: [^\\\x80-\xff\n\015()] *                             #     normal*
        !          1409: (?:                                 #       (
        !          1410: (?:  \\ [^\x80-\xff]  |
        !          1411: \(                            #  (
        !          1412: [^\\\x80-\xff\n\015()] *                            #     normal*
        !          1413: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
        !          1414: \)                           #                       )
        !          1415: )    #         special
        !          1416: [^\\\x80-\xff\n\015()] *                         #         normal*
        !          1417: )*                                  #            )*
        !          1418: \)                             #                )
        !          1419: [\040\t]* )*    # If comment found, allow more spaces.
        !          1420: # optional trailing comments
        !          1421: (?:
        !          1422: \.
        !          1423: [\040\t]*                    # Nab whitespace.
        !          1424: (?:
        !          1425: \(                              #  (
        !          1426: [^\\\x80-\xff\n\015()] *                             #     normal*
        !          1427: (?:                                 #       (
        !          1428: (?:  \\ [^\x80-\xff]  |
        !          1429: \(                            #  (
        !          1430: [^\\\x80-\xff\n\015()] *                            #     normal*
        !          1431: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
        !          1432: \)                           #                       )
        !          1433: )    #         special
        !          1434: [^\\\x80-\xff\n\015()] *                         #         normal*
        !          1435: )*                                  #            )*
        !          1436: \)                             #                )
        !          1437: [\040\t]* )*    # If comment found, allow more spaces.
        !          1438: (?:
        !          1439: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
        !          1440: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
        !          1441: |
        !          1442: \[                            # [
        !          1443: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
        !          1444: \]                           #           ]
        !          1445: )
        !          1446: [\040\t]*                    # Nab whitespace.
        !          1447: (?:
        !          1448: \(                              #  (
        !          1449: [^\\\x80-\xff\n\015()] *                             #     normal*
        !          1450: (?:                                 #       (
        !          1451: (?:  \\ [^\x80-\xff]  |
        !          1452: \(                            #  (
        !          1453: [^\\\x80-\xff\n\015()] *                            #     normal*
        !          1454: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
        !          1455: \)                           #                       )
        !          1456: )    #         special
        !          1457: [^\\\x80-\xff\n\015()] *                         #         normal*
        !          1458: )*                                  #            )*
        !          1459: \)                             #                )
        !          1460: [\040\t]* )*    # If comment found, allow more spaces.
        !          1461: # optional trailing comments
        !          1462: )*
        !          1463: (?: ,
        !          1464: [\040\t]*                    # Nab whitespace.
        !          1465: (?:
        !          1466: \(                              #  (
        !          1467: [^\\\x80-\xff\n\015()] *                             #     normal*
        !          1468: (?:                                 #       (
        !          1469: (?:  \\ [^\x80-\xff]  |
        !          1470: \(                            #  (
        !          1471: [^\\\x80-\xff\n\015()] *                            #     normal*
        !          1472: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
        !          1473: \)                           #                       )
        !          1474: )    #         special
        !          1475: [^\\\x80-\xff\n\015()] *                         #         normal*
        !          1476: )*                                  #            )*
        !          1477: \)                             #                )
        !          1478: [\040\t]* )*    # If comment found, allow more spaces.
        !          1479: @
        !          1480: [\040\t]*                    # Nab whitespace.
        !          1481: (?:
        !          1482: \(                              #  (
        !          1483: [^\\\x80-\xff\n\015()] *                             #     normal*
        !          1484: (?:                                 #       (
        !          1485: (?:  \\ [^\x80-\xff]  |
        !          1486: \(                            #  (
        !          1487: [^\\\x80-\xff\n\015()] *                            #     normal*
        !          1488: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
        !          1489: \)                           #                       )
        !          1490: )    #         special
        !          1491: [^\\\x80-\xff\n\015()] *                         #         normal*
        !          1492: )*                                  #            )*
        !          1493: \)                             #                )
        !          1494: [\040\t]* )*    # If comment found, allow more spaces.
        !          1495: (?:
        !          1496: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
        !          1497: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
        !          1498: |
        !          1499: \[                            # [
        !          1500: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
        !          1501: \]                           #           ]
        !          1502: )
        !          1503: [\040\t]*                    # Nab whitespace.
        !          1504: (?:
        !          1505: \(                              #  (
        !          1506: [^\\\x80-\xff\n\015()] *                             #     normal*
        !          1507: (?:                                 #       (
        !          1508: (?:  \\ [^\x80-\xff]  |
        !          1509: \(                            #  (
        !          1510: [^\\\x80-\xff\n\015()] *                            #     normal*
        !          1511: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
        !          1512: \)                           #                       )
        !          1513: )    #         special
        !          1514: [^\\\x80-\xff\n\015()] *                         #         normal*
        !          1515: )*                                  #            )*
        !          1516: \)                             #                )
        !          1517: [\040\t]* )*    # If comment found, allow more spaces.
        !          1518: # optional trailing comments
        !          1519: (?:
        !          1520: \.
        !          1521: [\040\t]*                    # Nab whitespace.
        !          1522: (?:
        !          1523: \(                              #  (
        !          1524: [^\\\x80-\xff\n\015()] *                             #     normal*
        !          1525: (?:                                 #       (
        !          1526: (?:  \\ [^\x80-\xff]  |
        !          1527: \(                            #  (
        !          1528: [^\\\x80-\xff\n\015()] *                            #     normal*
        !          1529: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
        !          1530: \)                           #                       )
        !          1531: )    #         special
        !          1532: [^\\\x80-\xff\n\015()] *                         #         normal*
        !          1533: )*                                  #            )*
        !          1534: \)                             #                )
        !          1535: [\040\t]* )*    # If comment found, allow more spaces.
        !          1536: (?:
        !          1537: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
        !          1538: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
        !          1539: |
        !          1540: \[                            # [
        !          1541: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
        !          1542: \]                           #           ]
        !          1543: )
        !          1544: [\040\t]*                    # Nab whitespace.
        !          1545: (?:
        !          1546: \(                              #  (
        !          1547: [^\\\x80-\xff\n\015()] *                             #     normal*
        !          1548: (?:                                 #       (
        !          1549: (?:  \\ [^\x80-\xff]  |
        !          1550: \(                            #  (
        !          1551: [^\\\x80-\xff\n\015()] *                            #     normal*
        !          1552: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
        !          1553: \)                           #                       )
        !          1554: )    #         special
        !          1555: [^\\\x80-\xff\n\015()] *                         #         normal*
        !          1556: )*                                  #            )*
        !          1557: \)                             #                )
        !          1558: [\040\t]* )*    # If comment found, allow more spaces.
        !          1559: # optional trailing comments
        !          1560: )*
        !          1561: )*  # additional domains
        !          1562: :
        !          1563: [\040\t]*                    # Nab whitespace.
        !          1564: (?:
        !          1565: \(                              #  (
        !          1566: [^\\\x80-\xff\n\015()] *                             #     normal*
        !          1567: (?:                                 #       (
        !          1568: (?:  \\ [^\x80-\xff]  |
        !          1569: \(                            #  (
        !          1570: [^\\\x80-\xff\n\015()] *                            #     normal*
        !          1571: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
        !          1572: \)                           #                       )
        !          1573: )    #         special
        !          1574: [^\\\x80-\xff\n\015()] *                         #         normal*
        !          1575: )*                                  #            )*
        !          1576: \)                             #                )
        !          1577: [\040\t]* )*    # If comment found, allow more spaces.
        !          1578: # optional trailing comments
        !          1579: )?     #       optional route
        !          1580: (?:
        !          1581: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
        !          1582: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
        !          1583: # Atom
        !          1584: |                       #  or
        !          1585: "                                     # "
        !          1586: [^\\\x80-\xff\n\015"] *                            #   normal
        !          1587: (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
        !          1588: "                                     #        "
        !          1589: # Quoted string
        !          1590: )
        !          1591: [\040\t]*                    # Nab whitespace.
        !          1592: (?:
        !          1593: \(                              #  (
        !          1594: [^\\\x80-\xff\n\015()] *                             #     normal*
        !          1595: (?:                                 #       (
        !          1596: (?:  \\ [^\x80-\xff]  |
        !          1597: \(                            #  (
        !          1598: [^\\\x80-\xff\n\015()] *                            #     normal*
        !          1599: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
        !          1600: \)                           #                       )
        !          1601: )    #         special
        !          1602: [^\\\x80-\xff\n\015()] *                         #         normal*
        !          1603: )*                                  #            )*
        !          1604: \)                             #                )
        !          1605: [\040\t]* )*    # If comment found, allow more spaces.
        !          1606: (?:
        !          1607: \.
        !          1608: [\040\t]*                    # Nab whitespace.
        !          1609: (?:
        !          1610: \(                              #  (
        !          1611: [^\\\x80-\xff\n\015()] *                             #     normal*
        !          1612: (?:                                 #       (
        !          1613: (?:  \\ [^\x80-\xff]  |
        !          1614: \(                            #  (
        !          1615: [^\\\x80-\xff\n\015()] *                            #     normal*
        !          1616: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
        !          1617: \)                           #                       )
        !          1618: )    #         special
        !          1619: [^\\\x80-\xff\n\015()] *                         #         normal*
        !          1620: )*                                  #            )*
        !          1621: \)                             #                )
        !          1622: [\040\t]* )*    # If comment found, allow more spaces.
        !          1623: (?:
        !          1624: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
        !          1625: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
        !          1626: # Atom
        !          1627: |                       #  or
        !          1628: "                                     # "
        !          1629: [^\\\x80-\xff\n\015"] *                            #   normal
        !          1630: (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
        !          1631: "                                     #        "
        !          1632: # Quoted string
        !          1633: )
        !          1634: [\040\t]*                    # Nab whitespace.
        !          1635: (?:
        !          1636: \(                              #  (
        !          1637: [^\\\x80-\xff\n\015()] *                             #     normal*
        !          1638: (?:                                 #       (
        !          1639: (?:  \\ [^\x80-\xff]  |
        !          1640: \(                            #  (
        !          1641: [^\\\x80-\xff\n\015()] *                            #     normal*
        !          1642: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
        !          1643: \)                           #                       )
        !          1644: )    #         special
        !          1645: [^\\\x80-\xff\n\015()] *                         #         normal*
        !          1646: )*                                  #            )*
        !          1647: \)                             #                )
        !          1648: [\040\t]* )*    # If comment found, allow more spaces.
        !          1649: # additional words
        !          1650: )*
        !          1651: @
        !          1652: [\040\t]*                    # Nab whitespace.
        !          1653: (?:
        !          1654: \(                              #  (
        !          1655: [^\\\x80-\xff\n\015()] *                             #     normal*
        !          1656: (?:                                 #       (
        !          1657: (?:  \\ [^\x80-\xff]  |
        !          1658: \(                            #  (
        !          1659: [^\\\x80-\xff\n\015()] *                            #     normal*
        !          1660: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
        !          1661: \)                           #                       )
        !          1662: )    #         special
        !          1663: [^\\\x80-\xff\n\015()] *                         #         normal*
        !          1664: )*                                  #            )*
        !          1665: \)                             #                )
        !          1666: [\040\t]* )*    # If comment found, allow more spaces.
        !          1667: (?:
        !          1668: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
        !          1669: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
        !          1670: |
        !          1671: \[                            # [
        !          1672: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
        !          1673: \]                           #           ]
        !          1674: )
        !          1675: [\040\t]*                    # Nab whitespace.
        !          1676: (?:
        !          1677: \(                              #  (
        !          1678: [^\\\x80-\xff\n\015()] *                             #     normal*
        !          1679: (?:                                 #       (
        !          1680: (?:  \\ [^\x80-\xff]  |
        !          1681: \(                            #  (
        !          1682: [^\\\x80-\xff\n\015()] *                            #     normal*
        !          1683: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
        !          1684: \)                           #                       )
        !          1685: )    #         special
        !          1686: [^\\\x80-\xff\n\015()] *                         #         normal*
        !          1687: )*                                  #            )*
        !          1688: \)                             #                )
        !          1689: [\040\t]* )*    # If comment found, allow more spaces.
        !          1690: # optional trailing comments
        !          1691: (?:
        !          1692: \.
        !          1693: [\040\t]*                    # Nab whitespace.
        !          1694: (?:
        !          1695: \(                              #  (
        !          1696: [^\\\x80-\xff\n\015()] *                             #     normal*
        !          1697: (?:                                 #       (
        !          1698: (?:  \\ [^\x80-\xff]  |
        !          1699: \(                            #  (
        !          1700: [^\\\x80-\xff\n\015()] *                            #     normal*
        !          1701: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
        !          1702: \)                           #                       )
        !          1703: )    #         special
        !          1704: [^\\\x80-\xff\n\015()] *                         #         normal*
        !          1705: )*                                  #            )*
        !          1706: \)                             #                )
        !          1707: [\040\t]* )*    # If comment found, allow more spaces.
        !          1708: (?:
        !          1709: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
        !          1710: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
        !          1711: |
        !          1712: \[                            # [
        !          1713: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
        !          1714: \]                           #           ]
        !          1715: )
        !          1716: [\040\t]*                    # Nab whitespace.
        !          1717: (?:
        !          1718: \(                              #  (
        !          1719: [^\\\x80-\xff\n\015()] *                             #     normal*
        !          1720: (?:                                 #       (
        !          1721: (?:  \\ [^\x80-\xff]  |
        !          1722: \(                            #  (
        !          1723: [^\\\x80-\xff\n\015()] *                            #     normal*
        !          1724: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
        !          1725: \)                           #                       )
        !          1726: )    #         special
        !          1727: [^\\\x80-\xff\n\015()] *                         #         normal*
        !          1728: )*                                  #            )*
        !          1729: \)                             #                )
        !          1730: [\040\t]* )*    # If comment found, allow more spaces.
        !          1731: # optional trailing comments
        !          1732: )*
        !          1733: #       address spec
        !          1734: >                    #                 >
        !          1735: # name and address
        !          1736: )
        !          1737: /x
        !          1738:     Alan Other <user\@dom.ain>
        !          1739:     <user\@dom.ain>
        !          1740:     user\@dom.ain
        !          1741:     \"A. Other\" <user.1234\@dom.ain> (a comment)
        !          1742:     A. Other <user.1234\@dom.ain> (a comment)
        !          1743:     \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
        !          1744:     A missing angle <user\@some.where
        !          1745:     *** Failers
        !          1746:     The quick brown fox
        !          1747: 
        !          1748: /abc\0def\00pqr\000xyz\0000AB/
        !          1749:     abc\0def\00pqr\000xyz\0000AB
        !          1750:     abc456 abc\0def\00pqr\000xyz\0000ABCDE
        !          1751: 
        !          1752: /abc\x0def\x00pqr\x000xyz\x0000AB/
        !          1753:     abc\x0def\x00pqr\x000xyz\x0000AB
        !          1754:     abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE
        !          1755: 
        !          1756: /^[\000-\037]/
        !          1757:     \0A
        !          1758:     \01B
        !          1759:     \037C
        !          1760: 
        !          1761: /\0*/
        !          1762:     \0\0\0\0
        !          1763: 
        !          1764: /A\x0{2,3}Z/
        !          1765:     The A\x0\x0Z
        !          1766:     An A\0\x0\0Z
        !          1767:     *** Failers
        !          1768:     A\0Z
        !          1769:     A\0\x0\0\x0Z
        !          1770: 
        !          1771: /^\s/
        !          1772:     \040abc
        !          1773:     \x0cabc
        !          1774:     \nabc
        !          1775:     \rabc
        !          1776:     \tabc
        !          1777:     *** Failers
        !          1778:     abc
        !          1779: 
        !          1780: /^a    b
        !          1781:       c/x
        !          1782:     abc
        !          1783: 
        !          1784: /ab{1,3}bc/
        !          1785:     abbbbc
        !          1786:     abbbc
        !          1787:     abbc
        !          1788:     *** Failers
        !          1789:     abc
        !          1790:     abbbbbc
        !          1791: 
        !          1792: /([^.]*)\.([^:]*):[T ]+(.*)/
        !          1793:     track1.title:TBlah blah blah
        !          1794: 
        !          1795: /([^.]*)\.([^:]*):[T ]+(.*)/i
        !          1796:     track1.title:TBlah blah blah
        !          1797: 
        !          1798: /([^.]*)\.([^:]*):[t ]+(.*)/i
        !          1799:     track1.title:TBlah blah blah
        !          1800: 
        !          1801: /^[W-c]+$/
        !          1802:     WXY_^abc
        !          1803:     *** Failers
        !          1804:     wxy
        !          1805: 
        !          1806: /^[W-c]+$/i
        !          1807:     WXY_^abc
        !          1808:     wxy_^ABC
        !          1809: 
        !          1810: /^[\x3f-\x5F]+$/i
        !          1811:     WXY_^abc
        !          1812:     wxy_^ABC
        !          1813: 
        !          1814: /^abc$/m
        !          1815:     abc
        !          1816:     qqq\nabc
        !          1817:     abc\nzzz
        !          1818:     qqq\nabc\nzzz
        !          1819: 
        !          1820: /^abc$/
        !          1821:     abc
        !          1822:     *** Failers
        !          1823:     qqq\nabc
        !          1824:     abc\nzzz
        !          1825:     qqq\nabc\nzzz
        !          1826: 
        !          1827: /\Aabc\Z/m
        !          1828:     abc
        !          1829:     abc\n 
        !          1830:     *** Failers
        !          1831:     qqq\nabc
        !          1832:     abc\nzzz
        !          1833:     qqq\nabc\nzzz
        !          1834:     
        !          1835: /\A(.)*\Z/s
        !          1836:     abc\ndef
        !          1837: 
        !          1838: /\A(.)*\Z/m
        !          1839:     *** Failers
        !          1840:     abc\ndef
        !          1841: 
        !          1842: /(?:b)|(?::+)/
        !          1843:     b::c
        !          1844:     c::b
        !          1845: 
        !          1846: /[-az]+/
        !          1847:     az-
        !          1848:     *** Failers
        !          1849:     b
        !          1850: 
        !          1851: /[az-]+/
        !          1852:     za-
        !          1853:     *** Failers
        !          1854:     b
        !          1855: 
        !          1856: /[a\-z]+/
        !          1857:     a-z
        !          1858:     *** Failers
        !          1859:     b
        !          1860: 
        !          1861: /[a-z]+/
        !          1862:     abcdxyz
        !          1863: 
        !          1864: /[\d-]+/
        !          1865:     12-34
        !          1866:     *** Failers
        !          1867:     aaa
        !          1868: 
        !          1869: /[\d-z]+/
        !          1870:     12-34z
        !          1871:     *** Failers
        !          1872:     aaa
        !          1873: 
        !          1874: /\x5c/
        !          1875:     \\
        !          1876: 
        !          1877: /\x20Z/
        !          1878:     the Zoo
        !          1879:     *** Failers
        !          1880:     Zulu
        !          1881: 
        !          1882: /ab{3cd/
        !          1883:     ab{3cd
        !          1884: 
        !          1885: /ab{3,cd/
        !          1886:     ab{3,cd
        !          1887: 
        !          1888: /ab{3,4a}cd/
        !          1889:     ab{3,4a}cd
        !          1890: 
        !          1891: /{4,5a}bc/
        !          1892:     {4,5a}bc
        !          1893: 
        !          1894: /^a.b/<lf>
        !          1895:     a\rb
        !          1896:     *** Failers
        !          1897:     a\nb
        !          1898: 
        !          1899: /abc$/
        !          1900:     abc
        !          1901:     abc\n
        !          1902:     *** Failers
        !          1903:     abc\ndef
        !          1904: 
        !          1905: /(abc)\123/
        !          1906:     abc\x53
        !          1907: 
        !          1908: /(abc)\223/
        !          1909:     abc\x93
        !          1910: 
        !          1911: /(abc)\323/
        !          1912:     abc\xd3
        !          1913: 
        !          1914: /(abc)\100/
        !          1915:     abc\x40
        !          1916:     abc\100
        !          1917: 
        !          1918: /(abc)\1000/
        !          1919:     abc\x400
        !          1920:     abc\x40\x30
        !          1921:     abc\1000
        !          1922:     abc\100\x30
        !          1923:     abc\100\060
        !          1924:     abc\100\60
        !          1925: 
        !          1926: /abc\81/
        !          1927:     abc\081
        !          1928:     abc\0\x38\x31
        !          1929: 
        !          1930: /abc\91/
        !          1931:     abc\091
        !          1932:     abc\0\x39\x31
        !          1933: 
        !          1934: /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
        !          1935:     abcdefghijk\12S
        !          1936: 
        !          1937: /ab\idef/
        !          1938:     abidef
        !          1939: 
        !          1940: /a{0}bc/
        !          1941:     bc
        !          1942: 
        !          1943: /(a|(bc)){0,0}?xyz/
        !          1944:     xyz
        !          1945: 
        !          1946: /abc[\10]de/
        !          1947:     abc\010de
        !          1948: 
        !          1949: /abc[\1]de/
        !          1950:     abc\1de
        !          1951: 
        !          1952: /(abc)[\1]de/
        !          1953:     abc\1de
        !          1954: 
        !          1955: /(?s)a.b/
        !          1956:     a\nb
        !          1957: 
        !          1958: /^([^a])([^\b])([^c]*)([^d]{3,4})/
        !          1959:     baNOTccccd
        !          1960:     baNOTcccd
        !          1961:     baNOTccd
        !          1962:     bacccd
        !          1963:     *** Failers
        !          1964:     anything
        !          1965:     b\bc   
        !          1966:     baccd
        !          1967: 
        !          1968: /[^a]/
        !          1969:     Abc
        !          1970:   
        !          1971: /[^a]/i
        !          1972:     Abc 
        !          1973: 
        !          1974: /[^a]+/
        !          1975:     AAAaAbc
        !          1976:   
        !          1977: /[^a]+/i
        !          1978:     AAAaAbc 
        !          1979: 
        !          1980: /[^a]+/
        !          1981:     bbb\nccc
        !          1982:    
        !          1983: /[^k]$/
        !          1984:     abc
        !          1985:     *** Failers
        !          1986:     abk   
        !          1987:    
        !          1988: /[^k]{2,3}$/
        !          1989:     abc
        !          1990:     kbc
        !          1991:     kabc 
        !          1992:     *** Failers
        !          1993:     abk
        !          1994:     akb
        !          1995:     akk 
        !          1996: 
        !          1997: /^\d{8,}\@.+[^k]$/
        !          1998:     12345678\@a.b.c.d
        !          1999:     123456789\@x.y.z
        !          2000:     *** Failers
        !          2001:     12345678\@x.y.uk
        !          2002:     1234567\@a.b.c.d       
        !          2003: 
        !          2004: /[^a]/
        !          2005:     aaaabcd
        !          2006:     aaAabcd 
        !          2007: 
        !          2008: /[^a]/i
        !          2009:     aaaabcd
        !          2010:     aaAabcd 
        !          2011: 
        !          2012: /[^az]/
        !          2013:     aaaabcd
        !          2014:     aaAabcd 
        !          2015: 
        !          2016: /[^az]/i
        !          2017:     aaaabcd
        !          2018:     aaAabcd 
        !          2019: 
        !          2020: /\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/
        !          2021:  \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
        !          2022: 
        !          2023: /P[^*]TAIRE[^*]{1,6}?LL/
        !          2024:     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
        !          2025: 
        !          2026: /P[^*]TAIRE[^*]{1,}?LL/
        !          2027:     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
        !          2028: 
        !          2029: /(\.\d\d[1-9]?)\d+/
        !          2030:     1.230003938
        !          2031:     1.875000282   
        !          2032:     1.235  
        !          2033:                   
        !          2034: /(\.\d\d((?=0)|\d(?=\d)))/
        !          2035:     1.230003938      
        !          2036:     1.875000282
        !          2037:     *** Failers 
        !          2038:     1.235 
        !          2039:     
        !          2040: /a(?)b/
        !          2041:     ab 
        !          2042:  
        !          2043: /\b(foo)\s+(\w+)/i
        !          2044:     Food is on the foo table
        !          2045:     
        !          2046: /foo(.*)bar/
        !          2047:     The food is under the bar in the barn.
        !          2048:     
        !          2049: /foo(.*?)bar/  
        !          2050:     The food is under the bar in the barn.
        !          2051: 
        !          2052: /(.*)(\d*)/
        !          2053:     I have 2 numbers: 53147
        !          2054:     
        !          2055: /(.*)(\d+)/
        !          2056:     I have 2 numbers: 53147
        !          2057:  
        !          2058: /(.*?)(\d*)/
        !          2059:     I have 2 numbers: 53147
        !          2060: 
        !          2061: /(.*?)(\d+)/
        !          2062:     I have 2 numbers: 53147
        !          2063: 
        !          2064: /(.*)(\d+)$/
        !          2065:     I have 2 numbers: 53147
        !          2066: 
        !          2067: /(.*?)(\d+)$/
        !          2068:     I have 2 numbers: 53147
        !          2069: 
        !          2070: /(.*)\b(\d+)$/
        !          2071:     I have 2 numbers: 53147
        !          2072: 
        !          2073: /(.*\D)(\d+)$/
        !          2074:     I have 2 numbers: 53147
        !          2075: 
        !          2076: /^\D*(?!123)/
        !          2077:     ABC123
        !          2078:      
        !          2079: /^(\D*)(?=\d)(?!123)/
        !          2080:     ABC445
        !          2081:     *** Failers
        !          2082:     ABC123
        !          2083:     
        !          2084: /^[W-]46]/
        !          2085:     W46]789 
        !          2086:     -46]789
        !          2087:     *** Failers
        !          2088:     Wall
        !          2089:     Zebra
        !          2090:     42
        !          2091:     [abcd] 
        !          2092:     ]abcd[
        !          2093:        
        !          2094: /^[W-\]46]/
        !          2095:     W46]789 
        !          2096:     Wall
        !          2097:     Zebra
        !          2098:     Xylophone  
        !          2099:     42
        !          2100:     [abcd] 
        !          2101:     ]abcd[
        !          2102:     \\backslash 
        !          2103:     *** Failers
        !          2104:     -46]789
        !          2105:     well
        !          2106:     
        !          2107: /\d\d\/\d\d\/\d\d\d\d/
        !          2108:     01/01/2000
        !          2109: 
        !          2110: /word (?:[a-zA-Z0-9]+ ){0,10}otherword/
        !          2111:   word cat dog elephant mussel cow horse canary baboon snake shark otherword
        !          2112:   word cat dog elephant mussel cow horse canary baboon snake shark
        !          2113: 
        !          2114: /word (?:[a-zA-Z0-9]+ ){0,300}otherword/
        !          2115:   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
        !          2116: 
        !          2117: /^(a){0,0}/
        !          2118:     bcd
        !          2119:     abc
        !          2120:     aab     
        !          2121: 
        !          2122: /^(a){0,1}/
        !          2123:     bcd
        !          2124:     abc
        !          2125:     aab  
        !          2126: 
        !          2127: /^(a){0,2}/
        !          2128:     bcd
        !          2129:     abc
        !          2130:     aab  
        !          2131: 
        !          2132: /^(a){0,3}/
        !          2133:     bcd
        !          2134:     abc
        !          2135:     aab
        !          2136:     aaa   
        !          2137: 
        !          2138: /^(a){0,}/
        !          2139:     bcd
        !          2140:     abc
        !          2141:     aab
        !          2142:     aaa
        !          2143:     aaaaaaaa    
        !          2144: 
        !          2145: /^(a){1,1}/
        !          2146:     bcd
        !          2147:     abc
        !          2148:     aab  
        !          2149: 
        !          2150: /^(a){1,2}/
        !          2151:     bcd
        !          2152:     abc
        !          2153:     aab  
        !          2154: 
        !          2155: /^(a){1,3}/
        !          2156:     bcd
        !          2157:     abc
        !          2158:     aab
        !          2159:     aaa   
        !          2160: 
        !          2161: /^(a){1,}/
        !          2162:     bcd
        !          2163:     abc
        !          2164:     aab
        !          2165:     aaa
        !          2166:     aaaaaaaa    
        !          2167: 
        !          2168: /.*\.gif/
        !          2169:     borfle\nbib.gif\nno
        !          2170: 
        !          2171: /.{0,}\.gif/
        !          2172:     borfle\nbib.gif\nno
        !          2173: 
        !          2174: /.*\.gif/m
        !          2175:     borfle\nbib.gif\nno
        !          2176: 
        !          2177: /.*\.gif/s
        !          2178:     borfle\nbib.gif\nno
        !          2179: 
        !          2180: /.*\.gif/ms
        !          2181:     borfle\nbib.gif\nno
        !          2182:     
        !          2183: /.*$/
        !          2184:     borfle\nbib.gif\nno
        !          2185: 
        !          2186: /.*$/m
        !          2187:     borfle\nbib.gif\nno
        !          2188: 
        !          2189: /.*$/s
        !          2190:     borfle\nbib.gif\nno
        !          2191: 
        !          2192: /.*$/ms
        !          2193:     borfle\nbib.gif\nno
        !          2194:     
        !          2195: /.*$/
        !          2196:     borfle\nbib.gif\nno\n
        !          2197: 
        !          2198: /.*$/m
        !          2199:     borfle\nbib.gif\nno\n
        !          2200: 
        !          2201: /.*$/s
        !          2202:     borfle\nbib.gif\nno\n
        !          2203: 
        !          2204: /.*$/ms
        !          2205:     borfle\nbib.gif\nno\n
        !          2206:     
        !          2207: /(.*X|^B)/
        !          2208:     abcde\n1234Xyz
        !          2209:     BarFoo 
        !          2210:     *** Failers
        !          2211:     abcde\nBar  
        !          2212: 
        !          2213: /(.*X|^B)/m
        !          2214:     abcde\n1234Xyz
        !          2215:     BarFoo 
        !          2216:     abcde\nBar  
        !          2217: 
        !          2218: /(.*X|^B)/s
        !          2219:     abcde\n1234Xyz
        !          2220:     BarFoo 
        !          2221:     *** Failers
        !          2222:     abcde\nBar  
        !          2223: 
        !          2224: /(.*X|^B)/ms
        !          2225:     abcde\n1234Xyz
        !          2226:     BarFoo 
        !          2227:     abcde\nBar  
        !          2228: 
        !          2229: /(?s)(.*X|^B)/
        !          2230:     abcde\n1234Xyz
        !          2231:     BarFoo 
        !          2232:     *** Failers 
        !          2233:     abcde\nBar  
        !          2234: 
        !          2235: /(?s:.*X|^B)/
        !          2236:     abcde\n1234Xyz
        !          2237:     BarFoo 
        !          2238:     *** Failers 
        !          2239:     abcde\nBar  
        !          2240: 
        !          2241: /^.*B/
        !          2242:     **** Failers
        !          2243:     abc\nB
        !          2244:      
        !          2245: /(?s)^.*B/
        !          2246:     abc\nB
        !          2247: 
        !          2248: /(?m)^.*B/
        !          2249:     abc\nB
        !          2250:      
        !          2251: /(?ms)^.*B/
        !          2252:     abc\nB
        !          2253: 
        !          2254: /(?ms)^B/
        !          2255:     abc\nB
        !          2256: 
        !          2257: /(?s)B$/
        !          2258:     B\n
        !          2259: 
        !          2260: /^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
        !          2261:     123456654321
        !          2262:   
        !          2263: /^\d\d\d\d\d\d\d\d\d\d\d\d/
        !          2264:     123456654321 
        !          2265: 
        !          2266: /^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/
        !          2267:     123456654321
        !          2268:   
        !          2269: /^[abc]{12}/
        !          2270:     abcabcabcabc
        !          2271:     
        !          2272: /^[a-c]{12}/
        !          2273:     abcabcabcabc
        !          2274:     
        !          2275: /^(a|b|c){12}/
        !          2276:     abcabcabcabc 
        !          2277: 
        !          2278: /^[abcdefghijklmnopqrstuvwxy0123456789]/
        !          2279:     n
        !          2280:     *** Failers 
        !          2281:     z 
        !          2282: 
        !          2283: /abcde{0,0}/
        !          2284:     abcd
        !          2285:     *** Failers
        !          2286:     abce  
        !          2287: 
        !          2288: /ab[cd]{0,0}e/
        !          2289:     abe
        !          2290:     *** Failers
        !          2291:     abcde 
        !          2292:     
        !          2293: /ab(c){0,0}d/
        !          2294:     abd
        !          2295:     *** Failers
        !          2296:     abcd   
        !          2297: 
        !          2298: /a(b*)/
        !          2299:     a
        !          2300:     ab
        !          2301:     abbbb
        !          2302:     *** Failers
        !          2303:     bbbbb    
        !          2304:     
        !          2305: /ab\d{0}e/
        !          2306:     abe
        !          2307:     *** Failers
        !          2308:     ab1e   
        !          2309:     
        !          2310: /"([^\\"]+|\\.)*"/
        !          2311:     the \"quick\" brown fox
        !          2312:     \"the \\\"quick\\\" brown fox\" 
        !          2313: 
        !          2314: /.*?/g+
        !          2315:     abc
        !          2316:   
        !          2317: /\b/g+
        !          2318:     abc 
        !          2319: 
        !          2320: /\b/+g
        !          2321:     abc 
        !          2322: 
        !          2323: //g
        !          2324:     abc
        !          2325: 
        !          2326: /<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
        !          2327:   <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>
        !          2328: 
        !          2329: /a[^a]b/
        !          2330:     acb
        !          2331:     a\nb
        !          2332:     
        !          2333: /a.b/
        !          2334:     acb
        !          2335:     *** Failers 
        !          2336:     a\nb   
        !          2337:     
        !          2338: /a[^a]b/s
        !          2339:     acb
        !          2340:     a\nb  
        !          2341:     
        !          2342: /a.b/s
        !          2343:     acb
        !          2344:     a\nb  
        !          2345: 
        !          2346: /^(b+?|a){1,2}?c/
        !          2347:     bac
        !          2348:     bbac
        !          2349:     bbbac
        !          2350:     bbbbac
        !          2351:     bbbbbac 
        !          2352: 
        !          2353: /^(b+|a){1,2}?c/
        !          2354:     bac
        !          2355:     bbac
        !          2356:     bbbac
        !          2357:     bbbbac
        !          2358:     bbbbbac 
        !          2359:     
        !          2360: /(?!\A)x/m
        !          2361:     x\nb\n
        !          2362:     a\bx\n  
        !          2363:     
        !          2364: /\x0{ab}/
        !          2365:     \0{ab} 
        !          2366: 
        !          2367: /(A|B)*?CD/
        !          2368:     CD 
        !          2369:     
        !          2370: /(A|B)*CD/
        !          2371:     CD 
        !          2372: 
        !          2373: /(?<!bar)foo/
        !          2374:     foo
        !          2375:     catfood
        !          2376:     arfootle
        !          2377:     rfoosh
        !          2378:     *** Failers
        !          2379:     barfoo
        !          2380:     towbarfoo
        !          2381: 
        !          2382: /\w{3}(?<!bar)foo/
        !          2383:     catfood
        !          2384:     *** Failers
        !          2385:     foo
        !          2386:     barfoo
        !          2387:     towbarfoo
        !          2388: 
        !          2389: /(?<=(foo)a)bar/
        !          2390:     fooabar
        !          2391:     *** Failers
        !          2392:     bar
        !          2393:     foobbar
        !          2394:       
        !          2395: /\Aabc\z/m
        !          2396:     abc
        !          2397:     *** Failers
        !          2398:     abc\n   
        !          2399:     qqq\nabc
        !          2400:     abc\nzzz
        !          2401:     qqq\nabc\nzzz
        !          2402: 
        !          2403: "(?>.*/)foo"
        !          2404:     /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/
        !          2405: 
        !          2406: "(?>.*/)foo"
        !          2407:     /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
        !          2408: 
        !          2409: /(?>(\.\d\d[1-9]?))\d+/
        !          2410:     1.230003938
        !          2411:     1.875000282
        !          2412:     *** Failers 
        !          2413:     1.235 
        !          2414: 
        !          2415: /^((?>\w+)|(?>\s+))*$/
        !          2416:     now is the time for all good men to come to the aid of the party
        !          2417:     *** Failers
        !          2418:     this is not a line with only words and spaces!
        !          2419:     
        !          2420: /(\d+)(\w)/
        !          2421:     12345a
        !          2422:     12345+ 
        !          2423: 
        !          2424: /((?>\d+))(\w)/
        !          2425:     12345a
        !          2426:     *** Failers
        !          2427:     12345+ 
        !          2428: 
        !          2429: /(?>a+)b/
        !          2430:     aaab
        !          2431: 
        !          2432: /((?>a+)b)/
        !          2433:     aaab
        !          2434: 
        !          2435: /(?>(a+))b/
        !          2436:     aaab
        !          2437: 
        !          2438: /(?>b)+/
        !          2439:     aaabbbccc
        !          2440: 
        !          2441: /(?>a+|b+|c+)*c/
        !          2442:     aaabbbbccccd
        !          2443:     
        !          2444: /(a+|b+|c+)*c/
        !          2445:     aaabbbbccccd
        !          2446: 
        !          2447: /((?>[^()]+)|\([^()]*\))+/
        !          2448:     ((abc(ade)ufh()()x
        !          2449:     
        !          2450: /\(((?>[^()]+)|\([^()]+\))+\)/ 
        !          2451:     (abc)
        !          2452:     (abc(def)xyz)
        !          2453:     *** Failers
        !          2454:     ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa   
        !          2455: 
        !          2456: /a(?-i)b/i
        !          2457:     ab
        !          2458:     Ab
        !          2459:     *** Failers 
        !          2460:     aB
        !          2461:     AB
        !          2462:         
        !          2463: /(a (?x)b c)d e/
        !          2464:     a bcd e
        !          2465:     *** Failers
        !          2466:     a b cd e
        !          2467:     abcd e   
        !          2468:     a bcde 
        !          2469:  
        !          2470: /(a b(?x)c d (?-x)e f)/
        !          2471:     a bcde f
        !          2472:     *** Failers
        !          2473:     abcdef  
        !          2474: 
        !          2475: /(a(?i)b)c/
        !          2476:     abc
        !          2477:     aBc
        !          2478:     *** Failers
        !          2479:     abC
        !          2480:     aBC  
        !          2481:     Abc
        !          2482:     ABc
        !          2483:     ABC
        !          2484:     AbC
        !          2485:     
        !          2486: /a(?i:b)c/
        !          2487:     abc
        !          2488:     aBc
        !          2489:     *** Failers 
        !          2490:     ABC
        !          2491:     abC
        !          2492:     aBC
        !          2493:     
        !          2494: /a(?i:b)*c/
        !          2495:     aBc
        !          2496:     aBBc
        !          2497:     *** Failers 
        !          2498:     aBC
        !          2499:     aBBC
        !          2500:     
        !          2501: /a(?=b(?i)c)\w\wd/
        !          2502:     abcd
        !          2503:     abCd
        !          2504:     *** Failers
        !          2505:     aBCd
        !          2506:     abcD     
        !          2507:     
        !          2508: /(?s-i:more.*than).*million/i
        !          2509:     more than million
        !          2510:     more than MILLION
        !          2511:     more \n than Million 
        !          2512:     *** Failers
        !          2513:     MORE THAN MILLION    
        !          2514:     more \n than \n million 
        !          2515: 
        !          2516: /(?:(?s-i)more.*than).*million/i
        !          2517:     more than million
        !          2518:     more than MILLION
        !          2519:     more \n than Million 
        !          2520:     *** Failers
        !          2521:     MORE THAN MILLION    
        !          2522:     more \n than \n million 
        !          2523:     
        !          2524: /(?>a(?i)b+)+c/ 
        !          2525:     abc
        !          2526:     aBbc
        !          2527:     aBBc 
        !          2528:     *** Failers
        !          2529:     Abc
        !          2530:     abAb    
        !          2531:     abbC 
        !          2532:     
        !          2533: /(?=a(?i)b)\w\wc/
        !          2534:     abc
        !          2535:     aBc
        !          2536:     *** Failers
        !          2537:     Ab 
        !          2538:     abC
        !          2539:     aBC     
        !          2540:     
        !          2541: /(?<=a(?i)b)(\w\w)c/
        !          2542:     abxxc
        !          2543:     aBxxc
        !          2544:     *** Failers
        !          2545:     Abxxc
        !          2546:     ABxxc
        !          2547:     abxxC      
        !          2548: 
        !          2549: /^(?(?=abc)\w{3}:|\d\d)$/
        !          2550:     abc:
        !          2551:     12
        !          2552:     *** Failers
        !          2553:     123
        !          2554:     xyz    
        !          2555: 
        !          2556: /^(?(?!abc)\d\d|\w{3}:)$/
        !          2557:     abc:
        !          2558:     12
        !          2559:     *** Failers
        !          2560:     123
        !          2561:     xyz    
        !          2562:     
        !          2563: /(?(?<=foo)bar|cat)/
        !          2564:     foobar
        !          2565:     cat
        !          2566:     fcat
        !          2567:     focat   
        !          2568:     *** Failers
        !          2569:     foocat  
        !          2570: 
        !          2571: /(?(?<!foo)cat|bar)/
        !          2572:     foobar
        !          2573:     cat
        !          2574:     fcat
        !          2575:     focat   
        !          2576:     *** Failers
        !          2577:     foocat  
        !          2578: 
        !          2579: /(?>a*)*/
        !          2580:     a
        !          2581:     aa
        !          2582:     aaaa
        !          2583:     
        !          2584: /(abc|)+/
        !          2585:     abc
        !          2586:     abcabc
        !          2587:     abcabcabc
        !          2588:     xyz      
        !          2589: 
        !          2590: /([a]*)*/
        !          2591:     a
        !          2592:     aaaaa 
        !          2593:  
        !          2594: /([ab]*)*/
        !          2595:     a
        !          2596:     b
        !          2597:     ababab
        !          2598:     aaaabcde
        !          2599:     bbbb    
        !          2600:  
        !          2601: /([^a]*)*/
        !          2602:     b
        !          2603:     bbbb
        !          2604:     aaa   
        !          2605:  
        !          2606: /([^ab]*)*/
        !          2607:     cccc
        !          2608:     abab  
        !          2609:  
        !          2610: /([a]*?)*/
        !          2611:     a
        !          2612:     aaaa 
        !          2613:  
        !          2614: /([ab]*?)*/
        !          2615:     a
        !          2616:     b
        !          2617:     abab
        !          2618:     baba   
        !          2619:  
        !          2620: /([^a]*?)*/
        !          2621:     b
        !          2622:     bbbb
        !          2623:     aaa   
        !          2624:  
        !          2625: /([^ab]*?)*/
        !          2626:     c
        !          2627:     cccc
        !          2628:     baba   
        !          2629:  
        !          2630: /(?>a*)*/
        !          2631:     a
        !          2632:     aaabcde 
        !          2633:  
        !          2634: /((?>a*))*/
        !          2635:     aaaaa
        !          2636:     aabbaa 
        !          2637:  
        !          2638: /((?>a*?))*/
        !          2639:     aaaaa
        !          2640:     aabbaa 
        !          2641: 
        !          2642: /(?(?=[^a-z]+[a-z])  \d{2}-[a-z]{3}-\d{2}  |  \d{2}-\d{2}-\d{2} ) /x
        !          2643:     12-sep-98
        !          2644:     12-09-98
        !          2645:     *** Failers
        !          2646:     sep-12-98
        !          2647:         
        !          2648: /(?i:saturday|sunday)/
        !          2649:     saturday
        !          2650:     sunday
        !          2651:     Saturday
        !          2652:     Sunday
        !          2653:     SATURDAY
        !          2654:     SUNDAY
        !          2655:     SunDay
        !          2656:     
        !          2657: /(a(?i)bc|BB)x/
        !          2658:     abcx
        !          2659:     aBCx
        !          2660:     bbx
        !          2661:     BBx
        !          2662:     *** Failers
        !          2663:     abcX
        !          2664:     aBCX
        !          2665:     bbX
        !          2666:     BBX               
        !          2667: 
        !          2668: /^([ab](?i)[cd]|[ef])/
        !          2669:     ac
        !          2670:     aC
        !          2671:     bD
        !          2672:     elephant
        !          2673:     Europe 
        !          2674:     frog
        !          2675:     France
        !          2676:     *** Failers
        !          2677:     Africa     
        !          2678: 
        !          2679: /^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/
        !          2680:     ab
        !          2681:     aBd
        !          2682:     xy
        !          2683:     xY
        !          2684:     zebra
        !          2685:     Zambesi
        !          2686:     *** Failers
        !          2687:     aCD  
        !          2688:     XY  
        !          2689: 
        !          2690: /(?<=foo\n)^bar/m
        !          2691:     foo\nbar
        !          2692:     *** Failers
        !          2693:     bar
        !          2694:     baz\nbar   
        !          2695: 
        !          2696: /(?<=(?<!foo)bar)baz/
        !          2697:     barbaz
        !          2698:     barbarbaz 
        !          2699:     koobarbaz 
        !          2700:     *** Failers
        !          2701:     baz
        !          2702:     foobarbaz 
        !          2703: 
        !          2704: /The following tests are taken from the Perl 5.005 test suite; some of them/
        !          2705: /are compatible with 5.004, but I'd rather not have to sort them out./
        !          2706: 
        !          2707: /abc/
        !          2708:     abc
        !          2709:     xabcy
        !          2710:     ababc
        !          2711:     *** Failers
        !          2712:     xbc
        !          2713:     axc
        !          2714:     abx
        !          2715: 
        !          2716: /ab*c/
        !          2717:     abc
        !          2718: 
        !          2719: /ab*bc/
        !          2720:     abc
        !          2721:     abbc
        !          2722:     abbbbc
        !          2723: 
        !          2724: /.{1}/
        !          2725:     abbbbc
        !          2726: 
        !          2727: /.{3,4}/
        !          2728:     abbbbc
        !          2729: 
        !          2730: /ab{0,}bc/
        !          2731:     abbbbc
        !          2732: 
        !          2733: /ab+bc/
        !          2734:     abbc
        !          2735:     *** Failers
        !          2736:     abc
        !          2737:     abq
        !          2738: 
        !          2739: /ab+bc/
        !          2740:     abbbbc
        !          2741: 
        !          2742: /ab{1,}bc/
        !          2743:     abbbbc
        !          2744: 
        !          2745: /ab{1,3}bc/
        !          2746:     abbbbc
        !          2747: 
        !          2748: /ab{3,4}bc/
        !          2749:     abbbbc
        !          2750: 
        !          2751: /ab{4,5}bc/
        !          2752:     *** Failers
        !          2753:     abq
        !          2754:     abbbbc
        !          2755: 
        !          2756: /ab?bc/
        !          2757:     abbc
        !          2758:     abc
        !          2759: 
        !          2760: /ab{0,1}bc/
        !          2761:     abc
        !          2762: 
        !          2763: /ab?bc/
        !          2764: 
        !          2765: /ab?c/
        !          2766:     abc
        !          2767: 
        !          2768: /ab{0,1}c/
        !          2769:     abc
        !          2770: 
        !          2771: /^abc$/
        !          2772:     abc
        !          2773:     *** Failers
        !          2774:     abbbbc
        !          2775:     abcc
        !          2776: 
        !          2777: /^abc/
        !          2778:     abcc
        !          2779: 
        !          2780: /^abc$/
        !          2781: 
        !          2782: /abc$/
        !          2783:     aabc
        !          2784:     *** Failers
        !          2785:     aabc
        !          2786:     aabcd
        !          2787: 
        !          2788: /^/
        !          2789:     abc
        !          2790: 
        !          2791: /$/
        !          2792:     abc
        !          2793: 
        !          2794: /a.c/
        !          2795:     abc
        !          2796:     axc
        !          2797: 
        !          2798: /a.*c/
        !          2799:     axyzc
        !          2800: 
        !          2801: /a[bc]d/
        !          2802:     abd
        !          2803:     *** Failers
        !          2804:     axyzd
        !          2805:     abc
        !          2806: 
        !          2807: /a[b-d]e/
        !          2808:     ace
        !          2809: 
        !          2810: /a[b-d]/
        !          2811:     aac
        !          2812: 
        !          2813: /a[-b]/
        !          2814:     a-
        !          2815: 
        !          2816: /a[b-]/
        !          2817:     a-
        !          2818: 
        !          2819: /a]/
        !          2820:     a]
        !          2821: 
        !          2822: /a[]]b/
        !          2823:     a]b
        !          2824: 
        !          2825: /a[^bc]d/
        !          2826:     aed
        !          2827:     *** Failers
        !          2828:     abd
        !          2829:     abd
        !          2830: 
        !          2831: /a[^-b]c/
        !          2832:     adc
        !          2833: 
        !          2834: /a[^]b]c/
        !          2835:     adc
        !          2836:     *** Failers
        !          2837:     a-c
        !          2838:     a]c
        !          2839: 
        !          2840: /\ba\b/
        !          2841:     a-
        !          2842:     -a
        !          2843:     -a-
        !          2844: 
        !          2845: /\by\b/
        !          2846:     *** Failers
        !          2847:     xy
        !          2848:     yz
        !          2849:     xyz
        !          2850: 
        !          2851: /\Ba\B/
        !          2852:     *** Failers
        !          2853:     a-
        !          2854:     -a
        !          2855:     -a-
        !          2856: 
        !          2857: /\By\b/
        !          2858:     xy
        !          2859: 
        !          2860: /\by\B/
        !          2861:     yz
        !          2862: 
        !          2863: /\By\B/
        !          2864:     xyz
        !          2865: 
        !          2866: /\w/
        !          2867:     a
        !          2868: 
        !          2869: /\W/
        !          2870:     -
        !          2871:     *** Failers
        !          2872:     -
        !          2873:     a
        !          2874: 
        !          2875: /a\sb/
        !          2876:     a b
        !          2877: 
        !          2878: /a\Sb/
        !          2879:     a-b
        !          2880:     *** Failers
        !          2881:     a-b
        !          2882:     a b
        !          2883: 
        !          2884: /\d/
        !          2885:     1
        !          2886: 
        !          2887: /\D/
        !          2888:     -
        !          2889:     *** Failers
        !          2890:     -
        !          2891:     1
        !          2892: 
        !          2893: /[\w]/
        !          2894:     a
        !          2895: 
        !          2896: /[\W]/
        !          2897:     -
        !          2898:     *** Failers
        !          2899:     -
        !          2900:     a
        !          2901: 
        !          2902: /a[\s]b/
        !          2903:     a b
        !          2904: 
        !          2905: /a[\S]b/
        !          2906:     a-b
        !          2907:     *** Failers
        !          2908:     a-b
        !          2909:     a b
        !          2910: 
        !          2911: /[\d]/
        !          2912:     1
        !          2913: 
        !          2914: /[\D]/
        !          2915:     -
        !          2916:     *** Failers
        !          2917:     -
        !          2918:     1
        !          2919: 
        !          2920: /ab|cd/
        !          2921:     abc
        !          2922:     abcd
        !          2923: 
        !          2924: /()ef/
        !          2925:     def
        !          2926: 
        !          2927: /$b/
        !          2928: 
        !          2929: /a\(b/
        !          2930:     a(b
        !          2931: 
        !          2932: /a\(*b/
        !          2933:     ab
        !          2934:     a((b
        !          2935: 
        !          2936: /a\\b/
        !          2937:     a\b
        !          2938: 
        !          2939: /((a))/
        !          2940:     abc
        !          2941: 
        !          2942: /(a)b(c)/
        !          2943:     abc
        !          2944: 
        !          2945: /a+b+c/
        !          2946:     aabbabc
        !          2947: 
        !          2948: /a{1,}b{1,}c/
        !          2949:     aabbabc
        !          2950: 
        !          2951: /a.+?c/
        !          2952:     abcabc
        !          2953: 
        !          2954: /(a+|b)*/
        !          2955:     ab
        !          2956: 
        !          2957: /(a+|b){0,}/
        !          2958:     ab
        !          2959: 
        !          2960: /(a+|b)+/
        !          2961:     ab
        !          2962: 
        !          2963: /(a+|b){1,}/
        !          2964:     ab
        !          2965: 
        !          2966: /(a+|b)?/
        !          2967:     ab
        !          2968: 
        !          2969: /(a+|b){0,1}/
        !          2970:     ab
        !          2971: 
        !          2972: /[^ab]*/
        !          2973:     cde
        !          2974: 
        !          2975: /abc/
        !          2976:     *** Failers
        !          2977:     b
        !          2978:     
        !          2979: 
        !          2980: /a*/
        !          2981:     
        !          2982: 
        !          2983: /([abc])*d/
        !          2984:     abbbcd
        !          2985: 
        !          2986: /([abc])*bcd/
        !          2987:     abcd
        !          2988: 
        !          2989: /a|b|c|d|e/
        !          2990:     e
        !          2991: 
        !          2992: /(a|b|c|d|e)f/
        !          2993:     ef
        !          2994: 
        !          2995: /abcd*efg/
        !          2996:     abcdefg
        !          2997: 
        !          2998: /ab*/
        !          2999:     xabyabbbz
        !          3000:     xayabbbz
        !          3001: 
        !          3002: /(ab|cd)e/
        !          3003:     abcde
        !          3004: 
        !          3005: /[abhgefdc]ij/
        !          3006:     hij
        !          3007: 
        !          3008: /^(ab|cd)e/
        !          3009: 
        !          3010: /(abc|)ef/
        !          3011:     abcdef
        !          3012: 
        !          3013: /(a|b)c*d/
        !          3014:     abcd
        !          3015: 
        !          3016: /(ab|ab*)bc/
        !          3017:     abc
        !          3018: 
        !          3019: /a([bc]*)c*/
        !          3020:     abc
        !          3021: 
        !          3022: /a([bc]*)(c*d)/
        !          3023:     abcd
        !          3024: 
        !          3025: /a([bc]+)(c*d)/
        !          3026:     abcd
        !          3027: 
        !          3028: /a([bc]*)(c+d)/
        !          3029:     abcd
        !          3030: 
        !          3031: /a[bcd]*dcdcde/
        !          3032:     adcdcde
        !          3033: 
        !          3034: /a[bcd]+dcdcde/
        !          3035:     *** Failers
        !          3036:     abcde
        !          3037:     adcdcde
        !          3038: 
        !          3039: /(ab|a)b*c/
        !          3040:     abc
        !          3041: 
        !          3042: /((a)(b)c)(d)/
        !          3043:     abcd
        !          3044: 
        !          3045: /[a-zA-Z_][a-zA-Z0-9_]*/
        !          3046:     alpha
        !          3047: 
        !          3048: /^a(bc+|b[eh])g|.h$/
        !          3049:     abh
        !          3050: 
        !          3051: /(bc+d$|ef*g.|h?i(j|k))/
        !          3052:     effgz
        !          3053:     ij
        !          3054:     reffgz
        !          3055:     *** Failers
        !          3056:     effg
        !          3057:     bcdd
        !          3058: 
        !          3059: /((((((((((a))))))))))/
        !          3060:     a
        !          3061: 
        !          3062: /(((((((((a)))))))))/
        !          3063:     a
        !          3064: 
        !          3065: /multiple words of text/
        !          3066:     *** Failers
        !          3067:     aa
        !          3068:     uh-uh
        !          3069: 
        !          3070: /multiple words/
        !          3071:     multiple words, yeah
        !          3072: 
        !          3073: /(.*)c(.*)/
        !          3074:     abcde
        !          3075: 
        !          3076: /\((.*), (.*)\)/
        !          3077:     (a, b)
        !          3078: 
        !          3079: /[k]/
        !          3080: 
        !          3081: /abcd/
        !          3082:     abcd
        !          3083: 
        !          3084: /a(bc)d/
        !          3085:     abcd
        !          3086: 
        !          3087: /a[-]?c/
        !          3088:     ac
        !          3089: 
        !          3090: /abc/i
        !          3091:     ABC
        !          3092:     XABCY
        !          3093:     ABABC
        !          3094:     *** Failers
        !          3095:     aaxabxbaxbbx
        !          3096:     XBC
        !          3097:     AXC
        !          3098:     ABX
        !          3099: 
        !          3100: /ab*c/i
        !          3101:     ABC
        !          3102: 
        !          3103: /ab*bc/i
        !          3104:     ABC
        !          3105:     ABBC
        !          3106: 
        !          3107: /ab*?bc/i
        !          3108:     ABBBBC
        !          3109: 
        !          3110: /ab{0,}?bc/i
        !          3111:     ABBBBC
        !          3112: 
        !          3113: /ab+?bc/i
        !          3114:     ABBC
        !          3115: 
        !          3116: /ab+bc/i
        !          3117:     *** Failers
        !          3118:     ABC
        !          3119:     ABQ
        !          3120: 
        !          3121: /ab{1,}bc/i
        !          3122: 
        !          3123: /ab+bc/i
        !          3124:     ABBBBC
        !          3125: 
        !          3126: /ab{1,}?bc/i
        !          3127:     ABBBBC
        !          3128: 
        !          3129: /ab{1,3}?bc/i
        !          3130:     ABBBBC
        !          3131: 
        !          3132: /ab{3,4}?bc/i
        !          3133:     ABBBBC
        !          3134: 
        !          3135: /ab{4,5}?bc/i
        !          3136:     *** Failers
        !          3137:     ABQ
        !          3138:     ABBBBC
        !          3139: 
        !          3140: /ab??bc/i
        !          3141:     ABBC
        !          3142:     ABC
        !          3143: 
        !          3144: /ab{0,1}?bc/i
        !          3145:     ABC
        !          3146: 
        !          3147: /ab??bc/i
        !          3148: 
        !          3149: /ab??c/i
        !          3150:     ABC
        !          3151: 
        !          3152: /ab{0,1}?c/i
        !          3153:     ABC
        !          3154: 
        !          3155: /^abc$/i
        !          3156:     ABC
        !          3157:     *** Failers
        !          3158:     ABBBBC
        !          3159:     ABCC
        !          3160: 
        !          3161: /^abc/i
        !          3162:     ABCC
        !          3163: 
        !          3164: /^abc$/i
        !          3165: 
        !          3166: /abc$/i
        !          3167:     AABC
        !          3168: 
        !          3169: /^/i
        !          3170:     ABC
        !          3171: 
        !          3172: /$/i
        !          3173:     ABC
        !          3174: 
        !          3175: /a.c/i
        !          3176:     ABC
        !          3177:     AXC
        !          3178: 
        !          3179: /a.*?c/i
        !          3180:     AXYZC
        !          3181: 
        !          3182: /a.*c/i
        !          3183:     *** Failers
        !          3184:     AABC
        !          3185:     AXYZD
        !          3186: 
        !          3187: /a[bc]d/i
        !          3188:     ABD
        !          3189: 
        !          3190: /a[b-d]e/i
        !          3191:     ACE
        !          3192:     *** Failers
        !          3193:     ABC
        !          3194:     ABD
        !          3195: 
        !          3196: /a[b-d]/i
        !          3197:     AAC
        !          3198: 
        !          3199: /a[-b]/i
        !          3200:     A-
        !          3201: 
        !          3202: /a[b-]/i
        !          3203:     A-
        !          3204: 
        !          3205: /a]/i
        !          3206:     A]
        !          3207: 
        !          3208: /a[]]b/i
        !          3209:     A]B
        !          3210: 
        !          3211: /a[^bc]d/i
        !          3212:     AED
        !          3213: 
        !          3214: /a[^-b]c/i
        !          3215:     ADC
        !          3216:     *** Failers
        !          3217:     ABD
        !          3218:     A-C
        !          3219: 
        !          3220: /a[^]b]c/i
        !          3221:     ADC
        !          3222: 
        !          3223: /ab|cd/i
        !          3224:     ABC
        !          3225:     ABCD
        !          3226: 
        !          3227: /()ef/i
        !          3228:     DEF
        !          3229: 
        !          3230: /$b/i
        !          3231:     *** Failers
        !          3232:     A]C
        !          3233:     B
        !          3234: 
        !          3235: /a\(b/i
        !          3236:     A(B
        !          3237: 
        !          3238: /a\(*b/i
        !          3239:     AB
        !          3240:     A((B
        !          3241: 
        !          3242: /a\\b/i
        !          3243:     A\B
        !          3244: 
        !          3245: /((a))/i
        !          3246:     ABC
        !          3247: 
        !          3248: /(a)b(c)/i
        !          3249:     ABC
        !          3250: 
        !          3251: /a+b+c/i
        !          3252:     AABBABC
        !          3253: 
        !          3254: /a{1,}b{1,}c/i
        !          3255:     AABBABC
        !          3256: 
        !          3257: /a.+?c/i
        !          3258:     ABCABC
        !          3259: 
        !          3260: /a.*?c/i
        !          3261:     ABCABC
        !          3262: 
        !          3263: /a.{0,5}?c/i
        !          3264:     ABCABC
        !          3265: 
        !          3266: /(a+|b)*/i
        !          3267:     AB
        !          3268: 
        !          3269: /(a+|b){0,}/i
        !          3270:     AB
        !          3271: 
        !          3272: /(a+|b)+/i
        !          3273:     AB
        !          3274: 
        !          3275: /(a+|b){1,}/i
        !          3276:     AB
        !          3277: 
        !          3278: /(a+|b)?/i
        !          3279:     AB
        !          3280: 
        !          3281: /(a+|b){0,1}/i
        !          3282:     AB
        !          3283: 
        !          3284: /(a+|b){0,1}?/i
        !          3285:     AB
        !          3286: 
        !          3287: /[^ab]*/i
        !          3288:     CDE
        !          3289: 
        !          3290: /abc/i
        !          3291: 
        !          3292: /a*/i
        !          3293:     
        !          3294: 
        !          3295: /([abc])*d/i
        !          3296:     ABBBCD
        !          3297: 
        !          3298: /([abc])*bcd/i
        !          3299:     ABCD
        !          3300: 
        !          3301: /a|b|c|d|e/i
        !          3302:     E
        !          3303: 
        !          3304: /(a|b|c|d|e)f/i
        !          3305:     EF
        !          3306: 
        !          3307: /abcd*efg/i
        !          3308:     ABCDEFG
        !          3309: 
        !          3310: /ab*/i
        !          3311:     XABYABBBZ
        !          3312:     XAYABBBZ
        !          3313: 
        !          3314: /(ab|cd)e/i
        !          3315:     ABCDE
        !          3316: 
        !          3317: /[abhgefdc]ij/i
        !          3318:     HIJ
        !          3319: 
        !          3320: /^(ab|cd)e/i
        !          3321:     ABCDE
        !          3322: 
        !          3323: /(abc|)ef/i
        !          3324:     ABCDEF
        !          3325: 
        !          3326: /(a|b)c*d/i
        !          3327:     ABCD
        !          3328: 
        !          3329: /(ab|ab*)bc/i
        !          3330:     ABC
        !          3331: 
        !          3332: /a([bc]*)c*/i
        !          3333:     ABC
        !          3334: 
        !          3335: /a([bc]*)(c*d)/i
        !          3336:     ABCD
        !          3337: 
        !          3338: /a([bc]+)(c*d)/i
        !          3339:     ABCD
        !          3340: 
        !          3341: /a([bc]*)(c+d)/i
        !          3342:     ABCD
        !          3343: 
        !          3344: /a[bcd]*dcdcde/i
        !          3345:     ADCDCDE
        !          3346: 
        !          3347: /a[bcd]+dcdcde/i
        !          3348: 
        !          3349: /(ab|a)b*c/i
        !          3350:     ABC
        !          3351: 
        !          3352: /((a)(b)c)(d)/i
        !          3353:     ABCD
        !          3354: 
        !          3355: /[a-zA-Z_][a-zA-Z0-9_]*/i
        !          3356:     ALPHA
        !          3357: 
        !          3358: /^a(bc+|b[eh])g|.h$/i
        !          3359:     ABH
        !          3360: 
        !          3361: /(bc+d$|ef*g.|h?i(j|k))/i
        !          3362:     EFFGZ
        !          3363:     IJ
        !          3364:     REFFGZ
        !          3365:     *** Failers
        !          3366:     ADCDCDE
        !          3367:     EFFG
        !          3368:     BCDD
        !          3369: 
        !          3370: /((((((((((a))))))))))/i
        !          3371:     A
        !          3372: 
        !          3373: /(((((((((a)))))))))/i
        !          3374:     A
        !          3375: 
        !          3376: /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i
        !          3377:     A
        !          3378: 
        !          3379: /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i
        !          3380:     C
        !          3381: 
        !          3382: /multiple words of text/i
        !          3383:     *** Failers
        !          3384:     AA
        !          3385:     UH-UH
        !          3386: 
        !          3387: /multiple words/i
        !          3388:     MULTIPLE WORDS, YEAH
        !          3389: 
        !          3390: /(.*)c(.*)/i
        !          3391:     ABCDE
        !          3392: 
        !          3393: /\((.*), (.*)\)/i
        !          3394:     (A, B)
        !          3395: 
        !          3396: /[k]/i
        !          3397: 
        !          3398: /abcd/i
        !          3399:     ABCD
        !          3400: 
        !          3401: /a(bc)d/i
        !          3402:     ABCD
        !          3403: 
        !          3404: /a[-]?c/i
        !          3405:     AC
        !          3406: 
        !          3407: /a(?!b)./
        !          3408:     abad
        !          3409: 
        !          3410: /a(?=d)./
        !          3411:     abad
        !          3412: 
        !          3413: /a(?=c|d)./
        !          3414:     abad
        !          3415: 
        !          3416: /a(?:b|c|d)(.)/
        !          3417:     ace
        !          3418: 
        !          3419: /a(?:b|c|d)*(.)/
        !          3420:     ace
        !          3421: 
        !          3422: /a(?:b|c|d)+?(.)/
        !          3423:     ace
        !          3424:     acdbcdbe
        !          3425: 
        !          3426: /a(?:b|c|d)+(.)/
        !          3427:     acdbcdbe
        !          3428: 
        !          3429: /a(?:b|c|d){2}(.)/
        !          3430:     acdbcdbe
        !          3431: 
        !          3432: /a(?:b|c|d){4,5}(.)/
        !          3433:     acdbcdbe
        !          3434: 
        !          3435: /a(?:b|c|d){4,5}?(.)/
        !          3436:     acdbcdbe
        !          3437: 
        !          3438: /((foo)|(bar))*/
        !          3439:     foobar
        !          3440: 
        !          3441: /a(?:b|c|d){6,7}(.)/
        !          3442:     acdbcdbe
1.1       misho    3443: 
1.1.1.2 ! misho    3444: /a(?:b|c|d){6,7}?(.)/
        !          3445:     acdbcdbe
        !          3446: 
        !          3447: /a(?:b|c|d){5,6}(.)/
        !          3448:     acdbcdbe
        !          3449: 
        !          3450: /a(?:b|c|d){5,6}?(.)/
        !          3451:     acdbcdbe
        !          3452: 
        !          3453: /a(?:b|c|d){5,7}(.)/
        !          3454:     acdbcdbe
        !          3455: 
        !          3456: /a(?:b|c|d){5,7}?(.)/
        !          3457:     acdbcdbe
        !          3458: 
        !          3459: /a(?:b|(c|e){1,2}?|d)+?(.)/
        !          3460:     ace
        !          3461: 
        !          3462: /^(.+)?B/
        !          3463:     AB
        !          3464: 
        !          3465: /^([^a-z])|(\^)$/
        !          3466:     .
        !          3467: 
        !          3468: /^[<>]&/
        !          3469:     <&OUT
        !          3470: 
        !          3471: /(?:(f)(o)(o)|(b)(a)(r))*/
        !          3472:     foobar
        !          3473: 
        !          3474: /(?<=a)b/
1.1       misho    3475:     ab
1.1.1.2 ! misho    3476:     *** Failers
        !          3477:     cb
        !          3478:     b
        !          3479: 
        !          3480: /(?<!c)b/
1.1       misho    3481:     ab
1.1.1.2 ! misho    3482:     b
        !          3483:     b
1.1       misho    3484: 
1.1.1.2 ! misho    3485: /(?:..)*a/
        !          3486:     aba
1.1       misho    3487: 
1.1.1.2 ! misho    3488: /(?:..)*?a/
        !          3489:     aba
1.1       misho    3490: 
1.1.1.2 ! misho    3491: /^(){3,5}/
        !          3492:     abc
1.1       misho    3493: 
1.1.1.2 ! misho    3494: /^(a+)*ax/
        !          3495:     aax
1.1       misho    3496: 
1.1.1.2 ! misho    3497: /^((a|b)+)*ax/
        !          3498:     aax
1.1       misho    3499: 
1.1.1.2 ! misho    3500: /^((a|bc)+)*ax/
        !          3501:     aax
1.1       misho    3502: 
1.1.1.2 ! misho    3503: /(a|x)*ab/
        !          3504:     cab
1.1       misho    3505: 
1.1.1.2 ! misho    3506: /(a)*ab/
        !          3507:     cab
1.1       misho    3508: 
1.1.1.2 ! misho    3509: /(?:(?i)a)b/
        !          3510:     ab
1.1       misho    3511: 
1.1.1.2 ! misho    3512: /((?i)a)b/
        !          3513:     ab
1.1       misho    3514: 
1.1.1.2 ! misho    3515: /(?:(?i)a)b/
        !          3516:     Ab
1.1       misho    3517: 
1.1.1.2 ! misho    3518: /((?i)a)b/
        !          3519:     Ab
1.1       misho    3520: 
1.1.1.2 ! misho    3521: /(?:(?i)a)b/
1.1       misho    3522:     *** Failers
1.1.1.2 ! misho    3523:     cb
        !          3524:     aB
1.1       misho    3525: 
1.1.1.2 ! misho    3526: /((?i)a)b/
1.1       misho    3527: 
1.1.1.2 ! misho    3528: /(?i:a)b/
        !          3529:     ab
1.1       misho    3530: 
1.1.1.2 ! misho    3531: /((?i:a))b/
        !          3532:     ab
1.1       misho    3533: 
1.1.1.2 ! misho    3534: /(?i:a)b/
        !          3535:     Ab
1.1       misho    3536: 
1.1.1.2 ! misho    3537: /((?i:a))b/
        !          3538:     Ab
        !          3539: 
        !          3540: /(?i:a)b/
1.1       misho    3541:     *** Failers
1.1.1.2 ! misho    3542:     aB
        !          3543:     aB
1.1       misho    3544: 
1.1.1.2 ! misho    3545: /((?i:a))b/
1.1       misho    3546: 
1.1.1.2 ! misho    3547: /(?:(?-i)a)b/i
        !          3548:     ab
1.1       misho    3549: 
1.1.1.2 ! misho    3550: /((?-i)a)b/i
        !          3551:     ab
1.1       misho    3552: 
1.1.1.2 ! misho    3553: /(?:(?-i)a)b/i
        !          3554:     aB
1.1       misho    3555: 
1.1.1.2 ! misho    3556: /((?-i)a)b/i
        !          3557:     aB
        !          3558: 
        !          3559: /(?:(?-i)a)b/i
1.1       misho    3560:     *** Failers
1.1.1.2 ! misho    3561:     aB
        !          3562:     Ab
1.1       misho    3563: 
1.1.1.2 ! misho    3564: /((?-i)a)b/i
1.1       misho    3565: 
1.1.1.2 ! misho    3566: /(?:(?-i)a)b/i
        !          3567:     aB
1.1       misho    3568: 
1.1.1.2 ! misho    3569: /((?-i)a)b/i
        !          3570:     aB
1.1       misho    3571: 
1.1.1.2 ! misho    3572: /(?:(?-i)a)b/i
        !          3573:     *** Failers
        !          3574:     Ab
        !          3575:     AB
1.1       misho    3576: 
1.1.1.2 ! misho    3577: /((?-i)a)b/i
1.1       misho    3578: 
1.1.1.2 ! misho    3579: /(?-i:a)b/i
        !          3580:     ab
1.1       misho    3581: 
1.1.1.2 ! misho    3582: /((?-i:a))b/i
        !          3583:     ab
1.1       misho    3584: 
1.1.1.2 ! misho    3585: /(?-i:a)b/i
        !          3586:     aB
1.1       misho    3587: 
1.1.1.2 ! misho    3588: /((?-i:a))b/i
        !          3589:     aB
1.1       misho    3590: 
1.1.1.2 ! misho    3591: /(?-i:a)b/i
        !          3592:     *** Failers
        !          3593:     AB
        !          3594:     Ab
1.1       misho    3595: 
1.1.1.2 ! misho    3596: /((?-i:a))b/i
1.1       misho    3597: 
1.1.1.2 ! misho    3598: /(?-i:a)b/i
        !          3599:     aB
1.1       misho    3600: 
1.1.1.2 ! misho    3601: /((?-i:a))b/i
        !          3602:     aB
1.1       misho    3603: 
1.1.1.2 ! misho    3604: /(?-i:a)b/i
        !          3605:     *** Failers
        !          3606:     Ab
        !          3607:     AB
1.1       misho    3608: 
1.1.1.2 ! misho    3609: /((?-i:a))b/i
1.1       misho    3610: 
1.1.1.2 ! misho    3611: /((?-i:a.))b/i
1.1       misho    3612:     *** Failers
1.1.1.2 ! misho    3613:     AB
        !          3614:     a\nB
1.1       misho    3615: 
1.1.1.2 ! misho    3616: /((?s-i:a.))b/i
        !          3617:     a\nB
1.1       misho    3618: 
1.1.1.2 ! misho    3619: /(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/
        !          3620:     cabbbb
1.1       misho    3621: 
1.1.1.2 ! misho    3622: /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/
        !          3623:     caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
1.1       misho    3624: 
1.1.1.2 ! misho    3625: /foo\w*\d{4}baz/
        !          3626:     foobar1234baz
1.1       misho    3627: 
1.1.1.2 ! misho    3628: /x(~~)*(?:(?:F)?)?/
        !          3629:     x~~
1.1       misho    3630: 
1.1.1.2 ! misho    3631: /^a(?#xxx){3}c/
        !          3632:     aaac
1.1       misho    3633: 
1.1.1.2 ! misho    3634: /^a (?#xxx) (?#yyy) {3}c/x
        !          3635:     aaac
1.1       misho    3636: 
1.1.1.2 ! misho    3637: /(?<![cd])b/
1.1       misho    3638:     *** Failers
1.1.1.2 ! misho    3639:     B\nB
        !          3640:     dbcb
1.1       misho    3641: 
1.1.1.2 ! misho    3642: /(?<![cd])[ab]/
        !          3643:     dbaacb
1.1       misho    3644: 
1.1.1.2 ! misho    3645: /(?<!(c|d))b/
1.1       misho    3646: 
1.1.1.2 ! misho    3647: /(?<!(c|d))[ab]/
        !          3648:     dbaacb
1.1       misho    3649: 
1.1.1.2 ! misho    3650: /(?<!cd)[ab]/
        !          3651:     cdaccb
1.1       misho    3652: 
1.1.1.2 ! misho    3653: /^(?:a?b?)*$/
1.1       misho    3654:     *** Failers
1.1.1.2 ! misho    3655:     dbcb
        !          3656:     a--
1.1       misho    3657: 
1.1.1.2 ! misho    3658: /((?s)^a(.))((?m)^b$)/
        !          3659:     a\nb\nc\n
        !          3660: 
        !          3661: /((?m)^b$)/
        !          3662:     a\nb\nc\n
        !          3663: 
        !          3664: /(?m)^b/
        !          3665:     a\nb\n
        !          3666: 
        !          3667: /(?m)^(b)/
        !          3668:     a\nb\n
        !          3669: 
        !          3670: /((?m)^b)/
        !          3671:     a\nb\n
        !          3672: 
        !          3673: /\n((?m)^b)/
        !          3674:     a\nb\n
        !          3675: 
        !          3676: /((?s).)c(?!.)/
        !          3677:     a\nb\nc\n
        !          3678:     a\nb\nc\n
        !          3679: 
        !          3680: /((?s)b.)c(?!.)/
        !          3681:     a\nb\nc\n
        !          3682:     a\nb\nc\n
1.1       misho    3683: 
1.1.1.2 ! misho    3684: /^b/
        !          3685: 
        !          3686: /()^b/
1.1       misho    3687:     *** Failers
1.1.1.2 ! misho    3688:     a\nb\nc\n
        !          3689:     a\nb\nc\n
        !          3690: 
        !          3691: /((?m)^b)/
        !          3692:     a\nb\nc\n
        !          3693: 
        !          3694: /(?(?!a)a|b)/
        !          3695: 
        !          3696: /(?(?!a)b|a)/
        !          3697:     a
1.1       misho    3698: 
1.1.1.2 ! misho    3699: /(?(?=a)b|a)/
1.1       misho    3700:     *** Failers
1.1.1.2 ! misho    3701:     a
        !          3702:     a
        !          3703: 
        !          3704: /(?(?=a)a|b)/
        !          3705:     a
        !          3706: 
        !          3707: /(\w+:)+/
        !          3708:     one:
        !          3709: 
        !          3710: /$(?<=^(a))/
        !          3711:     a
        !          3712: 
        !          3713: /([\w:]+::)?(\w+)$/
        !          3714:     abcd
        !          3715:     xy:z:::abcd
        !          3716: 
        !          3717: /^[^bcd]*(c+)/
        !          3718:     aexycd
1.1       misho    3719: 
1.1.1.2 ! misho    3720: /(a*)b+/
        !          3721:     caab
        !          3722: 
        !          3723: /([\w:]+::)?(\w+)$/
        !          3724:     abcd
        !          3725:     xy:z:::abcd
1.1       misho    3726:     *** Failers
1.1.1.2 ! misho    3727:     abcd:
        !          3728:     abcd:
1.1       misho    3729: 
1.1.1.2 ! misho    3730: /^[^bcd]*(c+)/
        !          3731:     aexycd
1.1       misho    3732: 
1.1.1.2 ! misho    3733: /(>a+)ab/
1.1       misho    3734: 
1.1.1.2 ! misho    3735: /(?>a+)b/
        !          3736:     aaab
1.1       misho    3737: 
1.1.1.2 ! misho    3738: /([[:]+)/
        !          3739:     a:[b]:
1.1       misho    3740: 
1.1.1.2 ! misho    3741: /([[=]+)/
        !          3742:     a=[b]=
1.1       misho    3743: 
1.1.1.2 ! misho    3744: /([[.]+)/
        !          3745:     a.[b].
1.1       misho    3746: 
1.1.1.2 ! misho    3747: /((?>a+)b)/
        !          3748:     aaab
1.1       misho    3749: 
1.1.1.2 ! misho    3750: /(?>(a+))b/
        !          3751:     aaab
1.1       misho    3752: 
1.1.1.2 ! misho    3753: /((?>[^()]+)|\([^()]*\))+/
        !          3754:     ((abc(ade)ufh()()x
        !          3755: 
        !          3756: /a\Z/
        !          3757:     *** Failers
        !          3758:     aaab
        !          3759:     a\nb\n
1.1       misho    3760: 
1.1.1.2 ! misho    3761: /b\Z/
        !          3762:     a\nb\n
1.1       misho    3763: 
1.1.1.2 ! misho    3764: /b\z/
1.1       misho    3765: 
1.1.1.2 ! misho    3766: /b\Z/
        !          3767:     a\nb
1.1       misho    3768: 
1.1.1.2 ! misho    3769: /b\z/
        !          3770:     a\nb
        !          3771:     *** Failers
        !          3772:     
        !          3773: /(?>.*)(?<=(abcd|wxyz))/
        !          3774:     alphabetabcd
        !          3775:     endingwxyz
1.1       misho    3776:     *** Failers
1.1.1.2 ! misho    3777:     a rather long string that doesn't end with one of them
1.1       misho    3778: 
1.1.1.2 ! misho    3779: /word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/
        !          3780:     word cat dog elephant mussel cow horse canary baboon snake shark otherword
        !          3781:     word cat dog elephant mussel cow horse canary baboon snake shark
        !          3782:   
        !          3783: /word (?>[a-zA-Z0-9]+ ){0,30}otherword/
        !          3784:     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
        !          3785: 
        !          3786: /(?<=\d{3}(?!999))foo/
        !          3787:     999foo
        !          3788:     123999foo 
        !          3789:     *** Failers
        !          3790:     123abcfoo
        !          3791:     
        !          3792: /(?<=(?!...999)\d{3})foo/
        !          3793:     999foo
        !          3794:     123999foo 
1.1       misho    3795:     *** Failers
1.1.1.2 ! misho    3796:     123abcfoo
1.1       misho    3797: 
1.1.1.2 ! misho    3798: /(?<=\d{3}(?!999)...)foo/
        !          3799:     123abcfoo
        !          3800:     123456foo 
1.1       misho    3801:     *** Failers
1.1.1.2 ! misho    3802:     123999foo  
        !          3803:     
        !          3804: /(?<=\d{3}...)(?<!999)foo/
        !          3805:     123abcfoo   
        !          3806:     123456foo 
        !          3807:     *** Failers
        !          3808:     123999foo  
        !          3809: 
        !          3810: /((Z)+|A)*/
        !          3811:     ZABCDEFG
        !          3812: 
        !          3813: /(Z()|A)*/
        !          3814:     ZABCDEFG
        !          3815: 
        !          3816: /(Z(())|A)*/
        !          3817:     ZABCDEFG
        !          3818: 
        !          3819: /((?>Z)+|A)*/
        !          3820:     ZABCDEFG
        !          3821: 
        !          3822: /((?>)+|A)*/
        !          3823:     ZABCDEFG
        !          3824: 
        !          3825: /a*/g
        !          3826:     abbab
1.1       misho    3827: 
1.1.1.2 ! misho    3828: /^[a-\d]/
        !          3829:     abcde
        !          3830:     -things
        !          3831:     0digit
1.1       misho    3832:     *** Failers
1.1.1.2 ! misho    3833:     bcdef    
1.1       misho    3834: 
1.1.1.2 ! misho    3835: /^[\d-a]/
        !          3836:     abcde
        !          3837:     -things
        !          3838:     0digit
1.1       misho    3839:     *** Failers
1.1.1.2 ! misho    3840:     bcdef    
        !          3841:     
        !          3842: /[[:space:]]+/
        !          3843:     > \x09\x0a\x0c\x0d\x0b<
        !          3844:      
        !          3845: /[[:blank:]]+/
        !          3846:     > \x09\x0a\x0c\x0d\x0b<
        !          3847:      
        !          3848: /[\s]+/
        !          3849:     > \x09\x0a\x0c\x0d\x0b<
        !          3850:      
        !          3851: /\s+/
        !          3852:     > \x09\x0a\x0c\x0d\x0b<
        !          3853:      
        !          3854: /ab/x
        !          3855:     ab
        !          3856: 
        !          3857: /(?!\A)x/m
        !          3858:   a\nxb\n
        !          3859: 
        !          3860: /(?!^)x/m
        !          3861:   a\nxb\n
1.1       misho    3862: 
1.1.1.2 ! misho    3863: /abc\Qabc\Eabc/
        !          3864:     abcabcabc
        !          3865:     
        !          3866: /abc\Q(*+|\Eabc/
        !          3867:     abc(*+|abc 
        !          3868: 
        !          3869: /   abc\Q abc\Eabc/x
        !          3870:     abc abcabc
1.1       misho    3871:     *** Failers
1.1.1.2 ! misho    3872:     abcabcabc  
        !          3873:     
        !          3874: /abc#comment
        !          3875:     \Q#not comment
        !          3876:     literal\E/x
        !          3877:     abc#not comment\n    literal     
        !          3878: 
        !          3879: /abc#comment
        !          3880:     \Q#not comment
        !          3881:     literal/x
        !          3882:     abc#not comment\n    literal     
        !          3883: 
        !          3884: /abc#comment
        !          3885:     \Q#not comment
        !          3886:     literal\E #more comment
        !          3887:     /x
        !          3888:     abc#not comment\n    literal     
        !          3889: 
        !          3890: /abc#comment
        !          3891:     \Q#not comment
        !          3892:     literal\E #more comment/x
        !          3893:     abc#not comment\n    literal     
1.1       misho    3894: 
1.1.1.2 ! misho    3895: /\Qabc\$xyz\E/
        !          3896:     abc\\\$xyz
        !          3897: 
        !          3898: /\Qabc\E\$\Qxyz\E/
        !          3899:     abc\$xyz
        !          3900: 
        !          3901: /\Gabc/
        !          3902:     abc
1.1       misho    3903:     *** Failers
1.1.1.2 ! misho    3904:     xyzabc  
1.1       misho    3905: 
1.1.1.2 ! misho    3906: /\Gabc./g
        !          3907:     abc1abc2xyzabc3
1.1       misho    3908: 
1.1.1.2 ! misho    3909: /abc./g
        !          3910:     abc1abc2xyzabc3 
1.1       misho    3911: 
1.1.1.2 ! misho    3912: /a(?x: b c )d/
        !          3913:     XabcdY
        !          3914:     *** Failers 
        !          3915:     Xa b c d Y 
1.1       misho    3916: 
1.1.1.2 ! misho    3917: /((?x)x y z | a b c)/
        !          3918:     XabcY
        !          3919:     AxyzB 
1.1       misho    3920: 
1.1.1.2 ! misho    3921: /(?i)AB(?-i)C/
        !          3922:     XabCY
        !          3923:     *** Failers
        !          3924:     XabcY  
1.1       misho    3925: 
1.1.1.2 ! misho    3926: /((?i)AB(?-i)C|D)E/
        !          3927:     abCE
        !          3928:     DE
        !          3929:     *** Failers
        !          3930:     abcE
        !          3931:     abCe  
        !          3932:     dE
        !          3933:     De    
1.1       misho    3934: 
1.1.1.2 ! misho    3935: /[z\Qa-d]\E]/
        !          3936:     z
        !          3937:     a
        !          3938:     -
        !          3939:     d
        !          3940:     ] 
        !          3941:     *** Failers
        !          3942:     b     
1.1       misho    3943: 
1.1.1.2 ! misho    3944: /[\z\C]/
        !          3945:     z
        !          3946:     C 
        !          3947:     
        !          3948: /\M/
        !          3949:     M 
        !          3950:     
        !          3951: /(a+)*b/
        !          3952:     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
        !          3953:     
        !          3954: /(?i)reg(?:ul(?:[a]|ae)r|ex)/
        !          3955:     REGular
        !          3956:     regulaer
        !          3957:     Regex  
        !          3958:     regulr 
        !          3959: 
        !          3960: /[--]+/
        !          3961:     
        !          3962:     
        !          3963:     
        !          3964:     
        !          3965: 
        !          3966: /(?<=Z)X./
        !          3967:     \x84XAZXB
        !          3968: 
        !          3969: /^(?(2)a|(1)(2))+$/
        !          3970:     123a
        !          3971: 
        !          3972: /(?<=a|bbbb)c/
        !          3973:     ac
        !          3974:     bbbbc
        !          3975: 
        !          3976: /abc/SS>testsavedregex
        !          3977: <testsavedregex
        !          3978:     abc
        !          3979:     *** Failers
        !          3980:     bca
        !          3981:     
        !          3982: /abc/FSS>testsavedregex
        !          3983: <testsavedregex
        !          3984:     abc
        !          3985:     *** Failers
        !          3986:     bca
        !          3987: 
        !          3988: /(a|b)/S>testsavedregex
        !          3989: <testsavedregex
        !          3990:     abc
        !          3991:     *** Failers
        !          3992:     def  
        !          3993:     
        !          3994: /(a|b)/SF>testsavedregex
        !          3995: <testsavedregex
        !          3996:     abc
        !          3997:     *** Failers
        !          3998:     def  
        !          3999:     
        !          4000: /line\nbreak/
        !          4001:     this is a line\nbreak
        !          4002:     line one\nthis is a line\nbreak in the second line 
        !          4003: 
        !          4004: /line\nbreak/f
        !          4005:     this is a line\nbreak
        !          4006:     ** Failers 
        !          4007:     line one\nthis is a line\nbreak in the second line 
        !          4008: 
        !          4009: /line\nbreak/mf
        !          4010:     this is a line\nbreak
        !          4011:     ** Failers 
        !          4012:     line one\nthis is a line\nbreak in the second line 
        !          4013: 
        !          4014: /1234/
        !          4015:     123\P
        !          4016:     a4\P\R
        !          4017: 
        !          4018: /1234/
        !          4019:     123\P
        !          4020:     4\P\R
        !          4021: 
        !          4022: /^/mg
        !          4023:     a\nb\nc\n
        !          4024:     \ 
        !          4025:     
        !          4026: /(?<=C\n)^/mg
        !          4027:     A\nC\nC\n 
1.1       misho    4028: 
1.1.1.2 ! misho    4029: /(?s)A?B/
        !          4030:     AB
        !          4031:     aB  
        !          4032: 
        !          4033: /(?s)A*B/
        !          4034:     AB
        !          4035:     aB  
        !          4036: 
        !          4037: /(?m)A?B/
        !          4038:     AB
        !          4039:     aB  
        !          4040: 
        !          4041: /(?m)A*B/
        !          4042:     AB
        !          4043:     aB  
        !          4044: 
        !          4045: /Content-Type\x3A[^\r\n]{6,}/
        !          4046:     Content-Type:xxxxxyyy 
        !          4047: 
        !          4048: /Content-Type\x3A[^\r\n]{6,}z/
        !          4049:     Content-Type:xxxxxyyyz
        !          4050: 
        !          4051: /Content-Type\x3A[^a]{6,}/
        !          4052:     Content-Type:xxxyyy 
        !          4053: 
        !          4054: /Content-Type\x3A[^a]{6,}z/
        !          4055:     Content-Type:xxxyyyz
        !          4056: 
        !          4057: /^abc/m
        !          4058:     xyz\nabc
        !          4059:     xyz\nabc\<lf>
        !          4060:     xyz\r\nabc\<lf>
        !          4061:     xyz\rabc\<cr>
        !          4062:     xyz\r\nabc\<crlf>
        !          4063:     ** Failers 
        !          4064:     xyz\nabc\<cr>
        !          4065:     xyz\r\nabc\<cr>
        !          4066:     xyz\nabc\<crlf>
        !          4067:     xyz\rabc\<crlf>
        !          4068:     xyz\rabc\<lf>
        !          4069:     
        !          4070: /abc$/m<lf>
        !          4071:     xyzabc
        !          4072:     xyzabc\n 
        !          4073:     xyzabc\npqr 
        !          4074:     xyzabc\r\<cr> 
        !          4075:     xyzabc\rpqr\<cr> 
        !          4076:     xyzabc\r\n\<crlf> 
        !          4077:     xyzabc\r\npqr\<crlf> 
        !          4078:     ** Failers
        !          4079:     xyzabc\r 
        !          4080:     xyzabc\rpqr 
        !          4081:     xyzabc\r\n 
        !          4082:     xyzabc\r\npqr 
        !          4083:     
        !          4084: /^abc/m<cr>
        !          4085:     xyz\rabcdef
        !          4086:     xyz\nabcdef\<lf>
        !          4087:     ** Failers  
        !          4088:     xyz\nabcdef
        !          4089:        
        !          4090: /^abc/m<lf>
        !          4091:     xyz\nabcdef
        !          4092:     xyz\rabcdef\<cr>
        !          4093:     ** Failers  
        !          4094:     xyz\rabcdef
        !          4095:        
        !          4096: /^abc/m<crlf>
        !          4097:     xyz\r\nabcdef
        !          4098:     xyz\rabcdef\<cr>
        !          4099:     ** Failers  
        !          4100:     xyz\rabcdef
        !          4101:     
        !          4102: /.*/<lf>
        !          4103:     abc\ndef
        !          4104:     abc\rdef
        !          4105:     abc\r\ndef
        !          4106:     \<cr>abc\ndef
        !          4107:     \<cr>abc\rdef
        !          4108:     \<cr>abc\r\ndef
        !          4109:     \<crlf>abc\ndef
        !          4110:     \<crlf>abc\rdef
        !          4111:     \<crlf>abc\r\ndef
        !          4112: 
        !          4113: /\w+(.)(.)?def/s
        !          4114:     abc\ndef
        !          4115:     abc\rdef
        !          4116:     abc\r\ndef
        !          4117: 
        !          4118: /^\w+=.*(\\\n.*)*/
        !          4119:     abc=xyz\\\npqr
        !          4120: 
        !          4121: /^(a()*)*/
        !          4122:     aaaa
        !          4123: 
        !          4124: /^(?:a(?:(?:))*)*/
        !          4125:     aaaa
        !          4126: 
        !          4127: /^(a()+)+/
        !          4128:     aaaa
        !          4129: 
        !          4130: /^(?:a(?:(?:))+)+/
        !          4131:     aaaa
        !          4132: 
        !          4133: /(a|)*\d/
        !          4134:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
        !          4135:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
        !          4136: 
        !          4137: /(?>a|)*\d/
        !          4138:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
        !          4139:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
        !          4140: 
        !          4141: /(?:a|)*\d/
        !          4142:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
        !          4143:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
1.1       misho    4144: 
1.1.1.2 ! misho    4145: /^a.b/<lf>
        !          4146:     a\rb
        !          4147:     a\nb\<cr> 
        !          4148:     ** Failers
        !          4149:     a\nb
        !          4150:     a\nb\<any>
        !          4151:     a\rb\<cr>   
        !          4152:     a\rb\<any>   
1.1       misho    4153: 
1.1.1.2 ! misho    4154: /^abc./mgx<any>
        !          4155:     abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x85abc7 JUNK
1.1       misho    4156: 
1.1.1.2 ! misho    4157: /abc.$/mgx<any>
        !          4158:     abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc9
1.1       misho    4159: 
1.1.1.2 ! misho    4160: /^a\Rb/<bsr_unicode>
1.1       misho    4161:     a\nb
                   4162:     a\rb
                   4163:     a\r\nb
                   4164:     a\x0bb
                   4165:     a\x0cb
1.1.1.2 ! misho    4166:     a\x85b   
1.1       misho    4167:     ** Failers
                   4168:     a\n\rb    
                   4169: 
1.1.1.2 ! misho    4170: /^a\R*b/<bsr_unicode>
1.1       misho    4171:     ab
                   4172:     a\nb
                   4173:     a\rb
                   4174:     a\r\nb
                   4175:     a\x0bb
1.1.1.2 ! misho    4176:     a\x0cb
        !          4177:     a\x85b   
1.1       misho    4178:     a\n\rb    
1.1.1.2 ! misho    4179:     a\n\r\x85\x0cb 
1.1       misho    4180: 
1.1.1.2 ! misho    4181: /^a\R+b/<bsr_unicode>
1.1       misho    4182:     a\nb
                   4183:     a\rb
                   4184:     a\r\nb
                   4185:     a\x0bb
1.1.1.2 ! misho    4186:     a\x0cb
        !          4187:     a\x85b   
1.1       misho    4188:     a\n\rb    
1.1.1.2 ! misho    4189:     a\n\r\x85\x0cb 
1.1       misho    4190:     ** Failers
                   4191:     ab  
1.1.1.2 ! misho    4192:     
        !          4193: /^a\R{1,3}b/<bsr_unicode>
1.1       misho    4194:     a\nb
                   4195:     a\n\rb
1.1.1.2 ! misho    4196:     a\n\r\x85b
1.1       misho    4197:     a\r\n\r\nb 
                   4198:     a\r\n\r\n\r\nb 
                   4199:     a\n\r\n\rb
                   4200:     a\n\n\r\nb 
                   4201:     ** Failers
                   4202:     a\n\n\n\rb
                   4203:     a\r
                   4204: 
1.1.1.2 ! misho    4205: /^a[\R]b/<bsr_unicode>
        !          4206:     aRb
        !          4207:     ** Failers
        !          4208:     a\nb  
        !          4209: 
        !          4210: /.+foo/
        !          4211:     afoo
        !          4212:     ** Failers 
        !          4213:     \r\nfoo 
        !          4214:     \nfoo 
        !          4215: 
        !          4216: /.+foo/<crlf>
        !          4217:     afoo
        !          4218:     \nfoo 
        !          4219:     ** Failers 
        !          4220:     \r\nfoo 
        !          4221: 
        !          4222: /.+foo/<any>
        !          4223:     afoo
        !          4224:     ** Failers 
        !          4225:     \nfoo 
        !          4226:     \r\nfoo 
        !          4227: 
        !          4228: /.+foo/s
        !          4229:     afoo
        !          4230:     \r\nfoo 
        !          4231:     \nfoo 
        !          4232: 
        !          4233: /^$/mg<any>
        !          4234:     abc\r\rxyz
        !          4235:     abc\n\rxyz  
        !          4236:     ** Failers 
        !          4237:     abc\r\nxyz
1.1       misho    4238: 
1.1.1.2 ! misho    4239: /^X/m
        !          4240:     XABC
        !          4241:     ** Failers 
        !          4242:     XABC\B
1.1       misho    4243: 
1.1.1.2 ! misho    4244: /(?m)^$/<any>g+
        !          4245:     abc\r\n\r\n
1.1       misho    4246: 
1.1.1.2 ! misho    4247: /(?m)^$|^\r\n/<any>g+ 
        !          4248:     abc\r\n\r\n
        !          4249:     
        !          4250: /(?m)$/<any>g+ 
        !          4251:     abc\r\n\r\n
1.1       misho    4252: 
1.1.1.2 ! misho    4253: /(?|(abc)|(xyz))/
        !          4254:    >abc<
        !          4255:    >xyz< 
        !          4256: 
        !          4257: /(x)(?|(abc)|(xyz))(x)/
        !          4258:     xabcx
        !          4259:     xxyzx 
        !          4260: 
        !          4261: /(x)(?|(abc)(pqr)|(xyz))(x)/
        !          4262:     xabcpqrx
        !          4263:     xxyzx 
        !          4264: 
        !          4265: /(?|(abc)|(xyz))(?1)/
        !          4266:     abcabc
        !          4267:     xyzabc 
        !          4268:     ** Failers 
        !          4269:     xyzxyz 
        !          4270:  
        !          4271: /\H\h\V\v/
1.1       misho    4272:     X X\x0a
                   4273:     X\x09X\x0b
                   4274:     ** Failers
1.1.1.2 ! misho    4275:     \xa0 X\x0a   
1.1       misho    4276:     
1.1.1.2 ! misho    4277: /\H*\h+\V?\v{3,4}/ 
        !          4278:     \x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a
        !          4279:     \x09\x20\xa0\x0a\x0b\x0c\x0d\x0a
        !          4280:     \x09\x20\xa0\x0a\x0b\x0c
1.1       misho    4281:     ** Failers 
1.1.1.2 ! misho    4282:     \x09\x20\xa0\x0a\x0b
1.1       misho    4283:      
1.1.1.2 ! misho    4284: /\H{3,4}/
        !          4285:     XY  ABCDE
        !          4286:     XY  PQR ST 
        !          4287:     
        !          4288: /.\h{3,4}./
        !          4289:     XY  AB    PQRS
        !          4290: 
        !          4291: /\h*X\h?\H+Y\H?Z/
        !          4292:     >XNNNYZ
        !          4293:     >  X NYQZ
        !          4294:     ** Failers
        !          4295:     >XYZ   
        !          4296:     >  X NY Z
        !          4297: 
        !          4298: /\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/
        !          4299:     >XY\x0aZ\x0aA\x0bNN\x0c
        !          4300:     >\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
        !          4301: 
        !          4302: /.+A/<crlf>
        !          4303:     \r\nA
        !          4304:     
        !          4305: /\nA/<crlf>
        !          4306:     \r\nA 
        !          4307: 
        !          4308: /[\r\n]A/<crlf>
        !          4309:     \r\nA 
        !          4310: 
        !          4311: /(\r|\n)A/<crlf>
        !          4312:     \r\nA 
        !          4313: 
        !          4314: /a\Rb/I<bsr_anycrlf>
1.1       misho    4315:     a\rb
                   4316:     a\nb
                   4317:     a\r\nb
                   4318:     ** Failers
1.1.1.2 ! misho    4319:     a\x85b
1.1       misho    4320:     a\x0bb     
                   4321: 
1.1.1.2 ! misho    4322: /a\Rb/I<bsr_unicode>
1.1       misho    4323:     a\rb
                   4324:     a\nb
                   4325:     a\r\nb
1.1.1.2 ! misho    4326:     a\x85b
1.1       misho    4327:     a\x0bb     
                   4328:     ** Failers 
1.1.1.2 ! misho    4329:     a\x85b\<bsr_anycrlf>
1.1       misho    4330:     a\x0bb\<bsr_anycrlf>
                   4331:     
1.1.1.2 ! misho    4332: /a\R?b/I<bsr_anycrlf>
1.1       misho    4333:     a\rb
                   4334:     a\nb
                   4335:     a\r\nb
                   4336:     ** Failers
1.1.1.2 ! misho    4337:     a\x85b
1.1       misho    4338:     a\x0bb     
                   4339: 
1.1.1.2 ! misho    4340: /a\R?b/I<bsr_unicode>
1.1       misho    4341:     a\rb
                   4342:     a\nb
                   4343:     a\r\nb
1.1.1.2 ! misho    4344:     a\x85b
1.1       misho    4345:     a\x0bb     
                   4346:     ** Failers 
1.1.1.2 ! misho    4347:     a\x85b\<bsr_anycrlf>
1.1       misho    4348:     a\x0bb\<bsr_anycrlf>
1.1.1.2 ! misho    4349:     
        !          4350: /a\R{2,4}b/I<bsr_anycrlf>
        !          4351:     a\r\n\nb
        !          4352:     a\n\r\rb
        !          4353:     a\r\n\r\n\r\n\r\nb
        !          4354:     ** Failers
        !          4355:     a\x85\85b
        !          4356:     a\x0b\0bb     
        !          4357: 
        !          4358: /a\R{2,4}b/I<bsr_unicode>
        !          4359:     a\r\rb
        !          4360:     a\n\n\nb
        !          4361:     a\r\n\n\r\rb
        !          4362:     a\x85\85b
        !          4363:     a\x0b\0bb     
        !          4364:     ** Failers 
        !          4365:     a\r\r\r\r\rb 
        !          4366:     a\x85\85b\<bsr_anycrlf>
        !          4367:     a\x0b\0bb\<bsr_anycrlf>
        !          4368:     
        !          4369: /a(?!)|\wbc/
        !          4370:     abc 
        !          4371: 
        !          4372: /a[]b/<JS>
        !          4373:     ** Failers
        !          4374:     ab
        !          4375: 
        !          4376: /a[]+b/<JS>
        !          4377:     ** Failers
        !          4378:     ab 
        !          4379: 
        !          4380: /a[]*+b/<JS>
        !          4381:     ** Failers
        !          4382:     ab 
        !          4383: 
        !          4384: /a[^]b/<JS>
        !          4385:     aXb
        !          4386:     a\nb 
        !          4387:     ** Failers
        !          4388:     ab  
        !          4389:     
        !          4390: /a[^]+b/<JS> 
        !          4391:     aXb
        !          4392:     a\nX\nXb 
        !          4393:     ** Failers
        !          4394:     ab  
        !          4395: 
        !          4396: /X$/E
        !          4397:     X
        !          4398:     ** Failers 
        !          4399:     X\n 
        !          4400: 
        !          4401: /X$/
        !          4402:     X
        !          4403:     X\n 
        !          4404: 
        !          4405: /xyz/C
        !          4406:   xyz 
        !          4407:   abcxyz 
        !          4408:   abcxyz\Y
        !          4409:   ** Failers 
        !          4410:   abc
        !          4411:   abc\Y
        !          4412:   abcxypqr  
        !          4413:   abcxypqr\Y  
        !          4414: 
        !          4415: /(*NO_START_OPT)xyz/C
        !          4416:   abcxyz 
        !          4417:   
        !          4418: /(?C)ab/
        !          4419:   ab
        !          4420:   \C-ab
        !          4421:   
        !          4422: /ab/C
        !          4423:   ab
        !          4424:   \C-ab    
        !          4425: 
        !          4426: /^"((?(?=[a])[^"])|b)*"$/C
        !          4427:     "ab"
        !          4428:     \C-"ab"
        !          4429: 
        !          4430: /\d+X|9+Y/
        !          4431:     ++++123999\P
        !          4432:     ++++123999Y\P
        !          4433: 
        !          4434: /Z(*F)/
        !          4435:     Z\P
        !          4436:     ZA\P 
        !          4437:     
        !          4438: /Z(?!)/
        !          4439:     Z\P 
        !          4440:     ZA\P 
        !          4441: 
        !          4442: /dog(sbody)?/
        !          4443:     dogs\P
        !          4444:     dogs\P\P 
        !          4445:     
        !          4446: /dog(sbody)??/
        !          4447:     dogs\P
        !          4448:     dogs\P\P 
        !          4449: 
        !          4450: /dog|dogsbody/
        !          4451:     dogs\P
        !          4452:     dogs\P\P 
1.1       misho    4453:  
1.1.1.2 ! misho    4454: /dogsbody|dog/
        !          4455:     dogs\P
        !          4456:     dogs\P\P 
        !          4457: 
        !          4458: /Z(*F)Q|ZXY/
        !          4459:     Z\P
        !          4460:     ZA\P 
        !          4461:     X\P 
        !          4462: 
        !          4463: /\bthe cat\b/
        !          4464:     the cat\P
        !          4465:     the cat\P\P
        !          4466: 
        !          4467: /dog(sbody)?/
        !          4468:     dogs\D\P
        !          4469:     body\D\R
        !          4470: 
        !          4471: /dog(sbody)?/
        !          4472:     dogs\D\P\P
        !          4473:     body\D\R
        !          4474: 
        !          4475: /abc/
        !          4476:    abc\P
        !          4477:    abc\P\P
        !          4478: 
        !          4479: /abc\K123/
        !          4480:     xyzabc123pqr
        !          4481:     
        !          4482: /(?<=abc)123/
        !          4483:     xyzabc123pqr 
        !          4484:     xyzabc12\P
        !          4485:     xyzabc12\P\P
        !          4486: 
        !          4487: /\babc\b/
        !          4488:     +++abc+++
        !          4489:     +++ab\P
        !          4490:     +++ab\P\P  
        !          4491: 
        !          4492: /(?=C)/g+
        !          4493:     ABCDECBA
        !          4494: 
        !          4495: /(abc|def|xyz)/I
        !          4496:     terhjk;abcdaadsfe
        !          4497:     the quick xyz brown fox 
        !          4498:     \Yterhjk;abcdaadsfe
        !          4499:     \Ythe quick xyz brown fox 
        !          4500:     ** Failers
        !          4501:     thejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
        !          4502:     \Ythejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
        !          4503: 
        !          4504: /(abc|def|xyz)/SI
        !          4505:     terhjk;abcdaadsfe
        !          4506:     the quick xyz brown fox 
        !          4507:     \Yterhjk;abcdaadsfe
        !          4508:     \Ythe quick xyz brown fox 
        !          4509:     ** Failers
        !          4510:     thejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
        !          4511:     \Ythejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
1.1       misho    4512: 
1.1.1.2 ! misho    4513: /abcd*/+
1.1       misho    4514:     xxxxabcd\P
                   4515:     xxxxabcd\P\P
1.1.1.2 ! misho    4516:     dddxxx\R 
        !          4517:     xxxxabcd\P\P
        !          4518:     xxx\R 
1.1       misho    4519: 
1.1.1.2 ! misho    4520: /abcd*/i
1.1       misho    4521:     xxxxabcd\P
                   4522:     xxxxabcd\P\P
                   4523:     XXXXABCD\P
                   4524:     XXXXABCD\P\P
                   4525: 
1.1.1.2 ! misho    4526: /abc\d*/
1.1       misho    4527:     xxxxabc1\P
                   4528:     xxxxabc1\P\P
                   4529: 
1.1.1.2 ! misho    4530: /abc[de]*/
1.1       misho    4531:     xxxxabcde\P
                   4532:     xxxxabcde\P\P
                   4533: 
1.1.1.2 ! misho    4534: /(?:(?1)|B)(A(*F)|C)/
        !          4535:     ABCD
        !          4536:     CCD
        !          4537:     ** Failers
        !          4538:     CAD   
1.1       misho    4539: 
1.1.1.2 ! misho    4540: /^(?:(?1)|B)(A(*F)|C)/
        !          4541:     CCD
        !          4542:     BCD 
        !          4543:     ** Failers
        !          4544:     ABCD
        !          4545:     CAD
        !          4546:     BAD    
1.1       misho    4547: 
1.1.1.2 ! misho    4548: /^(?!a(*SKIP)b)/
        !          4549:     ac
        !          4550:     
        !          4551: /^(?=a(*SKIP)b|ac)/
        !          4552:     ** Failers
        !          4553:     ac
        !          4554:     
        !          4555: /^(?=a(*THEN)b|ac)/
        !          4556:     ac
        !          4557:     
        !          4558: /^(?=a(*PRUNE)b)/
        !          4559:     ab  
        !          4560:     ** Failers 
        !          4561:     ac
        !          4562: 
        !          4563: /^(?(?!a(*SKIP)b))/
        !          4564:     ac
        !          4565: 
        !          4566: /(?<=abc)def/
        !          4567:     abc\P\P
        !          4568: 
        !          4569: /abc$/
        !          4570:     abc
        !          4571:     abc\P
        !          4572:     abc\P\P
        !          4573: 
        !          4574: /abc$/m
        !          4575:     abc
        !          4576:     abc\n
        !          4577:     abc\P\P
        !          4578:     abc\n\P\P 
        !          4579:     abc\P
        !          4580:     abc\n\P
        !          4581: 
        !          4582: /abc\z/
        !          4583:     abc
        !          4584:     abc\P
        !          4585:     abc\P\P
        !          4586: 
        !          4587: /abc\Z/
        !          4588:     abc
        !          4589:     abc\P
        !          4590:     abc\P\P
        !          4591: 
        !          4592: /abc\b/
        !          4593:     abc
        !          4594:     abc\P
        !          4595:     abc\P\P
        !          4596: 
        !          4597: /abc\B/
        !          4598:     abc
        !          4599:     abc\P
        !          4600:     abc\P\P
        !          4601: 
        !          4602: /.+/
        !          4603:     abc\>0
        !          4604:     abc\>1
        !          4605:     abc\>2
        !          4606:     abc\>3
        !          4607:     abc\>4
        !          4608:     abc\>-4 
        !          4609: 
        !          4610: /^(?:a)++\w/
        !          4611:      aaaab
        !          4612:      ** Failers 
        !          4613:      aaaa 
        !          4614:      bbb 
        !          4615: 
        !          4616: /^(?:aa|(?:a)++\w)/
        !          4617:      aaaab
        !          4618:      aaaa 
        !          4619:      ** Failers 
        !          4620:      bbb 
        !          4621: 
        !          4622: /^(?:a)*+\w/
        !          4623:      aaaab
        !          4624:      bbb 
        !          4625:      ** Failers 
        !          4626:      aaaa 
        !          4627: 
        !          4628: /^(a)++\w/
        !          4629:      aaaab
        !          4630:      ** Failers 
        !          4631:      aaaa 
        !          4632:      bbb 
        !          4633: 
        !          4634: /^(a|)++\w/
        !          4635:      aaaab
        !          4636:      ** Failers 
        !          4637:      aaaa 
        !          4638:      bbb 
        !          4639: 
        !          4640: /(?=abc){3}abc/+
        !          4641:     abcabcabc
        !          4642:     ** Failers
        !          4643:     xyz  
        !          4644:     
        !          4645: /(?=abc)+abc/+
        !          4646:     abcabcabc
        !          4647:     ** Failers
        !          4648:     xyz  
        !          4649:     
        !          4650: /(?=abc)++abc/+
        !          4651:     abcabcabc
        !          4652:     ** Failers
        !          4653:     xyz  
        !          4654:     
        !          4655: /(?=abc){0}xyz/
        !          4656:     xyz 
        !          4657: 
        !          4658: /(?=abc){1}xyz/
        !          4659:     ** Failers
        !          4660:     xyz 
        !          4661:     
        !          4662: /(?=(a))?./
        !          4663:     ab
        !          4664:     bc
        !          4665:       
        !          4666: /(?=(a))??./
        !          4667:     ab
        !          4668:     bc
        !          4669: 
        !          4670: /^(?=(a)){0}b(?1)/
        !          4671:     backgammon
        !          4672: 
        !          4673: /^(?=(?1))?[az]([abc])d/
        !          4674:     abd 
        !          4675:     zcdxx 
        !          4676: 
        !          4677: /^(?!a){0}\w+/
        !          4678:     aaaaa
        !          4679: 
        !          4680: /(?<=(abc))?xyz/
        !          4681:     abcxyz
        !          4682:     pqrxyz 
        !          4683: 
        !          4684: /((?2))((?1))/
        !          4685:     abc
1.1       misho    4686: 
1.1.1.2 ! misho    4687: /(?(R)a+|(?R)b)/
        !          4688:     aaaabcde
        !          4689: 
        !          4690: /(?(R)a+|((?R))b)/
        !          4691:     aaaabcde
        !          4692: 
        !          4693: /((?(R)a+|(?1)b))/
        !          4694:     aaaabcde
        !          4695: 
        !          4696: /((?(R2)a+|(?1)b))/
        !          4697:     aaaabcde
        !          4698: 
        !          4699: /(?(R)a*(?1)|((?R))b)/
        !          4700:     aaaabcde
        !          4701: 
        !          4702: /(a+)/
        !          4703:     \O6aaaa
        !          4704:     \O8aaaa
        !          4705: 
        !          4706: /ab\Cde/
        !          4707:     abXde
        !          4708:     
        !          4709: /(?<=ab\Cde)X/
        !          4710:     abZdeX
1.1       misho    4711: 
1.1.1.2 ! misho    4712: /-- End of testinput8 --/

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