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

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.3 ! misho    4712: /^\R/
        !          4713:     \r\P
        !          4714:     \r\P\P
        !          4715:     
        !          4716: /^\R{2,3}x/
        !          4717:     \r\P
        !          4718:     \r\P\P
        !          4719:     \r\r\P 
        !          4720:     \r\r\P\P
        !          4721:     \r\r\r\P  
        !          4722:     \r\r\r\P\P
        !          4723:     \r\rx
        !          4724:     \r\r\rx    
        !          4725: 
        !          4726: /^\R{2,3}?x/
        !          4727:     \r\P
        !          4728:     \r\P\P
        !          4729:     \r\r\P 
        !          4730:     \r\r\P\P
        !          4731:     \r\r\r\P  
        !          4732:     \r\r\r\P\P
        !          4733:     \r\rx
        !          4734:     \r\r\rx    
        !          4735:     
        !          4736: /^\R?x/
        !          4737:     \r\P
        !          4738:     \r\P\P 
        !          4739:     x
        !          4740:     \rx  
        !          4741: 
        !          4742: /^\R+x/
        !          4743:     \r\P
        !          4744:     \r\P\P 
        !          4745:     \r\n\P
        !          4746:     \r\n\P\P  
        !          4747:     \rx  
        !          4748: 
        !          4749: /^a$/<CRLF>
        !          4750:     a\r\P
        !          4751:     a\r\P\P 
        !          4752: 
        !          4753: /^a$/m<CRLF>
        !          4754:     a\r\P
        !          4755:     a\r\P\P 
        !          4756: 
        !          4757: /^(a$|a\r)/<CRLF>
        !          4758:     a\r\P
        !          4759:     a\r\P\P 
        !          4760: 
        !          4761: /^(a$|a\r)/m<CRLF>
        !          4762:     a\r\P
        !          4763:     a\r\P\P 
        !          4764: 
        !          4765: /./<CRLF>
        !          4766:     \r\P
        !          4767:     \r\P\P 
        !          4768:   
        !          4769: /.{2,3}/<CRLF>
        !          4770:     \r\P 
        !          4771:     \r\P\P
        !          4772:     \r\r\P
        !          4773:     \r\r\P\P
        !          4774:     \r\r\r\P
        !          4775:     \r\r\r\P\P     
        !          4776: 
        !          4777: /.{2,3}?/<CRLF>
        !          4778:     \r\P 
        !          4779:     \r\P\P
        !          4780:     \r\r\P
        !          4781:     \r\r\P\P
        !          4782:     \r\r\r\P
        !          4783:     \r\r\r\P\P     
        !          4784: 
        !          4785: /-- Test simple validity check for restarts --/
        !          4786: 
        !          4787: /abcdef/
        !          4788:    abc\R
        !          4789: 
        !          4790: /<H((?(?!<H|F>)(.)|(?R))++)*F>/
        !          4791:     text <H more text <H texting more  hexA0-"\xA0"    hex above 7F-"\xBC" F> text xxxxx <H text F> text F> text2 <H text sample F> more text.
        !          4792: 
        !          4793: /^(?>.{4})abc|^\w\w.xabcd/
        !          4794:     xxxxabcd
        !          4795:     xx\xa0xabcd 
        !          4796: 
        !          4797: /^(.{4}){2}+abc|^\w\w.x\w\w\w\wabcd/
        !          4798:     xxxxxxxxabcd
        !          4799:     xx\xa0xxxxxabcd 
        !          4800: 
1.1.1.2   misho    4801: /-- End of testinput8 --/

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