[WIN32] removed the pcre sources from our repo
[vuplus_xbmc] / lib / win32 / pcre / testdata / testinput1
diff --git a/lib/win32/pcre/testdata/testinput1 b/lib/win32/pcre/testdata/testinput1
deleted file mode 100644 (file)
index 6cacbb5..0000000
+++ /dev/null
@@ -1,4070 +0,0 @@
-/-- This set of tests is for features that are compatible with all versions of
-    Perl 5, in non-UTF-8 mode. --/
-
-/the quick brown fox/
-    the quick brown fox
-    The quick brown FOX
-    What do you know about the quick brown fox?
-    What do you know about THE QUICK BROWN FOX?
-
-/The quick brown fox/i
-    the quick brown fox
-    The quick brown FOX
-    What do you know about the quick brown fox?
-    What do you know about THE QUICK BROWN FOX?
-
-/abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
-    abcd\t\n\r\f\a\e9;\$\\?caxyz
-
-/a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
-    abxyzpqrrrabbxyyyypqAzz
-    abxyzpqrrrabbxyyyypqAzz
-    aabxyzpqrrrabbxyyyypqAzz
-    aaabxyzpqrrrabbxyyyypqAzz
-    aaaabxyzpqrrrabbxyyyypqAzz
-    abcxyzpqrrrabbxyyyypqAzz
-    aabcxyzpqrrrabbxyyyypqAzz
-    aaabcxyzpqrrrabbxyyyypAzz
-    aaabcxyzpqrrrabbxyyyypqAzz
-    aaabcxyzpqrrrabbxyyyypqqAzz
-    aaabcxyzpqrrrabbxyyyypqqqAzz
-    aaabcxyzpqrrrabbxyyyypqqqqAzz
-    aaabcxyzpqrrrabbxyyyypqqqqqAzz
-    aaabcxyzpqrrrabbxyyyypqqqqqqAzz
-    aaaabcxyzpqrrrabbxyyyypqAzz
-    abxyzzpqrrrabbxyyyypqAzz
-    aabxyzzzpqrrrabbxyyyypqAzz
-    aaabxyzzzzpqrrrabbxyyyypqAzz
-    aaaabxyzzzzpqrrrabbxyyyypqAzz
-    abcxyzzpqrrrabbxyyyypqAzz
-    aabcxyzzzpqrrrabbxyyyypqAzz
-    aaabcxyzzzzpqrrrabbxyyyypqAzz
-    aaaabcxyzzzzpqrrrabbxyyyypqAzz
-    aaaabcxyzzzzpqrrrabbbxyyyypqAzz
-    aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
-    aaabcxyzpqrrrabbxyyyypABzz
-    aaabcxyzpqrrrabbxyyyypABBzz
-    >>>aaabxyzpqrrrabbxyyyypqAzz
-    >aaaabxyzpqrrrabbxyyyypqAzz
-    >>>>abcxyzpqrrrabbxyyyypqAzz
-    *** Failers
-    abxyzpqrrabbxyyyypqAzz
-    abxyzpqrrrrabbxyyyypqAzz
-    abxyzpqrrrabxyyyypqAzz
-    aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
-    aaaabcxyzzzzpqrrrabbbxyyypqAzz
-    aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
-
-/^(abc){1,2}zz/
-    abczz
-    abcabczz
-    *** Failers
-    zz
-    abcabcabczz
-    >>abczz
-
-/^(b+?|a){1,2}?c/
-    bc
-    bbc
-    bbbc
-    bac
-    bbac
-    aac
-    abbbbbbbbbbbc
-    bbbbbbbbbbbac
-    *** Failers
-    aaac
-    abbbbbbbbbbbac
-
-/^(b+|a){1,2}c/
-    bc
-    bbc
-    bbbc
-    bac
-    bbac
-    aac
-    abbbbbbbbbbbc
-    bbbbbbbbbbbac
-    *** Failers
-    aaac
-    abbbbbbbbbbbac
-
-/^(b+|a){1,2}?bc/
-    bbc
-
-/^(b*|ba){1,2}?bc/
-    babc
-    bbabc
-    bababc
-    *** Failers
-    bababbc
-    babababc
-
-/^(ba|b*){1,2}?bc/
-    babc
-    bbabc
-    bababc
-    *** Failers
-    bababbc
-    babababc
-
-/^\ca\cA\c[\c{\c:/
-    \x01\x01\e;z
-
-/^[ab\]cde]/
-    athing
-    bthing
-    ]thing
-    cthing
-    dthing
-    ething
-    *** Failers
-    fthing
-    [thing
-    \\thing
-
-/^[]cde]/
-    ]thing
-    cthing
-    dthing
-    ething
-    *** Failers
-    athing
-    fthing
-
-/^[^ab\]cde]/
-    fthing
-    [thing
-    \\thing
-    *** Failers
-    athing
-    bthing
-    ]thing
-    cthing
-    dthing
-    ething
-
-/^[^]cde]/
-    athing
-    fthing
-    *** Failers
-    ]thing
-    cthing
-    dthing
-    ething
-
-/^\\81/
-    \81
-
-/^ÿ/
-    ÿ
-
-/^[0-9]+$/
-    0
-    1
-    2
-    3
-    4
-    5
-    6
-    7
-    8
-    9
-    10
-    100
-    *** Failers
-    abc
-
-/^.*nter/
-    enter
-    inter
-    uponter
-
-/^xxx[0-9]+$/
-    xxx0
-    xxx1234
-    *** Failers
-    xxx
-
-/^.+[0-9][0-9][0-9]$/
-    x123
-    xx123
-    123456
-    *** Failers
-    123
-    x1234
-
-/^.+?[0-9][0-9][0-9]$/
-    x123
-    xx123
-    123456
-    *** Failers
-    123
-    x1234
-
-/^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
-    abc!pqr=apquxz.ixr.zzz.ac.uk
-    *** Failers
-    !pqr=apquxz.ixr.zzz.ac.uk
-    abc!=apquxz.ixr.zzz.ac.uk
-    abc!pqr=apquxz:ixr.zzz.ac.uk
-    abc!pqr=apquxz.ixr.zzz.ac.ukk
-
-/:/
-    Well, we need a colon: somewhere
-    *** Fail if we don't
-
-/([\da-f:]+)$/i
-    0abc
-    abc
-    fed
-    E
-    ::
-    5f03:12C0::932e
-    fed def
-    Any old stuff
-    *** Failers
-    0zzz
-    gzzz
-    fed\x20
-    Any old rubbish
-
-/^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
-    .1.2.3
-    A.12.123.0
-    *** Failers
-    .1.2.3333
-    1.2.3
-    1234.2.3
-
-/^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
-    1 IN SOA non-sp1 non-sp2(
-    1    IN    SOA    non-sp1    non-sp2   (
-    *** Failers
-    1IN SOA non-sp1 non-sp2(
-
-/^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/
-    a.
-    Z.
-    2.
-    ab-c.pq-r.
-    sxk.zzz.ac.uk.
-    x-.y-.
-    *** Failers
-    -abc.peq.
-
-/^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/
-    *.a
-    *.b0-a
-    *.c3-b.c
-    *.c-a.b-c
-    *** Failers
-    *.0
-    *.a-
-    *.a-b.c-
-    *.c-a.0-c
-
-/^(?=ab(de))(abd)(e)/
-    abde
-
-/^(?!(ab)de|x)(abd)(f)/
-    abdf
-
-/^(?=(ab(cd)))(ab)/
-    abcd
-
-/^[\da-f](\.[\da-f])*$/i
-    a.b.c.d
-    A.B.C.D
-    a.b.c.1.2.3.C
-
-/^\".*\"\s*(;.*)?$/
-    \"1234\"
-    \"abcd\" ;
-    \"\" ; rhubarb
-    *** Failers
-    \"1234\" : things
-
-/^$/
-    \
-    *** Failers
-
-/   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/x
-    ab c
-    *** Failers
-    abc
-    ab cde
-
-/(?x)   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/
-    ab c
-    *** Failers
-    abc
-    ab cde
-
-/^   a\ b[c ]d       $/x
-    a bcd
-    a b d
-    *** Failers
-    abcd
-    ab d
-
-/^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
-    abcdefhijklm
-
-/^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
-    abcdefhijklm
-
-/^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
-    a+ Z0+\x08\n\x1d\x12
-
-/^[.^$|()*+?{,}]+/
-    .^\$(*+)|{?,?}
-
-/^a*\w/
-    z
-    az
-    aaaz
-    a
-    aa
-    aaaa
-    a+
-    aa+
-
-/^a*?\w/
-    z
-    az
-    aaaz
-    a
-    aa
-    aaaa
-    a+
-    aa+
-
-/^a+\w/
-    az
-    aaaz
-    aa
-    aaaa
-    aa+
-
-/^a+?\w/
-    az
-    aaaz
-    aa
-    aaaa
-    aa+
-
-/^\d{8}\w{2,}/
-    1234567890
-    12345678ab
-    12345678__
-    *** Failers
-    1234567
-
-/^[aeiou\d]{4,5}$/
-    uoie
-    1234
-    12345
-    aaaaa
-    *** Failers
-    123456
-
-/^[aeiou\d]{4,5}?/
-    uoie
-    1234
-    12345
-    aaaaa
-    123456
-
-/\A(abc|def)=(\1){2,3}\Z/
-    abc=abcabc
-    def=defdefdef
-    *** Failers
-    abc=defdef
-
-/^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\11*(\3\4)\1(?#)2$/
-    abcdefghijkcda2
-    abcdefghijkkkkcda2
-
-/(cat(a(ract|tonic)|erpillar)) \1()2(3)/
-    cataract cataract23
-    catatonic catatonic23
-    caterpillar caterpillar23
-
-
-/^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]/
-    From abcd  Mon Sep 01 12:33:02 1997
-
-/^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
-    From abcd  Mon Sep 01 12:33:02 1997
-    From abcd  Mon Sep  1 12:33:02 1997
-    *** Failers
-    From abcd  Sep 01 12:33:02 1997
-
-/^12.34/s
-    12\n34
-    12\r34
-
-/\w+(?=\t)/
-    the quick brown\t fox
-
-/foo(?!bar)(.*)/
-    foobar is foolish see?
-
-/(?:(?!foo)...|^.{0,2})bar(.*)/
-    foobar crowbar etc
-    barrel
-    2barrel
-    A barrel
-
-/^(\D*)(?=\d)(?!123)/
-    abc456
-    *** Failers
-    abc123
-
-/^1234(?# test newlines
-  inside)/
-    1234
-
-/^1234 #comment in extended re
-  /x
-    1234
-
-/#rhubarb
-  abcd/x
-    abcd
-
-/^abcd#rhubarb/x
-    abcd
-
-/^(a)\1{2,3}(.)/
-    aaab
-    aaaab
-    aaaaab
-    aaaaaab
-
-/(?!^)abc/
-    the abc
-    *** Failers
-    abc
-
-/(?=^)abc/
-    abc
-    *** Failers
-    the abc
-
-/^[ab]{1,3}(ab*|b)/
-    aabbbbb
-
-/^[ab]{1,3}?(ab*|b)/
-    aabbbbb
-
-/^[ab]{1,3}?(ab*?|b)/
-    aabbbbb
-
-/^[ab]{1,3}(ab*?|b)/
-    aabbbbb
-
-/  (?: [\040\t] |  \(
-(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
-\)  )*                          # optional leading comment
-(?:    (?:
-[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
-(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
-|
-" (?:                      # opening quote...
-[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
-|                     #    or
-\\ [^\x80-\xff]           #   Escaped something (something != CR)
-)* "  # closing quote
-)                    # initial word
-(?:  (?: [\040\t] |  \(
-(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
-\)  )*  \.  (?: [\040\t] |  \(
-(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
-\)  )*   (?:
-[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
-(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
-|
-" (?:                      # opening quote...
-[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
-|                     #    or
-\\ [^\x80-\xff]           #   Escaped something (something != CR)
-)* "  # closing quote
-)  )* # further okay, if led by a period
-(?: [\040\t] |  \(
-(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
-\)  )*  @  (?: [\040\t] |  \(
-(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
-\)  )*    (?:
-[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
-(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
-|   \[                         # [
-(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
-\]                        #           ]
-)                           # initial subdomain
-(?:                                  #
-(?: [\040\t] |  \(
-(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
-\)  )*  \.                        # if led by a period...
-(?: [\040\t] |  \(
-(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
-\)  )*   (?:
-[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
-(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
-|   \[                         # [
-(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
-\]                        #           ]
-)                     #   ...further okay
-)*
-# address
-|                     #  or
-(?:
-[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
-(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
-|
-" (?:                      # opening quote...
-[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
-|                     #    or
-\\ [^\x80-\xff]           #   Escaped something (something != CR)
-)* "  # closing quote
-)             # one word, optionally followed by....
-(?:
-[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]  |  # atom and space parts, or...
-\(
-(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
-\)       |  # comments, or...
-
-" (?:                      # opening quote...
-[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
-|                     #    or
-\\ [^\x80-\xff]           #   Escaped something (something != CR)
-)* "  # closing quote
-# quoted strings
-)*
-<  (?: [\040\t] |  \(
-(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
-\)  )*                     # leading <
-(?:  @  (?: [\040\t] |  \(
-(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
-\)  )*    (?:
-[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
-(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
-|   \[                         # [
-(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
-\]                        #           ]
-)                           # initial subdomain
-(?:                                  #
-(?: [\040\t] |  \(
-(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
-\)  )*  \.                        # if led by a period...
-(?: [\040\t] |  \(
-(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
-\)  )*   (?:
-[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
-(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
-|   \[                         # [
-(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
-\]                        #           ]
-)                     #   ...further okay
-)*
-
-(?:  (?: [\040\t] |  \(
-(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
-\)  )*  ,  (?: [\040\t] |  \(
-(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
-\)  )*  @  (?: [\040\t] |  \(
-(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
-\)  )*    (?:
-[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
-(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
-|   \[                         # [
-(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
-\]                        #           ]
-)                           # initial subdomain
-(?:                                  #
-(?: [\040\t] |  \(
-(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
-\)  )*  \.                        # if led by a period...
-(?: [\040\t] |  \(
-(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
-\)  )*   (?:
-[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
-(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
-|   \[                         # [
-(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
-\]                        #           ]
-)                     #   ...further okay
-)*
-)* # further okay, if led by comma
-:                                # closing colon
-(?: [\040\t] |  \(
-(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
-\)  )*  )? #       optional route
-(?:
-[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
-(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
-|
-" (?:                      # opening quote...
-[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
-|                     #    or
-\\ [^\x80-\xff]           #   Escaped something (something != CR)
-)* "  # closing quote
-)                    # initial word
-(?:  (?: [\040\t] |  \(
-(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
-\)  )*  \.  (?: [\040\t] |  \(
-(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
-\)  )*   (?:
-[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
-(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
-|
-" (?:                      # opening quote...
-[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
-|                     #    or
-\\ [^\x80-\xff]           #   Escaped something (something != CR)
-)* "  # closing quote
-)  )* # further okay, if led by a period
-(?: [\040\t] |  \(
-(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
-\)  )*  @  (?: [\040\t] |  \(
-(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
-\)  )*    (?:
-[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
-(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
-|   \[                         # [
-(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
-\]                        #           ]
-)                           # initial subdomain
-(?:                                  #
-(?: [\040\t] |  \(
-(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
-\)  )*  \.                        # if led by a period...
-(?: [\040\t] |  \(
-(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
-\)  )*   (?:
-[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
-(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
-|   \[                         # [
-(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
-\]                        #           ]
-)                     #   ...further okay
-)*
-#       address spec
-(?: [\040\t] |  \(
-(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
-\)  )*  > #                  trailing >
-# name and address
-)  (?: [\040\t] |  \(
-(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
-\)  )*                       # optional trailing comment
-/x
-    Alan Other <user\@dom.ain>
-    <user\@dom.ain>
-    user\@dom.ain
-    \"A. Other\" <user.1234\@dom.ain> (a comment)
-    A. Other <user.1234\@dom.ain> (a comment)
-    \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
-    A missing angle <user\@some.where
-    *** Failers
-    The quick brown fox
-
-/[\040\t]*                    # Nab whitespace.
-(?:
-\(                              #  (
-[^\\\x80-\xff\n\015()] *                             #     normal*
-(?:                                 #       (
-(?:  \\ [^\x80-\xff]  |
-\(                            #  (
-[^\\\x80-\xff\n\015()] *                            #     normal*
-(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
-\)                           #                       )
-)    #         special
-[^\\\x80-\xff\n\015()] *                         #         normal*
-)*                                  #            )*
-\)                             #                )
-[\040\t]* )*    # If comment found, allow more spaces.
-# optional leading comment
-(?:
-(?:
-[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
-(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
-# Atom
-|                       #  or
-"                                     # "
-[^\\\x80-\xff\n\015"] *                            #   normal
-(?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
-"                                     #        "
-# Quoted string
-)
-[\040\t]*                    # Nab whitespace.
-(?:
-\(                              #  (
-[^\\\x80-\xff\n\015()] *                             #     normal*
-(?:                                 #       (
-(?:  \\ [^\x80-\xff]  |
-\(                            #  (
-[^\\\x80-\xff\n\015()] *                            #     normal*
-(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
-\)                           #                       )
-)    #         special
-[^\\\x80-\xff\n\015()] *                         #         normal*
-)*                                  #            )*
-\)                             #                )
-[\040\t]* )*    # If comment found, allow more spaces.
-(?:
-\.
-[\040\t]*                    # Nab whitespace.
-(?:
-\(                              #  (
-[^\\\x80-\xff\n\015()] *                             #     normal*
-(?:                                 #       (
-(?:  \\ [^\x80-\xff]  |
-\(                            #  (
-[^\\\x80-\xff\n\015()] *                            #     normal*
-(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
-\)                           #                       )
-)    #         special
-[^\\\x80-\xff\n\015()] *                         #         normal*
-)*                                  #            )*
-\)                             #                )
-[\040\t]* )*    # If comment found, allow more spaces.
-(?:
-[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
-(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
-# Atom
-|                       #  or
-"                                     # "
-[^\\\x80-\xff\n\015"] *                            #   normal
-(?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
-"                                     #        "
-# Quoted string
-)
-[\040\t]*                    # Nab whitespace.
-(?:
-\(                              #  (
-[^\\\x80-\xff\n\015()] *                             #     normal*
-(?:                                 #       (
-(?:  \\ [^\x80-\xff]  |
-\(                            #  (
-[^\\\x80-\xff\n\015()] *                            #     normal*
-(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
-\)                           #                       )
-)    #         special
-[^\\\x80-\xff\n\015()] *                         #         normal*
-)*                                  #            )*
-\)                             #                )
-[\040\t]* )*    # If comment found, allow more spaces.
-# additional words
-)*
-@
-[\040\t]*                    # Nab whitespace.
-(?:
-\(                              #  (
-[^\\\x80-\xff\n\015()] *                             #     normal*
-(?:                                 #       (
-(?:  \\ [^\x80-\xff]  |
-\(                            #  (
-[^\\\x80-\xff\n\015()] *                            #     normal*
-(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
-\)                           #                       )
-)    #         special
-[^\\\x80-\xff\n\015()] *                         #         normal*
-)*                                  #            )*
-\)                             #                )
-[\040\t]* )*    # If comment found, allow more spaces.
-(?:
-[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
-(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
-|
-\[                            # [
-(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
-\]                           #           ]
-)
-[\040\t]*                    # Nab whitespace.
-(?:
-\(                              #  (
-[^\\\x80-\xff\n\015()] *                             #     normal*
-(?:                                 #       (
-(?:  \\ [^\x80-\xff]  |
-\(                            #  (
-[^\\\x80-\xff\n\015()] *                            #     normal*
-(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
-\)                           #                       )
-)    #         special
-[^\\\x80-\xff\n\015()] *                         #         normal*
-)*                                  #            )*
-\)                             #                )
-[\040\t]* )*    # If comment found, allow more spaces.
-# optional trailing comments
-(?:
-\.
-[\040\t]*                    # Nab whitespace.
-(?:
-\(                              #  (
-[^\\\x80-\xff\n\015()] *                             #     normal*
-(?:                                 #       (
-(?:  \\ [^\x80-\xff]  |
-\(                            #  (
-[^\\\x80-\xff\n\015()] *                            #     normal*
-(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
-\)                           #                       )
-)    #         special
-[^\\\x80-\xff\n\015()] *                         #         normal*
-)*                                  #            )*
-\)                             #                )
-[\040\t]* )*    # If comment found, allow more spaces.
-(?:
-[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
-(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
-|
-\[                            # [
-(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
-\]                           #           ]
-)
-[\040\t]*                    # Nab whitespace.
-(?:
-\(                              #  (
-[^\\\x80-\xff\n\015()] *                             #     normal*
-(?:                                 #       (
-(?:  \\ [^\x80-\xff]  |
-\(                            #  (
-[^\\\x80-\xff\n\015()] *                            #     normal*
-(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
-\)                           #                       )
-)    #         special
-[^\\\x80-\xff\n\015()] *                         #         normal*
-)*                                  #            )*
-\)                             #                )
-[\040\t]* )*    # If comment found, allow more spaces.
-# optional trailing comments
-)*
-# address
-|                             #  or
-(?:
-[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
-(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
-# Atom
-|                       #  or
-"                                     # "
-[^\\\x80-\xff\n\015"] *                            #   normal
-(?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
-"                                     #        "
-# Quoted string
-)
-# leading word
-[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] *               # "normal" atoms and or spaces
-(?:
-(?:
-\(                              #  (
-[^\\\x80-\xff\n\015()] *                             #     normal*
-(?:                                 #       (
-(?:  \\ [^\x80-\xff]  |
-\(                            #  (
-[^\\\x80-\xff\n\015()] *                            #     normal*
-(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
-\)                           #                       )
-)    #         special
-[^\\\x80-\xff\n\015()] *                         #         normal*
-)*                                  #            )*
-\)                             #                )
-|
-"                                     # "
-[^\\\x80-\xff\n\015"] *                            #   normal
-(?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
-"                                     #        "
-) # "special" comment or quoted string
-[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] *            #  more "normal"
-)*
-<
-[\040\t]*                    # Nab whitespace.
-(?:
-\(                              #  (
-[^\\\x80-\xff\n\015()] *                             #     normal*
-(?:                                 #       (
-(?:  \\ [^\x80-\xff]  |
-\(                            #  (
-[^\\\x80-\xff\n\015()] *                            #     normal*
-(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
-\)                           #                       )
-)    #         special
-[^\\\x80-\xff\n\015()] *                         #         normal*
-)*                                  #            )*
-\)                             #                )
-[\040\t]* )*    # If comment found, allow more spaces.
-# <
-(?:
-@
-[\040\t]*                    # Nab whitespace.
-(?:
-\(                              #  (
-[^\\\x80-\xff\n\015()] *                             #     normal*
-(?:                                 #       (
-(?:  \\ [^\x80-\xff]  |
-\(                            #  (
-[^\\\x80-\xff\n\015()] *                            #     normal*
-(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
-\)                           #                       )
-)    #         special
-[^\\\x80-\xff\n\015()] *                         #         normal*
-)*                                  #            )*
-\)                             #                )
-[\040\t]* )*    # If comment found, allow more spaces.
-(?:
-[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
-(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
-|
-\[                            # [
-(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
-\]                           #           ]
-)
-[\040\t]*                    # Nab whitespace.
-(?:
-\(                              #  (
-[^\\\x80-\xff\n\015()] *                             #     normal*
-(?:                                 #       (
-(?:  \\ [^\x80-\xff]  |
-\(                            #  (
-[^\\\x80-\xff\n\015()] *                            #     normal*
-(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
-\)                           #                       )
-)    #         special
-[^\\\x80-\xff\n\015()] *                         #         normal*
-)*                                  #            )*
-\)                             #                )
-[\040\t]* )*    # If comment found, allow more spaces.
-# optional trailing comments
-(?:
-\.
-[\040\t]*                    # Nab whitespace.
-(?:
-\(                              #  (
-[^\\\x80-\xff\n\015()] *                             #     normal*
-(?:                                 #       (
-(?:  \\ [^\x80-\xff]  |
-\(                            #  (
-[^\\\x80-\xff\n\015()] *                            #     normal*
-(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
-\)                           #                       )
-)    #         special
-[^\\\x80-\xff\n\015()] *                         #         normal*
-)*                                  #            )*
-\)                             #                )
-[\040\t]* )*    # If comment found, allow more spaces.
-(?:
-[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
-(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
-|
-\[                            # [
-(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
-\]                           #           ]
-)
-[\040\t]*                    # Nab whitespace.
-(?:
-\(                              #  (
-[^\\\x80-\xff\n\015()] *                             #     normal*
-(?:                                 #       (
-(?:  \\ [^\x80-\xff]  |
-\(                            #  (
-[^\\\x80-\xff\n\015()] *                            #     normal*
-(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
-\)                           #                       )
-)    #         special
-[^\\\x80-\xff\n\015()] *                         #         normal*
-)*                                  #            )*
-\)                             #                )
-[\040\t]* )*    # If comment found, allow more spaces.
-# optional trailing comments
-)*
-(?: ,
-[\040\t]*                    # Nab whitespace.
-(?:
-\(                              #  (
-[^\\\x80-\xff\n\015()] *                             #     normal*
-(?:                                 #       (
-(?:  \\ [^\x80-\xff]  |
-\(                            #  (
-[^\\\x80-\xff\n\015()] *                            #     normal*
-(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
-\)                           #                       )
-)    #         special
-[^\\\x80-\xff\n\015()] *                         #         normal*
-)*                                  #            )*
-\)                             #                )
-[\040\t]* )*    # If comment found, allow more spaces.
-@
-[\040\t]*                    # Nab whitespace.
-(?:
-\(                              #  (
-[^\\\x80-\xff\n\015()] *                             #     normal*
-(?:                                 #       (
-(?:  \\ [^\x80-\xff]  |
-\(                            #  (
-[^\\\x80-\xff\n\015()] *                            #     normal*
-(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
-\)                           #                       )
-)    #         special
-[^\\\x80-\xff\n\015()] *                         #         normal*
-)*                                  #            )*
-\)                             #                )
-[\040\t]* )*    # If comment found, allow more spaces.
-(?:
-[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
-(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
-|
-\[                            # [
-(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
-\]                           #           ]
-)
-[\040\t]*                    # Nab whitespace.
-(?:
-\(                              #  (
-[^\\\x80-\xff\n\015()] *                             #     normal*
-(?:                                 #       (
-(?:  \\ [^\x80-\xff]  |
-\(                            #  (
-[^\\\x80-\xff\n\015()] *                            #     normal*
-(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
-\)                           #                       )
-)    #         special
-[^\\\x80-\xff\n\015()] *                         #         normal*
-)*                                  #            )*
-\)                             #                )
-[\040\t]* )*    # If comment found, allow more spaces.
-# optional trailing comments
-(?:
-\.
-[\040\t]*                    # Nab whitespace.
-(?:
-\(                              #  (
-[^\\\x80-\xff\n\015()] *                             #     normal*
-(?:                                 #       (
-(?:  \\ [^\x80-\xff]  |
-\(                            #  (
-[^\\\x80-\xff\n\015()] *                            #     normal*
-(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
-\)                           #                       )
-)    #         special
-[^\\\x80-\xff\n\015()] *                         #         normal*
-)*                                  #            )*
-\)                             #                )
-[\040\t]* )*    # If comment found, allow more spaces.
-(?:
-[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
-(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
-|
-\[                            # [
-(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
-\]                           #           ]
-)
-[\040\t]*                    # Nab whitespace.
-(?:
-\(                              #  (
-[^\\\x80-\xff\n\015()] *                             #     normal*
-(?:                                 #       (
-(?:  \\ [^\x80-\xff]  |
-\(                            #  (
-[^\\\x80-\xff\n\015()] *                            #     normal*
-(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
-\)                           #                       )
-)    #         special
-[^\\\x80-\xff\n\015()] *                         #         normal*
-)*                                  #            )*
-\)                             #                )
-[\040\t]* )*    # If comment found, allow more spaces.
-# optional trailing comments
-)*
-)*  # additional domains
-:
-[\040\t]*                    # Nab whitespace.
-(?:
-\(                              #  (
-[^\\\x80-\xff\n\015()] *                             #     normal*
-(?:                                 #       (
-(?:  \\ [^\x80-\xff]  |
-\(                            #  (
-[^\\\x80-\xff\n\015()] *                            #     normal*
-(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
-\)                           #                       )
-)    #         special
-[^\\\x80-\xff\n\015()] *                         #         normal*
-)*                                  #            )*
-\)                             #                )
-[\040\t]* )*    # If comment found, allow more spaces.
-# optional trailing comments
-)?     #       optional route
-(?:
-[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
-(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
-# Atom
-|                       #  or
-"                                     # "
-[^\\\x80-\xff\n\015"] *                            #   normal
-(?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
-"                                     #        "
-# Quoted string
-)
-[\040\t]*                    # Nab whitespace.
-(?:
-\(                              #  (
-[^\\\x80-\xff\n\015()] *                             #     normal*
-(?:                                 #       (
-(?:  \\ [^\x80-\xff]  |
-\(                            #  (
-[^\\\x80-\xff\n\015()] *                            #     normal*
-(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
-\)                           #                       )
-)    #         special
-[^\\\x80-\xff\n\015()] *                         #         normal*
-)*                                  #            )*
-\)                             #                )
-[\040\t]* )*    # If comment found, allow more spaces.
-(?:
-\.
-[\040\t]*                    # Nab whitespace.
-(?:
-\(                              #  (
-[^\\\x80-\xff\n\015()] *                             #     normal*
-(?:                                 #       (
-(?:  \\ [^\x80-\xff]  |
-\(                            #  (
-[^\\\x80-\xff\n\015()] *                            #     normal*
-(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
-\)                           #                       )
-)    #         special
-[^\\\x80-\xff\n\015()] *                         #         normal*
-)*                                  #            )*
-\)                             #                )
-[\040\t]* )*    # If comment found, allow more spaces.
-(?:
-[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
-(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
-# Atom
-|                       #  or
-"                                     # "
-[^\\\x80-\xff\n\015"] *                            #   normal
-(?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
-"                                     #        "
-# Quoted string
-)
-[\040\t]*                    # Nab whitespace.
-(?:
-\(                              #  (
-[^\\\x80-\xff\n\015()] *                             #     normal*
-(?:                                 #       (
-(?:  \\ [^\x80-\xff]  |
-\(                            #  (
-[^\\\x80-\xff\n\015()] *                            #     normal*
-(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
-\)                           #                       )
-)    #         special
-[^\\\x80-\xff\n\015()] *                         #         normal*
-)*                                  #            )*
-\)                             #                )
-[\040\t]* )*    # If comment found, allow more spaces.
-# additional words
-)*
-@
-[\040\t]*                    # Nab whitespace.
-(?:
-\(                              #  (
-[^\\\x80-\xff\n\015()] *                             #     normal*
-(?:                                 #       (
-(?:  \\ [^\x80-\xff]  |
-\(                            #  (
-[^\\\x80-\xff\n\015()] *                            #     normal*
-(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
-\)                           #                       )
-)    #         special
-[^\\\x80-\xff\n\015()] *                         #         normal*
-)*                                  #            )*
-\)                             #                )
-[\040\t]* )*    # If comment found, allow more spaces.
-(?:
-[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
-(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
-|
-\[                            # [
-(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
-\]                           #           ]
-)
-[\040\t]*                    # Nab whitespace.
-(?:
-\(                              #  (
-[^\\\x80-\xff\n\015()] *                             #     normal*
-(?:                                 #       (
-(?:  \\ [^\x80-\xff]  |
-\(                            #  (
-[^\\\x80-\xff\n\015()] *                            #     normal*
-(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
-\)                           #                       )
-)    #         special
-[^\\\x80-\xff\n\015()] *                         #         normal*
-)*                                  #            )*
-\)                             #                )
-[\040\t]* )*    # If comment found, allow more spaces.
-# optional trailing comments
-(?:
-\.
-[\040\t]*                    # Nab whitespace.
-(?:
-\(                              #  (
-[^\\\x80-\xff\n\015()] *                             #     normal*
-(?:                                 #       (
-(?:  \\ [^\x80-\xff]  |
-\(                            #  (
-[^\\\x80-\xff\n\015()] *                            #     normal*
-(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
-\)                           #                       )
-)    #         special
-[^\\\x80-\xff\n\015()] *                         #         normal*
-)*                                  #            )*
-\)                             #                )
-[\040\t]* )*    # If comment found, allow more spaces.
-(?:
-[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
-(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
-|
-\[                            # [
-(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
-\]                           #           ]
-)
-[\040\t]*                    # Nab whitespace.
-(?:
-\(                              #  (
-[^\\\x80-\xff\n\015()] *                             #     normal*
-(?:                                 #       (
-(?:  \\ [^\x80-\xff]  |
-\(                            #  (
-[^\\\x80-\xff\n\015()] *                            #     normal*
-(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
-\)                           #                       )
-)    #         special
-[^\\\x80-\xff\n\015()] *                         #         normal*
-)*                                  #            )*
-\)                             #                )
-[\040\t]* )*    # If comment found, allow more spaces.
-# optional trailing comments
-)*
-#       address spec
->                    #                 >
-# name and address
-)
-/x
-    Alan Other <user\@dom.ain>
-    <user\@dom.ain>
-    user\@dom.ain
-    \"A. Other\" <user.1234\@dom.ain> (a comment)
-    A. Other <user.1234\@dom.ain> (a comment)
-    \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
-    A missing angle <user\@some.where
-    *** Failers
-    The quick brown fox
-
-/abc\0def\00pqr\000xyz\0000AB/
-    abc\0def\00pqr\000xyz\0000AB
-    abc456 abc\0def\00pqr\000xyz\0000ABCDE
-
-/abc\x0def\x00pqr\x000xyz\x0000AB/
-    abc\x0def\x00pqr\x000xyz\x0000AB
-    abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE
-
-/^[\000-\037]/
-    \0A
-    \01B
-    \037C
-
-/\0*/
-    \0\0\0\0
-
-/A\x0{2,3}Z/
-    The A\x0\x0Z
-    An A\0\x0\0Z
-    *** Failers
-    A\0Z
-    A\0\x0\0\x0Z
-
-/^(cow|)\1(bell)/
-    cowcowbell
-    bell
-    *** Failers
-    cowbell
-
-/^\s/
-    \040abc
-    \x0cabc
-    \nabc
-    \rabc
-    \tabc
-    *** Failers
-    abc
-
-/^a    b
-    \f  c/x
-    abc
-
-/^(a|)\1*b/
-    ab
-    aaaab
-    b
-    *** Failers
-    acb
-
-/^(a|)\1+b/
-    aab
-    aaaab
-    b
-    *** Failers
-    ab
-
-/^(a|)\1?b/
-    ab
-    aab
-    b
-    *** Failers
-    acb
-
-/^(a|)\1{2}b/
-    aaab
-    b
-    *** Failers
-    ab
-    aab
-    aaaab
-
-/^(a|)\1{2,3}b/
-    aaab
-    aaaab
-    b
-    *** Failers
-    ab
-    aab
-    aaaaab
-
-/ab{1,3}bc/
-    abbbbc
-    abbbc
-    abbc
-    *** Failers
-    abc
-    abbbbbc
-
-/([^.]*)\.([^:]*):[T ]+(.*)/
-    track1.title:TBlah blah blah
-
-/([^.]*)\.([^:]*):[T ]+(.*)/i
-    track1.title:TBlah blah blah
-
-/([^.]*)\.([^:]*):[t ]+(.*)/i
-    track1.title:TBlah blah blah
-
-/^[W-c]+$/
-    WXY_^abc
-    *** Failers
-    wxy
-
-/^[W-c]+$/i
-    WXY_^abc
-    wxy_^ABC
-
-/^[\x3f-\x5F]+$/i
-    WXY_^abc
-    wxy_^ABC
-
-/^abc$/m
-    abc
-    qqq\nabc
-    abc\nzzz
-    qqq\nabc\nzzz
-
-/^abc$/
-    abc
-    *** Failers
-    qqq\nabc
-    abc\nzzz
-    qqq\nabc\nzzz
-
-/\Aabc\Z/m
-    abc
-    abc\n 
-    *** Failers
-    qqq\nabc
-    abc\nzzz
-    qqq\nabc\nzzz
-    
-/\A(.)*\Z/s
-    abc\ndef
-
-/\A(.)*\Z/m
-    *** Failers
-    abc\ndef
-
-/(?:b)|(?::+)/
-    b::c
-    c::b
-
-/[-az]+/
-    az-
-    *** Failers
-    b
-
-/[az-]+/
-    za-
-    *** Failers
-    b
-
-/[a\-z]+/
-    a-z
-    *** Failers
-    b
-
-/[a-z]+/
-    abcdxyz
-
-/[\d-]+/
-    12-34
-    *** Failers
-    aaa
-
-/[\d-z]+/
-    12-34z
-    *** Failers
-    aaa
-
-/\x5c/
-    \\
-
-/\x20Z/
-    the Zoo
-    *** Failers
-    Zulu
-
-/(abc)\1/i
-    abcabc
-    ABCabc
-    abcABC
-
-/ab{3cd/
-    ab{3cd
-
-/ab{3,cd/
-    ab{3,cd
-
-/ab{3,4a}cd/
-    ab{3,4a}cd
-
-/{4,5a}bc/
-    {4,5a}bc
-
-/abc$/
-    abc
-    abc\n
-    *** Failers
-    abc\ndef
-
-/(abc)\123/
-    abc\x53
-
-/(abc)\223/
-    abc\x93
-
-/(abc)\323/
-    abc\xd3
-
-/(abc)\100/
-    abc\x40
-    abc\100
-
-/(abc)\1000/
-    abc\x400
-    abc\x40\x30
-    abc\1000
-    abc\100\x30
-    abc\100\060
-    abc\100\60
-
-/abc\81/
-    abc\081
-    abc\0\x38\x31
-
-/abc\91/
-    abc\091
-    abc\0\x39\x31
-
-/(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\12\123/
-    abcdefghijkllS
-
-/(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
-    abcdefghijk\12S
-
-/ab\idef/
-    abidef
-
-/a{0}bc/
-    bc
-
-/(a|(bc)){0,0}?xyz/
-    xyz
-
-/abc[\10]de/
-    abc\010de
-
-/abc[\1]de/
-    abc\1de
-
-/(abc)[\1]de/
-    abc\1de
-
-/(?s)a.b/
-    a\nb
-
-/^([^a])([^\b])([^c]*)([^d]{3,4})/
-    baNOTccccd
-    baNOTcccd
-    baNOTccd
-    bacccd
-    *** Failers
-    anything
-    b\bc   
-    baccd
-
-/[^a]/
-    Abc
-  
-/[^a]/i
-    Abc 
-
-/[^a]+/
-    AAAaAbc
-  
-/[^a]+/i
-    AAAaAbc 
-
-/[^a]+/
-    bbb\nccc
-   
-/[^k]$/
-    abc
-    *** Failers
-    abk   
-   
-/[^k]{2,3}$/
-    abc
-    kbc
-    kabc 
-    *** Failers
-    abk
-    akb
-    akk 
-
-/^\d{8,}\@.+[^k]$/
-    12345678\@a.b.c.d
-    123456789\@x.y.z
-    *** Failers
-    12345678\@x.y.uk
-    1234567\@a.b.c.d       
-
-/(a)\1{8,}/
-    aaaaaaaaa
-    aaaaaaaaaa
-    *** Failers
-    aaaaaaa   
-
-/[^a]/
-    aaaabcd
-    aaAabcd 
-
-/[^a]/i
-    aaaabcd
-    aaAabcd 
-
-/[^az]/
-    aaaabcd
-    aaAabcd 
-
-/[^az]/i
-    aaaabcd
-    aaAabcd 
-
-/\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/
- \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
-
-/P[^*]TAIRE[^*]{1,6}?LL/
-    xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
-
-/P[^*]TAIRE[^*]{1,}?LL/
-    xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
-
-/(\.\d\d[1-9]?)\d+/
-    1.230003938
-    1.875000282   
-    1.235  
-                  
-/(\.\d\d((?=0)|\d(?=\d)))/
-    1.230003938      
-    1.875000282
-    *** Failers 
-    1.235 
-    
-/a(?)b/
-    ab 
-/\b(foo)\s+(\w+)/i
-    Food is on the foo table
-    
-/foo(.*)bar/
-    The food is under the bar in the barn.
-    
-/foo(.*?)bar/  
-    The food is under the bar in the barn.
-
-/(.*)(\d*)/
-    I have 2 numbers: 53147
-    
-/(.*)(\d+)/
-    I have 2 numbers: 53147
-/(.*?)(\d*)/
-    I have 2 numbers: 53147
-
-/(.*?)(\d+)/
-    I have 2 numbers: 53147
-
-/(.*)(\d+)$/
-    I have 2 numbers: 53147
-
-/(.*?)(\d+)$/
-    I have 2 numbers: 53147
-
-/(.*)\b(\d+)$/
-    I have 2 numbers: 53147
-
-/(.*\D)(\d+)$/
-    I have 2 numbers: 53147
-
-/^\D*(?!123)/
-    ABC123
-     
-/^(\D*)(?=\d)(?!123)/
-    ABC445
-    *** Failers
-    ABC123
-    
-/^[W-]46]/
-    W46]789 
-    -46]789
-    *** Failers
-    Wall
-    Zebra
-    42
-    [abcd] 
-    ]abcd[
-       
-/^[W-\]46]/
-    W46]789 
-    Wall
-    Zebra
-    Xylophone  
-    42
-    [abcd] 
-    ]abcd[
-    \\backslash 
-    *** Failers
-    -46]789
-    well
-    
-/\d\d\/\d\d\/\d\d\d\d/
-    01/01/2000
-
-/word (?:[a-zA-Z0-9]+ ){0,10}otherword/
-  word cat dog elephant mussel cow horse canary baboon snake shark otherword
-  word cat dog elephant mussel cow horse canary baboon snake shark
-
-/word (?:[a-zA-Z0-9]+ ){0,300}otherword/
-  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
-
-/^(a){0,0}/
-    bcd
-    abc
-    aab     
-
-/^(a){0,1}/
-    bcd
-    abc
-    aab  
-
-/^(a){0,2}/
-    bcd
-    abc
-    aab  
-
-/^(a){0,3}/
-    bcd
-    abc
-    aab
-    aaa   
-
-/^(a){0,}/
-    bcd
-    abc
-    aab
-    aaa
-    aaaaaaaa    
-
-/^(a){1,1}/
-    bcd
-    abc
-    aab  
-
-/^(a){1,2}/
-    bcd
-    abc
-    aab  
-
-/^(a){1,3}/
-    bcd
-    abc
-    aab
-    aaa   
-
-/^(a){1,}/
-    bcd
-    abc
-    aab
-    aaa
-    aaaaaaaa    
-
-/.*\.gif/
-    borfle\nbib.gif\nno
-
-/.{0,}\.gif/
-    borfle\nbib.gif\nno
-
-/.*\.gif/m
-    borfle\nbib.gif\nno
-
-/.*\.gif/s
-    borfle\nbib.gif\nno
-
-/.*\.gif/ms
-    borfle\nbib.gif\nno
-    
-/.*$/
-    borfle\nbib.gif\nno
-
-/.*$/m
-    borfle\nbib.gif\nno
-
-/.*$/s
-    borfle\nbib.gif\nno
-
-/.*$/ms
-    borfle\nbib.gif\nno
-    
-/.*$/
-    borfle\nbib.gif\nno\n
-
-/.*$/m
-    borfle\nbib.gif\nno\n
-
-/.*$/s
-    borfle\nbib.gif\nno\n
-
-/.*$/ms
-    borfle\nbib.gif\nno\n
-    
-/(.*X|^B)/
-    abcde\n1234Xyz
-    BarFoo 
-    *** Failers
-    abcde\nBar  
-
-/(.*X|^B)/m
-    abcde\n1234Xyz
-    BarFoo 
-    abcde\nBar  
-
-/(.*X|^B)/s
-    abcde\n1234Xyz
-    BarFoo 
-    *** Failers
-    abcde\nBar  
-
-/(.*X|^B)/ms
-    abcde\n1234Xyz
-    BarFoo 
-    abcde\nBar  
-
-/(?s)(.*X|^B)/
-    abcde\n1234Xyz
-    BarFoo 
-    *** Failers 
-    abcde\nBar  
-
-/(?s:.*X|^B)/
-    abcde\n1234Xyz
-    BarFoo 
-    *** Failers 
-    abcde\nBar  
-
-/^.*B/
-    **** Failers
-    abc\nB
-     
-/(?s)^.*B/
-    abc\nB
-
-/(?m)^.*B/
-    abc\nB
-     
-/(?ms)^.*B/
-    abc\nB
-
-/(?ms)^B/
-    abc\nB
-
-/(?s)B$/
-    B\n
-
-/^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
-    123456654321
-  
-/^\d\d\d\d\d\d\d\d\d\d\d\d/
-    123456654321 
-
-/^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/
-    123456654321
-  
-/^[abc]{12}/
-    abcabcabcabc
-    
-/^[a-c]{12}/
-    abcabcabcabc
-    
-/^(a|b|c){12}/
-    abcabcabcabc 
-
-/^[abcdefghijklmnopqrstuvwxy0123456789]/
-    n
-    *** Failers 
-    z 
-
-/abcde{0,0}/
-    abcd
-    *** Failers
-    abce  
-
-/ab[cd]{0,0}e/
-    abe
-    *** Failers
-    abcde 
-    
-/ab(c){0,0}d/
-    abd
-    *** Failers
-    abcd   
-
-/a(b*)/
-    a
-    ab
-    abbbb
-    *** Failers
-    bbbbb    
-    
-/ab\d{0}e/
-    abe
-    *** Failers
-    ab1e   
-    
-/"([^\\"]+|\\.)*"/
-    the \"quick\" brown fox
-    \"the \\\"quick\\\" brown fox\" 
-
-/.*?/g+
-    abc
-  
-/\b/g+
-    abc 
-
-/\b/+g
-    abc 
-
-//g
-    abc
-
-/<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
-  <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>
-
-/a[^a]b/
-    acb
-    a\nb
-    
-/a.b/
-    acb
-    *** Failers 
-    a\nb   
-    
-/a[^a]b/s
-    acb
-    a\nb  
-    
-/a.b/s
-    acb
-    a\nb  
-
-/^(b+?|a){1,2}?c/
-    bac
-    bbac
-    bbbac
-    bbbbac
-    bbbbbac 
-
-/^(b+|a){1,2}?c/
-    bac
-    bbac
-    bbbac
-    bbbbac
-    bbbbbac 
-    
-/(?!\A)x/m
-    x\nb\n
-    a\bx\n  
-    
-/\x0{ab}/
-    \0{ab} 
-
-/(A|B)*?CD/
-    CD 
-    
-/(A|B)*CD/
-    CD 
-
-/(AB)*?\1/
-    ABABAB
-
-/(AB)*\1/
-    ABABAB
-    
-/(?<!bar)foo/
-    foo
-    catfood
-    arfootle
-    rfoosh
-    *** Failers
-    barfoo
-    towbarfoo
-
-/\w{3}(?<!bar)foo/
-    catfood
-    *** Failers
-    foo
-    barfoo
-    towbarfoo
-
-/(?<=(foo)a)bar/
-    fooabar
-    *** Failers
-    bar
-    foobbar
-      
-/\Aabc\z/m
-    abc
-    *** Failers
-    abc\n   
-    qqq\nabc
-    abc\nzzz
-    qqq\nabc\nzzz
-
-"(?>.*/)foo"
-    /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/
-
-"(?>.*/)foo"
-    /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
-
-/(?>(\.\d\d[1-9]?))\d+/
-    1.230003938
-    1.875000282
-    *** Failers 
-    1.235 
-
-/^((?>\w+)|(?>\s+))*$/
-    now is the time for all good men to come to the aid of the party
-    *** Failers
-    this is not a line with only words and spaces!
-    
-/(\d+)(\w)/
-    12345a
-    12345+ 
-
-/((?>\d+))(\w)/
-    12345a
-    *** Failers
-    12345+ 
-
-/(?>a+)b/
-    aaab
-
-/((?>a+)b)/
-    aaab
-
-/(?>(a+))b/
-    aaab
-
-/(?>b)+/
-    aaabbbccc
-
-/(?>a+|b+|c+)*c/
-    aaabbbbccccd
-
-/((?>[^()]+)|\([^()]*\))+/
-    ((abc(ade)ufh()()x
-    
-/\(((?>[^()]+)|\([^()]+\))+\)/ 
-    (abc)
-    (abc(def)xyz)
-    *** Failers
-    ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa   
-
-/a(?-i)b/i
-    ab
-    Ab
-    *** Failers 
-    aB
-    AB
-        
-/(a (?x)b c)d e/
-    a bcd e
-    *** Failers
-    a b cd e
-    abcd e   
-    a bcde 
-/(a b(?x)c d (?-x)e f)/
-    a bcde f
-    *** Failers
-    abcdef  
-
-/(a(?i)b)c/
-    abc
-    aBc
-    *** Failers
-    abC
-    aBC  
-    Abc
-    ABc
-    ABC
-    AbC
-    
-/a(?i:b)c/
-    abc
-    aBc
-    *** Failers 
-    ABC
-    abC
-    aBC
-    
-/a(?i:b)*c/
-    aBc
-    aBBc
-    *** Failers 
-    aBC
-    aBBC
-    
-/a(?=b(?i)c)\w\wd/
-    abcd
-    abCd
-    *** Failers
-    aBCd
-    abcD     
-    
-/(?s-i:more.*than).*million/i
-    more than million
-    more than MILLION
-    more \n than Million 
-    *** Failers
-    MORE THAN MILLION    
-    more \n than \n million 
-
-/(?:(?s-i)more.*than).*million/i
-    more than million
-    more than MILLION
-    more \n than Million 
-    *** Failers
-    MORE THAN MILLION    
-    more \n than \n million 
-    
-/(?>a(?i)b+)+c/ 
-    abc
-    aBbc
-    aBBc 
-    *** Failers
-    Abc
-    abAb    
-    abbC 
-    
-/(?=a(?i)b)\w\wc/
-    abc
-    aBc
-    *** Failers
-    Ab 
-    abC
-    aBC     
-    
-/(?<=a(?i)b)(\w\w)c/
-    abxxc
-    aBxxc
-    *** Failers
-    Abxxc
-    ABxxc
-    abxxC      
-
-/(?:(a)|b)(?(1)A|B)/
-    aA
-    bB
-    *** Failers
-    aB
-    bA    
-
-/^(a)?(?(1)a|b)+$/
-    aa
-    b
-    bb  
-    *** Failers
-    ab   
-
-/^(?(?=abc)\w{3}:|\d\d)$/
-    abc:
-    12
-    *** Failers
-    123
-    xyz    
-
-/^(?(?!abc)\d\d|\w{3}:)$/
-    abc:
-    12
-    *** Failers
-    123
-    xyz    
-    
-/(?(?<=foo)bar|cat)/
-    foobar
-    cat
-    fcat
-    focat   
-    *** Failers
-    foocat  
-
-/(?(?<!foo)cat|bar)/
-    foobar
-    cat
-    fcat
-    focat   
-    *** Failers
-    foocat  
-
-/( \( )? [^()]+ (?(1) \) |) /x
-    abcd
-    (abcd)
-    the quick (abcd) fox
-    (abcd   
-
-/( \( )? [^()]+ (?(1) \) ) /x
-    abcd
-    (abcd)
-    the quick (abcd) fox
-    (abcd   
-
-/^(?(2)a|(1)(2))+$/
-    12
-    12a
-    12aa
-    *** Failers
-    1234    
-
-/((?i)blah)\s+\1/
-    blah blah
-    BLAH BLAH
-    Blah Blah
-    blaH blaH
-    *** Failers
-    blah BLAH
-    Blah blah      
-    blaH blah 
-
-/((?i)blah)\s+(?i:\1)/
-    blah blah
-    BLAH BLAH
-    Blah Blah
-    blaH blaH
-    blah BLAH
-    Blah blah      
-    blaH blah 
-
-/(?>a*)*/
-    a
-    aa
-    aaaa
-    
-/(abc|)+/
-    abc
-    abcabc
-    abcabcabc
-    xyz      
-
-/([a]*)*/
-    a
-    aaaaa 
-/([ab]*)*/
-    a
-    b
-    ababab
-    aaaabcde
-    bbbb    
-/([^a]*)*/
-    b
-    bbbb
-    aaa   
-/([^ab]*)*/
-    cccc
-    abab  
-/([a]*?)*/
-    a
-    aaaa 
-/([ab]*?)*/
-    a
-    b
-    abab
-    baba   
-/([^a]*?)*/
-    b
-    bbbb
-    aaa   
-/([^ab]*?)*/
-    c
-    cccc
-    baba   
-/(?>a*)*/
-    a
-    aaabcde 
-/((?>a*))*/
-    aaaaa
-    aabbaa 
-/((?>a*?))*/
-    aaaaa
-    aabbaa 
-
-/(?(?=[^a-z]+[a-z])  \d{2}-[a-z]{3}-\d{2}  |  \d{2}-\d{2}-\d{2} ) /x
-    12-sep-98
-    12-09-98
-    *** Failers
-    sep-12-98
-        
-/(?<=(foo))bar\1/
-    foobarfoo
-    foobarfootling 
-    *** Failers
-    foobar
-    barfoo   
-
-/(?i:saturday|sunday)/
-    saturday
-    sunday
-    Saturday
-    Sunday
-    SATURDAY
-    SUNDAY
-    SunDay
-    
-/(a(?i)bc|BB)x/
-    abcx
-    aBCx
-    bbx
-    BBx
-    *** Failers
-    abcX
-    aBCX
-    bbX
-    BBX               
-
-/^([ab](?i)[cd]|[ef])/
-    ac
-    aC
-    bD
-    elephant
-    Europe 
-    frog
-    France
-    *** Failers
-    Africa     
-
-/^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/
-    ab
-    aBd
-    xy
-    xY
-    zebra
-    Zambesi
-    *** Failers
-    aCD  
-    XY  
-
-/(?<=foo\n)^bar/m
-    foo\nbar
-    *** Failers
-    bar
-    baz\nbar   
-
-/(?<=(?<!foo)bar)baz/
-    barbaz
-    barbarbaz 
-    koobarbaz 
-    *** Failers
-    baz
-    foobarbaz 
-
-/The case of aaaaaa is missed out below because I think Perl 5.005_02 gets/
-/it wrong; it sets $1 to aaa rather than aa. Compare the following test,/
-/where it does set $1 to aa when matching aaaaaa./
-
-/^(a\1?){4}$/
-    a
-    aa
-    aaa
-    aaaa
-    aaaaa
-    aaaaaaa
-    aaaaaaaa
-    aaaaaaaaa
-    aaaaaaaaaa
-    aaaaaaaaaaa
-    aaaaaaaaaaaa
-    aaaaaaaaaaaaa
-    aaaaaaaaaaaaaa
-    aaaaaaaaaaaaaaa
-    aaaaaaaaaaaaaaaa               
-
-/^(a\1?)(a\1?)(a\2?)(a\3?)$/
-    a
-    aa
-    aaa
-    aaaa
-    aaaaa
-    aaaaaa
-    aaaaaaa
-    aaaaaaaa
-    aaaaaaaaa
-    aaaaaaaaaa
-    aaaaaaaaaaa
-    aaaaaaaaaaaa
-    aaaaaaaaaaaaa
-    aaaaaaaaaaaaaa
-    aaaaaaaaaaaaaaa
-    aaaaaaaaaaaaaaaa               
-
-/The following tests are taken from the Perl 5.005 test suite; some of them/
-/are compatible with 5.004, but I'd rather not have to sort them out./
-
-/abc/
-    abc
-    xabcy
-    ababc
-    *** Failers
-    xbc
-    axc
-    abx
-
-/ab*c/
-    abc
-
-/ab*bc/
-    abc
-    abbc
-    abbbbc
-
-/.{1}/
-    abbbbc
-
-/.{3,4}/
-    abbbbc
-
-/ab{0,}bc/
-    abbbbc
-
-/ab+bc/
-    abbc
-    *** Failers
-    abc
-    abq
-
-/ab{1,}bc/
-
-/ab+bc/
-    abbbbc
-
-/ab{1,}bc/
-    abbbbc
-
-/ab{1,3}bc/
-    abbbbc
-
-/ab{3,4}bc/
-    abbbbc
-
-/ab{4,5}bc/
-    *** Failers
-    abq
-    abbbbc
-
-/ab?bc/
-    abbc
-    abc
-
-/ab{0,1}bc/
-    abc
-
-/ab?bc/
-
-/ab?c/
-    abc
-
-/ab{0,1}c/
-    abc
-
-/^abc$/
-    abc
-    *** Failers
-    abbbbc
-    abcc
-
-/^abc/
-    abcc
-
-/^abc$/
-
-/abc$/
-    aabc
-    *** Failers
-    aabc
-    aabcd
-
-/^/
-    abc
-
-/$/
-    abc
-
-/a.c/
-    abc
-    axc
-
-/a.*c/
-    axyzc
-
-/a[bc]d/
-    abd
-    *** Failers
-    axyzd
-    abc
-
-/a[b-d]e/
-    ace
-
-/a[b-d]/
-    aac
-
-/a[-b]/
-    a-
-
-/a[b-]/
-    a-
-
-/a]/
-    a]
-
-/a[]]b/
-    a]b
-
-/a[^bc]d/
-    aed
-    *** Failers
-    abd
-    abd
-
-/a[^-b]c/
-    adc
-
-/a[^]b]c/
-    adc
-    *** Failers
-    a-c
-    a]c
-
-/\ba\b/
-    a-
-    -a
-    -a-
-
-/\by\b/
-    *** Failers
-    xy
-    yz
-    xyz
-
-/\Ba\B/
-    *** Failers
-    a-
-    -a
-    -a-
-
-/\By\b/
-    xy
-
-/\by\B/
-    yz
-
-/\By\B/
-    xyz
-
-/\w/
-    a
-
-/\W/
-    -
-    *** Failers
-    -
-    a
-
-/a\sb/
-    a b
-
-/a\Sb/
-    a-b
-    *** Failers
-    a-b
-    a b
-
-/\d/
-    1
-
-/\D/
-    -
-    *** Failers
-    -
-    1
-
-/[\w]/
-    a
-
-/[\W]/
-    -
-    *** Failers
-    -
-    a
-
-/a[\s]b/
-    a b
-
-/a[\S]b/
-    a-b
-    *** Failers
-    a-b
-    a b
-
-/[\d]/
-    1
-
-/[\D]/
-    -
-    *** Failers
-    -
-    1
-
-/ab|cd/
-    abc
-    abcd
-
-/()ef/
-    def
-
-/$b/
-
-/a\(b/
-    a(b
-
-/a\(*b/
-    ab
-    a((b
-
-/a\\b/
-    a\b
-
-/((a))/
-    abc
-
-/(a)b(c)/
-    abc
-
-/a+b+c/
-    aabbabc
-
-/a{1,}b{1,}c/
-    aabbabc
-
-/a.+?c/
-    abcabc
-
-/(a+|b)*/
-    ab
-
-/(a+|b){0,}/
-    ab
-
-/(a+|b)+/
-    ab
-
-/(a+|b){1,}/
-    ab
-
-/(a+|b)?/
-    ab
-
-/(a+|b){0,1}/
-    ab
-
-/[^ab]*/
-    cde
-
-/abc/
-    *** Failers
-    b
-    
-
-/a*/
-    
-
-/([abc])*d/
-    abbbcd
-
-/([abc])*bcd/
-    abcd
-
-/a|b|c|d|e/
-    e
-
-/(a|b|c|d|e)f/
-    ef
-
-/abcd*efg/
-    abcdefg
-
-/ab*/
-    xabyabbbz
-    xayabbbz
-
-/(ab|cd)e/
-    abcde
-
-/[abhgefdc]ij/
-    hij
-
-/^(ab|cd)e/
-
-/(abc|)ef/
-    abcdef
-
-/(a|b)c*d/
-    abcd
-
-/(ab|ab*)bc/
-    abc
-
-/a([bc]*)c*/
-    abc
-
-/a([bc]*)(c*d)/
-    abcd
-
-/a([bc]+)(c*d)/
-    abcd
-
-/a([bc]*)(c+d)/
-    abcd
-
-/a[bcd]*dcdcde/
-    adcdcde
-
-/a[bcd]+dcdcde/
-    *** Failers
-    abcde
-    adcdcde
-
-/(ab|a)b*c/
-    abc
-
-/((a)(b)c)(d)/
-    abcd
-
-/[a-zA-Z_][a-zA-Z0-9_]*/
-    alpha
-
-/^a(bc+|b[eh])g|.h$/
-    abh
-
-/(bc+d$|ef*g.|h?i(j|k))/
-    effgz
-    ij
-    reffgz
-    *** Failers
-    effg
-    bcdd
-
-/((((((((((a))))))))))/
-    a
-
-/((((((((((a))))))))))\10/
-    aa
-
-/(((((((((a)))))))))/
-    a
-
-/multiple words of text/
-    *** Failers
-    aa
-    uh-uh
-
-/multiple words/
-    multiple words, yeah
-
-/(.*)c(.*)/
-    abcde
-
-/\((.*), (.*)\)/
-    (a, b)
-
-/[k]/
-
-/abcd/
-    abcd
-
-/a(bc)d/
-    abcd
-
-/a[-]?c/
-    ac
-
-/(abc)\1/
-    abcabc
-
-/([a-c]*)\1/
-    abcabc
-
-/(a)|\1/
-    a
-    *** Failers
-    ab
-    x
-
-/(([a-c])b*?\2)*/
-    ababbbcbc
-
-/(([a-c])b*?\2){3}/
-    ababbbcbc
-
-/((\3|b)\2(a)x)+/
-    aaaxabaxbaaxbbax
-
-/((\3|b)\2(a)){2,}/
-    bbaababbabaaaaabbaaaabba
-
-/abc/i
-    ABC
-    XABCY
-    ABABC
-    *** Failers
-    aaxabxbaxbbx
-    XBC
-    AXC
-    ABX
-
-/ab*c/i
-    ABC
-
-/ab*bc/i
-    ABC
-    ABBC
-
-/ab*?bc/i
-    ABBBBC
-
-/ab{0,}?bc/i
-    ABBBBC
-
-/ab+?bc/i
-    ABBC
-
-/ab+bc/i
-    *** Failers
-    ABC
-    ABQ
-
-/ab{1,}bc/i
-
-/ab+bc/i
-    ABBBBC
-
-/ab{1,}?bc/i
-    ABBBBC
-
-/ab{1,3}?bc/i
-    ABBBBC
-
-/ab{3,4}?bc/i
-    ABBBBC
-
-/ab{4,5}?bc/i
-    *** Failers
-    ABQ
-    ABBBBC
-
-/ab??bc/i
-    ABBC
-    ABC
-
-/ab{0,1}?bc/i
-    ABC
-
-/ab??bc/i
-
-/ab??c/i
-    ABC
-
-/ab{0,1}?c/i
-    ABC
-
-/^abc$/i
-    ABC
-    *** Failers
-    ABBBBC
-    ABCC
-
-/^abc/i
-    ABCC
-
-/^abc$/i
-
-/abc$/i
-    AABC
-
-/^/i
-    ABC
-
-/$/i
-    ABC
-
-/a.c/i
-    ABC
-    AXC
-
-/a.*?c/i
-    AXYZC
-
-/a.*c/i
-    *** Failers
-    AABC
-    AXYZD
-
-/a[bc]d/i
-    ABD
-
-/a[b-d]e/i
-    ACE
-    *** Failers
-    ABC
-    ABD
-
-/a[b-d]/i
-    AAC
-
-/a[-b]/i
-    A-
-
-/a[b-]/i
-    A-
-
-/a]/i
-    A]
-
-/a[]]b/i
-    A]B
-
-/a[^bc]d/i
-    AED
-
-/a[^-b]c/i
-    ADC
-    *** Failers
-    ABD
-    A-C
-
-/a[^]b]c/i
-    ADC
-
-/ab|cd/i
-    ABC
-    ABCD
-
-/()ef/i
-    DEF
-
-/$b/i
-    *** Failers
-    A]C
-    B
-
-/a\(b/i
-    A(B
-
-/a\(*b/i
-    AB
-    A((B
-
-/a\\b/i
-    A\B
-
-/((a))/i
-    ABC
-
-/(a)b(c)/i
-    ABC
-
-/a+b+c/i
-    AABBABC
-
-/a{1,}b{1,}c/i
-    AABBABC
-
-/a.+?c/i
-    ABCABC
-
-/a.*?c/i
-    ABCABC
-
-/a.{0,5}?c/i
-    ABCABC
-
-/(a+|b)*/i
-    AB
-
-/(a+|b){0,}/i
-    AB
-
-/(a+|b)+/i
-    AB
-
-/(a+|b){1,}/i
-    AB
-
-/(a+|b)?/i
-    AB
-
-/(a+|b){0,1}/i
-    AB
-
-/(a+|b){0,1}?/i
-    AB
-
-/[^ab]*/i
-    CDE
-
-/abc/i
-
-/a*/i
-    
-
-/([abc])*d/i
-    ABBBCD
-
-/([abc])*bcd/i
-    ABCD
-
-/a|b|c|d|e/i
-    E
-
-/(a|b|c|d|e)f/i
-    EF
-
-/abcd*efg/i
-    ABCDEFG
-
-/ab*/i
-    XABYABBBZ
-    XAYABBBZ
-
-/(ab|cd)e/i
-    ABCDE
-
-/[abhgefdc]ij/i
-    HIJ
-
-/^(ab|cd)e/i
-    ABCDE
-
-/(abc|)ef/i
-    ABCDEF
-
-/(a|b)c*d/i
-    ABCD
-
-/(ab|ab*)bc/i
-    ABC
-
-/a([bc]*)c*/i
-    ABC
-
-/a([bc]*)(c*d)/i
-    ABCD
-
-/a([bc]+)(c*d)/i
-    ABCD
-
-/a([bc]*)(c+d)/i
-    ABCD
-
-/a[bcd]*dcdcde/i
-    ADCDCDE
-
-/a[bcd]+dcdcde/i
-
-/(ab|a)b*c/i
-    ABC
-
-/((a)(b)c)(d)/i
-    ABCD
-
-/[a-zA-Z_][a-zA-Z0-9_]*/i
-    ALPHA
-
-/^a(bc+|b[eh])g|.h$/i
-    ABH
-
-/(bc+d$|ef*g.|h?i(j|k))/i
-    EFFGZ
-    IJ
-    REFFGZ
-    *** Failers
-    ADCDCDE
-    EFFG
-    BCDD
-
-/((((((((((a))))))))))/i
-    A
-
-/((((((((((a))))))))))\10/i
-    AA
-
-/(((((((((a)))))))))/i
-    A
-
-/(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i
-    A
-
-/(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i
-    C
-
-/multiple words of text/i
-    *** Failers
-    AA
-    UH-UH
-
-/multiple words/i
-    MULTIPLE WORDS, YEAH
-
-/(.*)c(.*)/i
-    ABCDE
-
-/\((.*), (.*)\)/i
-    (A, B)
-
-/[k]/i
-
-/abcd/i
-    ABCD
-
-/a(bc)d/i
-    ABCD
-
-/a[-]?c/i
-    AC
-
-/(abc)\1/i
-    ABCABC
-
-/([a-c]*)\1/i
-    ABCABC
-
-/a(?!b)./
-    abad
-
-/a(?=d)./
-    abad
-
-/a(?=c|d)./
-    abad
-
-/a(?:b|c|d)(.)/
-    ace
-
-/a(?:b|c|d)*(.)/
-    ace
-
-/a(?:b|c|d)+?(.)/
-    ace
-    acdbcdbe
-
-/a(?:b|c|d)+(.)/
-    acdbcdbe
-
-/a(?:b|c|d){2}(.)/
-    acdbcdbe
-
-/a(?:b|c|d){4,5}(.)/
-    acdbcdbe
-
-/a(?:b|c|d){4,5}?(.)/
-    acdbcdbe
-
-/((foo)|(bar))*/
-    foobar
-
-/a(?:b|c|d){6,7}(.)/
-    acdbcdbe
-
-/a(?:b|c|d){6,7}?(.)/
-    acdbcdbe
-
-/a(?:b|c|d){5,6}(.)/
-    acdbcdbe
-
-/a(?:b|c|d){5,6}?(.)/
-    acdbcdbe
-
-/a(?:b|c|d){5,7}(.)/
-    acdbcdbe
-
-/a(?:b|c|d){5,7}?(.)/
-    acdbcdbe
-
-/a(?:b|(c|e){1,2}?|d)+?(.)/
-    ace
-
-/^(.+)?B/
-    AB
-
-/^([^a-z])|(\^)$/
-    .
-
-/^[<>]&/
-    <&OUT
-
-/^(a\1?){4}$/
-    aaaaaaaaaa
-    *** Failers
-    AB
-    aaaaaaaaa
-    aaaaaaaaaaa
-
-/^(a(?(1)\1)){4}$/
-    aaaaaaaaaa
-    *** Failers
-    aaaaaaaaa
-    aaaaaaaaaaa
-
-/(?:(f)(o)(o)|(b)(a)(r))*/
-    foobar
-
-/(?<=a)b/
-    ab
-    *** Failers
-    cb
-    b
-
-/(?<!c)b/
-    ab
-    b
-    b
-
-/(?:..)*a/
-    aba
-
-/(?:..)*?a/
-    aba
-
-/^(?:b|a(?=(.)))*\1/
-    abc
-
-/^(){3,5}/
-    abc
-
-/^(a+)*ax/
-    aax
-
-/^((a|b)+)*ax/
-    aax
-
-/^((a|bc)+)*ax/
-    aax
-
-/(a|x)*ab/
-    cab
-
-/(a)*ab/
-    cab
-
-/(?:(?i)a)b/
-    ab
-
-/((?i)a)b/
-    ab
-
-/(?:(?i)a)b/
-    Ab
-
-/((?i)a)b/
-    Ab
-
-/(?:(?i)a)b/
-    *** Failers
-    cb
-    aB
-
-/((?i)a)b/
-
-/(?i:a)b/
-    ab
-
-/((?i:a))b/
-    ab
-
-/(?i:a)b/
-    Ab
-
-/((?i:a))b/
-    Ab
-
-/(?i:a)b/
-    *** Failers
-    aB
-    aB
-
-/((?i:a))b/
-
-/(?:(?-i)a)b/i
-    ab
-
-/((?-i)a)b/i
-    ab
-
-/(?:(?-i)a)b/i
-    aB
-
-/((?-i)a)b/i
-    aB
-
-/(?:(?-i)a)b/i
-    *** Failers
-    aB
-    Ab
-
-/((?-i)a)b/i
-
-/(?:(?-i)a)b/i
-    aB
-
-/((?-i)a)b/i
-    aB
-
-/(?:(?-i)a)b/i
-    *** Failers
-    Ab
-    AB
-
-/((?-i)a)b/i
-
-/(?-i:a)b/i
-    ab
-
-/((?-i:a))b/i
-    ab
-
-/(?-i:a)b/i
-    aB
-
-/((?-i:a))b/i
-    aB
-
-/(?-i:a)b/i
-    *** Failers
-    AB
-    Ab
-
-/((?-i:a))b/i
-
-/(?-i:a)b/i
-    aB
-
-/((?-i:a))b/i
-    aB
-
-/(?-i:a)b/i
-    *** Failers
-    Ab
-    AB
-
-/((?-i:a))b/i
-
-/((?-i:a.))b/i
-    *** Failers
-    AB
-    a\nB
-
-/((?s-i:a.))b/i
-    a\nB
-
-/(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/
-    cabbbb
-
-/(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/
-    caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
-
-/(ab)\d\1/i
-    Ab4ab
-    ab4Ab
-
-/foo\w*\d{4}baz/
-    foobar1234baz
-
-/x(~~)*(?:(?:F)?)?/
-    x~~
-
-/^a(?#xxx){3}c/
-    aaac
-
-/^a (?#xxx) (?#yyy) {3}c/x
-    aaac
-
-/(?<![cd])b/
-    *** Failers
-    B\nB
-    dbcb
-
-/(?<![cd])[ab]/
-    dbaacb
-
-/(?<!(c|d))b/
-
-/(?<!(c|d))[ab]/
-    dbaacb
-
-/(?<!cd)[ab]/
-    cdaccb
-
-/^(?:a?b?)*$/
-    \
-    a
-    ab
-    aaa   
-    *** Failers
-    dbcb
-    a--
-    aa-- 
-
-/((?s)^a(.))((?m)^b$)/
-    a\nb\nc\n
-
-/((?m)^b$)/
-    a\nb\nc\n
-
-/(?m)^b/
-    a\nb\n
-
-/(?m)^(b)/
-    a\nb\n
-
-/((?m)^b)/
-    a\nb\n
-
-/\n((?m)^b)/
-    a\nb\n
-
-/((?s).)c(?!.)/
-    a\nb\nc\n
-    a\nb\nc\n
-
-/((?s)b.)c(?!.)/
-    a\nb\nc\n
-    a\nb\nc\n
-
-/^b/
-
-/()^b/
-    *** Failers
-    a\nb\nc\n
-    a\nb\nc\n
-
-/((?m)^b)/
-    a\nb\nc\n
-
-/(x)?(?(1)a|b)/
-    *** Failers
-    a
-    a
-
-/(x)?(?(1)b|a)/
-    a
-
-/()?(?(1)b|a)/
-    a
-
-/()(?(1)b|a)/
-
-/()?(?(1)a|b)/
-    a
-
-/^(\()?blah(?(1)(\)))$/
-    (blah)
-    blah
-    *** Failers
-    a
-    blah)
-    (blah
-
-/^(\(+)?blah(?(1)(\)))$/
-    (blah)
-    blah
-    *** Failers
-    blah)
-    (blah
-
-/(?(?!a)a|b)/
-
-/(?(?!a)b|a)/
-    a
-
-/(?(?=a)b|a)/
-    *** Failers
-    a
-    a
-
-/(?(?=a)a|b)/
-    a
-
-/(?=(a+?))(\1ab)/
-    aaab
-
-/^(?=(a+?))\1ab/
-
-/(\w+:)+/
-    one:
-
-/$(?<=^(a))/
-    a
-
-/(?=(a+?))(\1ab)/
-    aaab
-
-/^(?=(a+?))\1ab/
-    *** Failers
-    aaab
-    aaab
-
-/([\w:]+::)?(\w+)$/
-    abcd
-    xy:z:::abcd
-
-/^[^bcd]*(c+)/
-    aexycd
-
-/(a*)b+/
-    caab
-
-/([\w:]+::)?(\w+)$/
-    abcd
-    xy:z:::abcd
-    *** Failers
-    abcd:
-    abcd:
-
-/^[^bcd]*(c+)/
-    aexycd
-
-/(>a+)ab/
-
-/(?>a+)b/
-    aaab
-
-/([[:]+)/
-    a:[b]:
-
-/([[=]+)/
-    a=[b]=
-
-/([[.]+)/
-    a.[b].
-
-/((?>a+)b)/
-    aaab
-
-/(?>(a+))b/
-    aaab
-
-/((?>[^()]+)|\([^()]*\))+/
-    ((abc(ade)ufh()()x
-
-/a\Z/
-    *** Failers
-    aaab
-    a\nb\n
-
-/b\Z/
-    a\nb\n
-
-/b\z/
-
-/b\Z/
-    a\nb
-
-/b\z/
-    a\nb
-    *** Failers
-    
-/^(?>(?(1)\.|())[^\W_](?>[a-z0-9-]*[^\W_])?)+$/
-    a
-    abc
-    a-b
-    0-9 
-    a.b
-    5.6.7  
-    the.quick.brown.fox
-    a100.b200.300c  
-    12-ab.1245 
-    *** Failers
-    \
-    .a
-    -a
-    a-
-    a.  
-    a_b 
-    a.-
-    a..  
-    ab..bc 
-    the.quick.brown.fox-
-    the.quick.brown.fox.
-    the.quick.brown.fox_
-    the.quick.brown.fox+       
-
-/(?>.*)(?<=(abcd|wxyz))/
-    alphabetabcd
-    endingwxyz
-    *** Failers
-    a rather long string that doesn't end with one of them
-
-/word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/
-    word cat dog elephant mussel cow horse canary baboon snake shark otherword
-    word cat dog elephant mussel cow horse canary baboon snake shark
-  
-/word (?>[a-zA-Z0-9]+ ){0,30}otherword/
-    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
-
-/(?<=\d{3}(?!999))foo/
-    999foo
-    123999foo 
-    *** Failers
-    123abcfoo
-    
-/(?<=(?!...999)\d{3})foo/
-    999foo
-    123999foo 
-    *** Failers
-    123abcfoo
-
-/(?<=\d{3}(?!999)...)foo/
-    123abcfoo
-    123456foo 
-    *** Failers
-    123999foo  
-    
-/(?<=\d{3}...)(?<!999)foo/
-    123abcfoo   
-    123456foo 
-    *** Failers
-    123999foo  
-
-/<a[\s]+href[\s]*=[\s]*          # find <a href=
- ([\"\'])?                       # find single or double quote
- (?(1) (.*?)\1 | ([^\s]+))       # if quote found, match up to next matching
-                                 # quote, otherwise match up to next space
-/isx
-    <a href=abcd xyz
-    <a href=\"abcd xyz pqr\" cats
-    <a href=\'abcd xyz pqr\' cats
-
-/<a\s+href\s*=\s*                # find <a href=
- (["'])?                         # find single or double quote
- (?(1) (.*?)\1 | (\S+))          # if quote found, match up to next matching
-                                 # quote, otherwise match up to next space
-/isx
-    <a href=abcd xyz
-    <a href=\"abcd xyz pqr\" cats
-    <a href       =       \'abcd xyz pqr\' cats
-
-/<a\s+href(?>\s*)=(?>\s*)        # find <a href=
- (["'])?                         # find single or double quote
- (?(1) (.*?)\1 | (\S+))          # if quote found, match up to next matching
-                                 # quote, otherwise match up to next space
-/isx
-    <a href=abcd xyz
-    <a href=\"abcd xyz pqr\" cats
-    <a href       =       \'abcd xyz pqr\' cats
-
-/((Z)+|A)*/
-    ZABCDEFG
-
-/(Z()|A)*/
-    ZABCDEFG
-
-/(Z(())|A)*/
-    ZABCDEFG
-
-/((?>Z)+|A)*/
-    ZABCDEFG
-
-/((?>)+|A)*/
-    ZABCDEFG
-
-/a*/g
-    abbab
-
-/^[a-\d]/
-    abcde
-    -things
-    0digit
-    *** Failers
-    bcdef    
-
-/^[\d-a]/
-    abcde
-    -things
-    0digit
-    *** Failers
-    bcdef    
-    
-/[[:space:]]+/
-    > \x09\x0a\x0c\x0d\x0b<
-     
-/[[:blank:]]+/
-    > \x09\x0a\x0c\x0d\x0b<
-     
-/[\s]+/
-    > \x09\x0a\x0c\x0d\x0b<
-     
-/\s+/
-    > \x09\x0a\x0c\x0d\x0b<
-     
-/a\vb/x
-    ab
-
-/(?!\A)x/m
-  a\nxb\n
-
-/(?!^)x/m
-  a\nxb\n
-
-/abc\Qabc\Eabc/
-    abcabcabc
-    
-/abc\Q(*+|\Eabc/
-    abc(*+|abc 
-
-/   abc\Q abc\Eabc/x
-    abc abcabc
-    *** Failers
-    abcabcabc  
-    
-/abc#comment
-    \Q#not comment
-    literal\E/x
-    abc#not comment\n    literal     
-
-/abc#comment
-    \Q#not comment
-    literal/x
-    abc#not comment\n    literal     
-
-/abc#comment
-    \Q#not comment
-    literal\E #more comment
-    /x
-    abc#not comment\n    literal     
-
-/abc#comment
-    \Q#not comment
-    literal\E #more comment/x
-    abc#not comment\n    literal     
-
-/\Qabc\$xyz\E/
-    abc\\\$xyz
-
-/\Qabc\E\$\Qxyz\E/
-    abc\$xyz
-
-/\Gabc/
-    abc
-    *** Failers
-    xyzabc  
-
-/\Gabc./g
-    abc1abc2xyzabc3
-
-/abc./g
-    abc1abc2xyzabc3 
-
-/a(?x: b c )d/
-    XabcdY
-    *** Failers 
-    Xa b c d Y 
-
-/((?x)x y z | a b c)/
-    XabcY
-    AxyzB 
-
-/(?i)AB(?-i)C/
-    XabCY
-    *** Failers
-    XabcY  
-
-/((?i)AB(?-i)C|D)E/
-    abCE
-    DE
-    *** Failers
-    abcE
-    abCe  
-    dE
-    De    
-
-/(.*)\d+\1/
-    abc123abc
-    abc123bc 
-
-/(.*)\d+\1/s
-    abc123abc
-    abc123bc 
-    
-/((.*))\d+\1/
-    abc123abc
-    abc123bc  
-
-/-- This tests for an IPv6 address in the form where it can have up to --/
-/-- eight components, one and only one of which is empty. This must be --/
-/-- an internal component. --/
-
-/^(?!:)                       # colon disallowed at start
-  (?:                         # start of item
-    (?: [0-9a-f]{1,4} |       # 1-4 hex digits or
-    (?(1)0 | () ) )           # if null previously matched, fail; else null
-    :                         # followed by colon
-  ){1,7}                      # end item; 1-7 of them required               
-  [0-9a-f]{1,4} $             # final hex number at end of string
-  (?(1)|.)                    # check that there was an empty component
-  /xi
-    a123::a123
-    a123:b342::abcd
-    a123:b342::324e:abcd
-    a123:ddde:b342::324e:abcd
-    a123:ddde:b342::324e:dcba:abcd
-    a123:ddde:9999:b342::324e:dcba:abcd
-    *** Failers
-    1:2:3:4:5:6:7:8
-    a123:bce:ddde:9999:b342::324e:dcba:abcd
-    a123::9999:b342::324e:dcba:abcd
-    abcde:2:3:4:5:6:7:8
-    ::1
-    abcd:fee0:123::   
-    :1
-    1:  
-
-/[z\Qa-d]\E]/
-    z
-    a
-    -
-    d
-    ] 
-    *** Failers
-    b     
-
-/[\z\C]/
-    z
-    C 
-    
-/\M/
-    M 
-    
-/(a+)*b/
-    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
-    
-/(?i)reg(?:ul(?:[aä]|ae)r|ex)/
-    REGular
-    regulaer
-    Regex  
-    regulär 
-
-/Åæåä[à-ÿÀ-ß]+/
-    Åæåäà
-    Åæåäÿ
-    ÅæåäÀ
-    Åæåäß
-
-/(?<=Z)X./
-  \x84XAZXB
-
-/ab cd (?x) de fg/
-    ab cd defg
-
-/ab cd(?x) de fg/
-    ab cddefg
-    ** Failers 
-    abcddefg
-
-/(?<![^f]oo)(bar)/
-    foobarX 
-    ** Failers 
-    boobarX
-
-/(?<![^f])X/
-    offX
-    ** Failers
-    onyX  
-
-/(?<=[^f])X/
-    onyX
-    ** Failers
-    offX 
-
-/^/mg
-    a\nb\nc\n
-    \ 
-    
-/(?<=C\n)^/mg
-    A\nC\nC\n 
-
-/(?:(?(1)a|b)(X))+/
-    bXaX
-
-/(?:(?(1)\1a|b)(X|Y))+/
-    bXXaYYaY
-    bXYaXXaX  
-
-/()()()()()()()()()(?:(?(10)\10a|b)(X|Y))+/
-    bXXaYYaY
-
-/[[,abc,]+]/
-    abc]
-    a,b]
-    [a,b,c]  
-
-/(?-x: )/x
-    A\x20B
-    
-"(?x)(?-x: \s*#\s*)"
-    A # B
-    ** Failers
-    #  
-
-"(?x-is)(?:(?-ixs) \s*#\s*) include"
-    A #include
-    ** Failers
-    A#include  
-    A #Include
-
-/a*b*\w/
-    aaabbbb
-    aaaa
-    a
-
-/a*b?\w/
-    aaabbbb
-    aaaa
-    a
-
-/a*b{0,4}\w/
-    aaabbbb
-    aaaa
-    a
-
-/a*b{0,}\w/
-    aaabbbb
-    aaaa
-    a
-    
-/a*\d*\w/
-    0a
-    a 
-    
-/a*b *\w/x
-    a 
-
-/a*b#comment
-  *\w/x
-    a 
-
-/a* b *\w/x
-    a 
-
-/^\w+=.*(\\\n.*)*/
-    abc=xyz\\\npqr
-
-/(?=(\w+))\1:/
-    abcd:
-
-/^(?=(\w+))\1:/
-    abcd:
-
-/^\Eabc/
-    abc
-    
-/^[\Eabc]/
-    a
-    ** Failers 
-    E 
-    
-/^[a-\Ec]/
-    b
-    ** Failers
-    -
-    E    
-
-/^[a\E\E-\Ec]/
-    b
-    ** Failers
-    -
-    E    
-
-/^[\E\Qa\E-\Qz\E]+/
-    b
-    ** Failers
-    -  
-    
-/^[a\Q]bc\E]/
-    a
-    ]
-    c
-    
-/^[a-\Q\E]/
-    a
-    -     
-
-/^(a()*)*/
-    aaaa
-
-/^(?:a(?:(?:))*)*/
-    aaaa
-
-/^(a()+)+/
-    aaaa
-
-/^(?:a(?:(?:))+)+/
-    aaaa
-
-/(a){0,3}(?(1)b|(c|))*D/
-    abbD
-    ccccD
-    D  
-
-/(a|)*\d/
-  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
-
-/(?>a|)*\d/
-  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
-
-/(?:a|)*\d/
-  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
-
-/\Z/g
-  abc\n
-  
-/^(?s)(?>.*)(?<!\n)/
-  abc
-  abc\n  
-
-/^(?![^\n]*\n\z)/
-  abc
-  abc\n 
-  
-/\z(?<!\n)/
-  abc
-  abc\n  
-
-/(.*(.)?)*/
-    abcd
-
-/( (A | (?(1)0|) )*   )/x
-    abcd
-
-/( ( (?(1)0|) )*   )/x
-    abcd
-
-/(  (?(1)0|)*   )/x
-    abcd
-
-/[[:abcd:xyz]]/
-    a]
-    :] 
-    
-/[abc[:x\]pqr]/
-    a
-    [
-    :
-    ]
-    p    
-
-/.*[op][xyz]/
-    fooabcfoo
-
-/(?(?=.*b)b|^)/
-   adc
-   abc 
-
-/(?(?=^.*b)b|^)/
-   adc
-   abc 
-
-/(?(?=.*b)b|^)*/
-   adc
-   abc 
-
-/(?(?=.*b)b|^)+/
-   adc
-   abc 
-
-/(?(?=b).*b|^d)/
-    abc
-
-/(?(?=.*b).*b|^d)/
-    abc
-
-/^%((?(?=[a])[^%])|b)*%$/
-    %ab%
-
-/-- End of testinput1 --/