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

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

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