: converted from the pcre testdata/testinput1 2001-06-15
E the quick brown fox the quick brown fox (0,19)
E SAME The quick brown FOX NOMATCH
E SAME What do you know about the quick brown fox? (23,42)
E SAME What do you know about THE QUICK BROWN FOX? NOMATCH
Ei The quick brown fox the quick brown fox (0,19)
Ei SAME The quick brown FOX (0,19)
Ei SAME What do you know about the quick brown fox? (23,42)
Ei SAME What do you know about THE QUICK BROWN FOX? (23,42)
E$ abcd\\t\\n\\r\\f\\a\\e\\071\\x3b\\$\\\\\\?caxyz abcd\t\n\r\f\a\e9;$\\?caxyz (0,20)
E a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz abxyzpqrrrabbxyyyypqAzz (0,23)
E SAME abxyzpqrrrabbxyyyypqAzz (0,23)
E SAME aabxyzpqrrrabbxyyyypqAzz (0,24)
E SAME aaabxyzpqrrrabbxyyyypqAzz (0,25)
E SAME aaaabxyzpqrrrabbxyyyypqAzz (0,26)
E SAME abcxyzpqrrrabbxyyyypqAzz (0,24)
E SAME aabcxyzpqrrrabbxyyyypqAzz (0,25)
E SAME aaabcxyzpqrrrabbxyyyypAzz (0,25)
E SAME aaabcxyzpqrrrabbxyyyypqAzz (0,26)
E SAME aaabcxyzpqrrrabbxyyyypqqAzz (0,27)
E SAME aaabcxyzpqrrrabbxyyyypqqqAzz (0,28)
E SAME aaabcxyzpqrrrabbxyyyypqqqqAzz (0,29)
E SAME aaabcxyzpqrrrabbxyyyypqqqqqAzz (0,30)
E SAME aaabcxyzpqrrrabbxyyyypqqqqqqAzz (0,31)
E SAME aaaabcxyzpqrrrabbxyyyypqAzz (0,27)
E SAME abxyzzpqrrrabbxyyyypqAzz (0,24)
E SAME aabxyzzzpqrrrabbxyyyypqAzz (0,26)
E SAME aaabxyzzzzpqrrrabbxyyyypqAzz (0,28)
E SAME aaaabxyzzzzpqrrrabbxyyyypqAzz (0,29)
E SAME abcxyzzpqrrrabbxyyyypqAzz (0,25)
E SAME aabcxyzzzpqrrrabbxyyyypqAzz (0,27)
E SAME aaabcxyzzzzpqrrrabbxyyyypqAzz (0,29)
E SAME aaaabcxyzzzzpqrrrabbxyyyypqAzz (0,30)
E SAME aaaabcxyzzzzpqrrrabbbxyyyypqAzz (0,31)
E SAME aaaabcxyzzzzpqrrrabbbxyyyyypqAzz (0,32)
E SAME aaabcxyzpqrrrabbxyyyypABzz (0,26)
E SAME aaabcxyzpqrrrabbxyyyypABBzz (0,27)
E SAME >>>aaabxyzpqrrrabbxyyyypqAzz (3,28)
E SAME >aaaabxyzpqrrrabbxyyyypqAzz (1,27)
E SAME >>>>abcxyzpqrrrabbxyyyypqAzz (4,28)
E SAME abxyzpqrrabbxyyyypqAzz NOMATCH
E SAME abxyzpqrrrrabbxyyyypqAzz NOMATCH
E SAME abxyzpqrrrabxyyyypqAzz NOMATCH
E SAME aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz NOMATCH
E SAME aaaabcxyzzzzpqrrrabbbxyyypqAzz NOMATCH
E SAME aaabcxyzpqrrrabbxyyyypqqqqqqqAzz NOMATCH
E ^(abc){1,2}zz abczz (0,5)(0,3)
E SAME abcabczz (0,8)(3,6)
E SAME zz NOMATCH
E SAME abcabcabczz NOMATCH
E SAME >>abczz NOMATCH
E ^(b+?|a){1,2}?c bc (0,2)(0,1)
E SAME bbc (0,3)(1,2)
E SAME bbbc (0,4)(1,3)
E SAME bac (0,3)(1,2)
E SAME bbac (0,4)(2,3)
E SAME aac (0,3)(1,2)
E SAME abbbbbbbbbbbc (0,13)(1,12)
E SAME bbbbbbbbbbbac (0,13)(11,12)
E SAME aaac NOMATCH
E SAME abbbbbbbbbbbac NOMATCH
E ^(b+|a){1,2}c bc (0,2)(0,1)
E SAME bbc (0,3)(0,2)
E SAME bbbc (0,4)(0,3)
E SAME bac (0,3)(1,2)
E SAME bbac (0,4)(2,3)
E SAME aac (0,3)(1,2)
E SAME abbbbbbbbbbbc (0,13)(1,12)
E SAME bbbbbbbbbbbac (0,13)(11,12)
E SAME aaac NOMATCH
E SAME abbbbbbbbbbbac NOMATCH
E ^(b+|a){1,2}?bc bbc (0,3)(0,1)
E ^(b*|ba){1,2}?bc babc (0,4)(0,2)
E SAME bbabc (0,5)(1,3)
E SAME bababc (0,6)(2,4)
E SAME bababbc NOMATCH
E SAME babababc NOMATCH
E ^(ba|b*){1,2}?bc babc (0,4)(0,2)
E SAME bbabc (0,5)(1,3)
E SAME bababc (0,6)(2,4)
E SAME bababbc NOMATCH
E SAME babababc NOMATCH
E$ ^\\ca\\cA\\c[\\c{\\c: \x01\x01\e;z (0,5)
E$kv ^[ab\\]cde] athing (0,1)
E$kv SAME bthing (0,1)
E$kv SAME ]thing (0,1)
E$kv SAME cthing (0,1)
E$kv SAME dthing (0,1)
E$kv SAME ething (0,1)
E$kv SAME fthing NOMATCH
E$kv SAME [thing NOMATCH
E$kv SAME \\thing NOMATCH
E ^[]cde] ]thing (0,1)
E SAME cthing (0,1)
E SAME dthing (0,1)
E SAME ething (0,1)
E SAME athing NOMATCH
E SAME fthing NOMATCH
E$kv ^[^ab\\]cde] fthing (0,1)
E$kv SAME [thing (0,1)
E$kv SAME \\thing (0,1)
E$kv SAME athing NOMATCH
E$kv SAME bthing NOMATCH
E$kv SAME ]thing NOMATCH
E$kv SAME cthing NOMATCH
E$kv SAME dthing NOMATCH
E$kv SAME ething NOMATCH
E ^[^]cde] athing (0,1)
E SAME fthing (0,1)
E SAME ]thing NOMATCH
E SAME cthing NOMATCH
E SAME dthing NOMATCH
E SAME ething NOMATCH
E$x ^\\� � (0,1)
E ^� � (0,1)
E ^[0-9]+$ 0 (0,1)
E SAME 1 (0,1)
E SAME 2 (0,1)
E SAME 3 (0,1)
E SAME 4 (0,1)
E SAME 5 (0,1)
E SAME 6 (0,1)
E SAME 7 (0,1)
E SAME 8 (0,1)
E SAME 9 (0,1)
E SAME 10 (0,2)
E SAME 100 (0,3)
E SAME abc NOMATCH
E ^.*nter enter (0,5)
E SAME inter (0,5)
E SAME uponter (0,7)
E ^xxx[0-9]+$ xxx0 (0,4)
E SAME xxx1234 (0,7)
E SAME xxx NOMATCH
E ^.+[0-9][0-9][0-9]$ x123 (0,4)
E SAME xx123 (0,5)
E SAME 123456 (0,6)
E SAME 123 NOMATCH
E SAME x1234 (0,5)
E ^.+?[0-9][0-9][0-9]$ x123 (0,4)
E SAME xx123 (0,5)
E SAME 123456 (0,6)
E SAME 123 NOMATCH
E SAME x1234 (0,5)
E$ ^([^!]+)!(.+)=apquxz\\.ixr\\.zzz\\.ac\\.uk$ abc!pqr=apquxz.ixr.zzz.ac.uk (0,28)(0,3)(4,7)
E$ SAME !pqr=apquxz.ixr.zzz.ac.uk NOMATCH
E$ SAME abc!=apquxz.ixr.zzz.ac.uk NOMATCH
E$ SAME abc!pqr=apquxz:ixr.zzz.ac.uk NOMATCH
E$ SAME abc!pqr=apquxz.ixr.zzz.ac.ukk NOMATCH
E : Well, we need a colon: somewhere (21,22)
E SAME *** Fail if we don't NOMATCH
E$iv ([\\da-f:]+)$ 0abc (0,4)(0,4)
E$iv SAME abc (0,3)(0,3)
E$iv SAME fed (0,3)(0,3)
E$iv SAME E (0,1)(0,1)
E$iv SAME :: (0,2)(0,2)
E$iv SAME 5f03:12C0::932e (0,15)(0,15)
E$iv SAME fed def (4,7)(4,7)
E$iv SAME Any old stuff (11,13)(11,13)
E$iv SAME 0zzz NOMATCH
E$iv SAME gzzz NOMATCH
E$iv SAME fed\x20 NOMATCH
E$iv SAME Any old rubbish NOMATCH
E$ ^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$ .1.2.3 (0,6)(1,2)(3,4)(5,6)
E$ SAME A.12.123.0 (0,10)(2,4)(5,8)(9,10)
E$ SAME .1.2.3333 NOMATCH
E$ SAME 1.2.3 NOMATCH
E$ SAME 1234.2.3 NOMATCH
E$ ^(\\d+)\\s+IN\\s+SOA\\s+(\\S+)\\s+(\\S+)\\s*\\(\\s*$ 1 IN SOA non-sp1 non-sp2( (0,25)(0,1)(9,16)(17,24)
E$ SAME 1 IN SOA non-sp1 non-sp2 ( (0,40)(0,1)(18,25)(29,36)
E$ SAME 1IN SOA non-sp1 non-sp2( NOMATCH
E$kv ^[a-zA-Z\\d][a-zA-Z\\d\\-]*(\\.[a-zA-Z\\d][a-zA-z\\d\\-]*)*\\.$ a. (0,2)
E$kv SAME Z. (0,2)
E$kv SAME 2. (0,2)
E$kv SAME ab-c.pq-r. (0,10)(4,9)
E$kv SAME sxk.zzz.ac.uk. (0,14)(10,13)
E$kv SAME x-.y-. (0,6)(2,5)
E$kv SAME -abc.peq. NOMATCH
E$kv ^\\*\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?(\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?)*$ *.a (0,3)
E$kv SAME *.b0-a (0,6)(3,6)
E$kv SAME *.c3-b.c (0,8)(3,6)(6,8)
E$kv SAME *.c-a.b-c (0,9)(3,5)(5,9)(7,9)
E$kv SAME *.0 NOMATCH
E$kv SAME *.a- NOMATCH
E$kv SAME *.a-b.c- NOMATCH
E$kv SAME *.c-a.0-c NOMATCH
E ^(?=ab(de))(abd)(e) abde (0,4)(2,4)(0,3)(3,4)
E ^(?!(ab)de|x)(abd)(f) abdf (0,4)(?,?)(0,3)(3,4)
E ^(?=(ab(cd)))(ab) abcd (0,2)(0,4)(2,4)(0,2)
E$iv ^[\\da-f](\\.[\\da-f])*$ a.b.c.d (0,7)(5,7)
E$iv SAME A.B.C.D (0,7)(5,7)
E$iv SAME a.b.c.1.2.3.C (0,13)(11,13)
E$ ^".*"\\s*(;.*)?$ "1234" (0,6)
E$ SAME "abcd" ; (0,8)(7,8)
E$ SAME "" ; rhubarb (0,12)(3,12)
E$ SAME "1234" : things NOMATCH
E$ ^$ NULL (0,0)
E$c ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end) ab c (0,4)
E$c SAME abc NOMATCH
E$c SAME ab cde NOMATCH
E$ (?x) ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end) ab c (0,4)
E$ SAME abc NOMATCH
E$ SAME ab cde NOMATCH
E$c ^ a\\ b[c ]d $ a bcd (0,5)
E$c SAME a b d (0,5)
E$c SAME abcd NOMATCH
E$c SAME ab d NOMATCH
E ^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$ abcdefhijklm (0,12)(0,3)(1,3)(2,3)(3,6)(4,6)(5,6)(6,9)(7,9)(8,9)(9,12)(10,12)(11,12)
E ^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$ abcdefhijklm (0,12)(1,3)(2,3)(4,6)(5,6)(7,9)(8,9)(10,12)(11,12)
E$v ^[\\w][\\W][\\s][\\S][\\d][\\D][\\f][\\n][\\c]][\\022] a+ Z0+\x0c\n\x1d\x12 (0,10)
E$ ^[.^$|()*+?{,}]+ .^$(*+)|{?,?} (0,13)
E$ ^a*\\w z (0,1)
E$ SAME az (0,2)
E$ SAME aaaz (0,4)
E$ SAME a (0,1)
E$ SAME aa (0,2)
E$ SAME aaaa (0,4)
E$ SAME a+ (0,1)
E$ SAME aa+ (0,2)
E$ ^a*?\\w z (0,1)
E$ SAME az (0,1)
E$ SAME aaaz (0,1)
E$ SAME a (0,1)
E$ SAME aa (0,1)
E$ SAME aaaa (0,1)
E$ SAME a+ (0,1)
E$ SAME aa+ (0,1)
E$ ^a+\\w az (0,2)
E$ SAME aaaz (0,4)
E$ SAME aa (0,2)
E$ SAME aaaa (0,4)
E$ SAME aa+ (0,2)
E$ ^a+?\\w az (0,2)
E$ SAME aaaz (0,2)
E$ SAME aa (0,2)
E$ SAME aaaa (0,2)
E$ SAME aa+ (0,2)
E$ ^\\d{8}\\w{2,} 1234567890 (0,10)
E$ SAME 12345678ab (0,10)
E$ SAME 12345678__ (0,10)
E$ SAME 1234567 NOMATCH
E$v ^[aeiou\\d]{4,5}$ uoie (0,4)
E$v SAME 1234 (0,4)
E$v SAME 12345 (0,5)
E$v SAME aaaaa (0,5)
E$v SAME 123456 NOMATCH
E$v ^[aeiou\\d]{4,5}? uoie (0,4)
E$v SAME 1234 (0,4)
E$v SAME 12345 (0,4)
E$v SAME aaaaa (0,4)
E$v SAME 123456 (0,4)
E$ \\A(abc|def)=(\\1){2,3}\\Z abc=abcabc (0,10)(0,3)(7,10)
E$ SAME def=defdefdef (0,13)(0,3)(10,13)
E$ SAME abc=defdef NOMATCH
E$h ^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\\11*(\\3\\4)\\1(?#)2$ abcdefghijkcda2 (0,15)(0,1)(1,2)(2,3)(3,4)(4,5)(5,6)(6,7)(7,8)(8,9)(9,10)(10,11)(11,13)
E$h SAME abcdefghijkkkkcda2 (0,18)(0,1)(1,2)(2,3)(3,4)(4,5)(5,6)(6,7)(7,8)(8,9)(9,10)(10,11)(14,16)
E$ ^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(?11)*((?3)(?4))(?1)(?#)2$ abcdefghijkcda2 (0,15)(0,1)(1,2)(2,3)(3,4)(4,5)(5,6)(6,7)(7,8)(8,9)(9,10)(10,11)(11,13)
E$ SAME abcdefghijkkkkcda2 (0,18)(0,1)(1,2)(2,3)(3,4)(4,5)(5,6)(6,7)(7,8)(8,9)(9,10)(10,11)(14,16)
E$z (cat(a(ract|tonic)|erpillar)) \\1()2(3) cataract cataract23 (0,19)(0,8)(3,8)(4,8)(17,17)(18,19)
E$z SAME catatonic catatonic23 (0,21)(0,9)(3,9)(4,9)(19,19)(20,21)
E$z SAME caterpillar caterpillar23 (0,25)(0,11)(3,11)(?,?)(23,23)(24,25)
E ^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 (0,27)(5,9)
E$ ^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 (0,27)(15,19)
E$ SAME From abcd Mon Sep 1 12:33:02 1997 (0,27)(15,20)
E$ SAME From abcd Sep 01 12:33:02 1997 NOMATCH
Ej$ ^12.34 12\n34 (0,5)
Ej$ SAME 12\r34 (0,5)
E$ \\w+(?=\\t) the quick brown\t fox (10,15)
E foo(?!bar)(.*) foobar is foolish see? (10,22)(13,22)
E (?:(?!foo)...|^.{0,2})bar(.*) foobar crowbar etc (8,18)(14,18)
E SAME barrel (0,6)(3,6)
E SAME 2barrel (0,7)(4,7)
E SAME A barrel (0,8)(5,8)
E$ ^(\\D*)(?=\\d)(?!123) abc456 (0,3)(0,3)
E$ SAME abc123 NOMATCH
E$ ^1234(?# test newlines\n\
inside) 1234 (0,4)
E$c ^1234 #comment in extended re\n\
1234 (0,4)
E$c #rhubarb\n\
abcd abcd (0,4)
Ec ^abcd#rhubarb abcd (0,4)
E$ ^(a)\\1{2,3}(.) aaab (0,4)(0,1)(3,4)
E$ SAME aaaab (0,5)(0,1)(4,5)
E$ SAME aaaaab (0,5)(0,1)(4,5)
E$ SAME aaaaaab (0,5)(0,1)(4,5)
E (?!^)abc the abc (4,7)
E SAME abc NOMATCH
E (?=^)abc abc (0,3)
E SAME the abc NOMATCH
E ^[ab]{1,3}(ab*|b) aabbbbb (0,7)(1,7)
E ^[ab]{1,3}?(ab*|b) aabbbbb (0,7)(1,7)
E ^[ab]{1,3}?(ab*?|b) aabbbbb (0,2)(1,2)
E ^[ab]{1,3}(ab*?|b) aabbbbb (0,4)(3,4)
E$ckv (?: [\\040\\t] | \\(\n\
(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n\
\\) )* # optional leading comment\n\
(?: (?:\n\
[^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n\
(?![^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n\
|\n\
" (?: # opening quote...\n\
[^\\\\\\x80-\\xff\\n\\015"] # Anything except backslash and quote\n\
| # or\n\
\\\\ [^\\x80-\\xff] # Escaped something (something != CR)\n\
)* " # closing quote\n\
) # initial word\n\
(?: (?: [\\040\\t] | \\(\n\
(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n\
\\) )* \\. (?: [\\040\\t] | \\(\n\
(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n\
\\) )* (?:\n\
[^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n\
(?![^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n\
|\n\
" (?: # opening quote...\n\
[^\\\\\\x80-\\xff\\n\\015"] # Anything except backslash and quote\n\
| # or\n\
\\\\ [^\\x80-\\xff] # Escaped something (something != CR)\n\
)* " # closing quote\n\
) )* # further okay, if led by a period\n\
(?: [\\040\\t] | \\(\n\
(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n\
\\) )* @ (?: [\\040\\t] | \\(\n\
(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n\
\\) )* (?:\n\
[^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n\
(?![^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n\
| \\[ # [\n\
(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff\n\
\\] # ]\n\
) # initial subdomain\n\
(?: #\n\
(?: [\\040\\t] | \\(\n\
(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n\
\\) )* \\. # if led by a period...\n\
(?: [\\040\\t] | \\(\n\
(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n\
\\) )* (?:\n\
[^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n\
(?![^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n\
| \\[ # [\n\
(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff\n\
\\] # ]\n\
) # ...further okay\n\
)*\n\
# address\n\
| # or\n\
(?:\n\
[^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n\
(?![^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n\
|\n\
" (?: # opening quote...\n\
[^\\\\\\x80-\\xff\\n\\015"] # Anything except backslash and quote\n\
| # or\n\
\\\\ [^\\x80-\\xff] # Escaped something (something != CR)\n\
)* " # closing quote\n\
) # one word, optionally followed by....\n\
(?:\n\
[^()<>@,;:".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] | # atom and space parts, or...\n\
\\(\n\
(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n\
\\) | # comments, or...\n\
\n\
" (?: # opening quote...\n\
[^\\\\\\x80-\\xff\\n\\015"] # Anything except backslash and quote\n\
| # or\n\
\\\\ [^\\x80-\\xff] # Escaped something (something != CR)\n\
)* " # closing quote\n\
# quoted strings\n\
)*\n\
< (?: [\\040\\t] | \\(\n\
(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n\
\\) )* # leading <\n\
(?: @ (?: [\\040\\t] | \\(\n\
(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n\
\\) )* (?:\n\
[^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n\
(?![^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n\
| \\[ # [\n\
(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff\n\
\\] # ]\n\
) # initial subdomain\n\
(?: #\n\
(?: [\\040\\t] | \\(\n\
(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n\
\\) )* \\. # if led by a period...\n\
(?: [\\040\\t] | \\(\n\
(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n\
\\) )* (?:\n\
[^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n\
(?![^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n\
| \\[ # [\n\
(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff\n\
\\] # ]\n\
) # ...further okay\n\
)*\n\
\n\
(?: (?: [\\040\\t] | \\(\n\
(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n\
\\) )* , (?: [\\040\\t] | \\(\n\
(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n\
\\) )* @ (?: [\\040\\t] | \\(\n\
(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n\
\\) )* (?:\n\
[^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n\
(?![^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n\
| \\[ # [\n\
(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff\n\
\\] # ]\n\
) # initial subdomain\n\
(?: #\n\
(?: [\\040\\t] | \\(\n\
(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n\
\\) )* \\. # if led by a period...\n\
(?: [\\040\\t] | \\(\n\
(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n\
\\) )* (?:\n\
[^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n\
(?![^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n\
| \\[ # [\n\
(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff\n\
\\] # ]\n\
) # ...further okay\n\
)*\n\
)* # further okay, if led by comma\n\
: # closing colon\n\
(?: [\\040\\t] | \\(\n\
(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n\
\\) )* )? # optional route\n\
(?:\n\
[^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n\
(?![^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n\
|\n\
" (?: # opening quote...\n\
[^\\\\\\x80-\\xff\\n\\015"] # Anything except backslash and quote\n\
| # or\n\
\\\\ [^\\x80-\\xff] # Escaped something (something != CR)\n\
)* " # closing quote\n\
) # initial word\n\
(?: (?: [\\040\\t] | \\(\n\
(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n\
\\) )* \\. (?: [\\040\\t] | \\(\n\
(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n\
\\) )* (?:\n\
[^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n\
(?![^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n\
|\n\
" (?: # opening quote...\n\
[^\\\\\\x80-\\xff\\n\\015"] # Anything except backslash and quote\n\
| # or\n\
\\\\ [^\\x80-\\xff] # Escaped something (something != CR)\n\
)* " # closing quote\n\
) )* # further okay, if led by a period\n\
(?: [\\040\\t] | \\(\n\
(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n\
\\) )* @ (?: [\\040\\t] | \\(\n\
(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n\
\\) )* (?:\n\
[^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n\
(?![^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n\
| \\[ # [\n\
(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff\n\
\\] # ]\n\
) # initial subdomain\n\
(?: #\n\
(?: [\\040\\t] | \\(\n\
(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n\
\\) )* \\. # if led by a period...\n\
(?: [\\040\\t] | \\(\n\
(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n\
\\) )* (?:\n\
[^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n\
(?![^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n\
| \\[ # [\n\
(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff\n\
\\] # ]\n\
) # ...further okay\n\
)*\n\
# address spec\n\
(?: [\\040\\t] | \\(\n\
(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n\
\\) )* > # trailing >\n\
# name and address\n\
) (?: [\\040\\t] | \\(\n\
(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n\
\\) )* # optional trailing comment\n\
Alan Other <user@dom.ain> (0,25)
E$ckv SAME <user@dom.ain> (1,13)
E$ckv SAME user@dom.ain (0,12)
E$ckv SAME "A. Other" <user.1234@dom.ain> (a comment) (0,42)
E$ckv SAME A. Other <user.1234@dom.ain> (a comment) (2,40)
E$ckv SAME "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay (0,61)
E$ckv SAME A missing angle <user@some.where (17,32)
E$ckv SAME The quick brown fox NOMATCH
E$ckv [\\040\\t]* # Nab whitespace.\n\
(?:\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: # (\n\
(?: \\\\ [^\\x80-\\xff] |\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)*\n\
\\) # )\n\
) # special\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
)* # )*\n\
\\) # )\n\
[\\040\\t]* )* # If comment found, allow more spaces.\n\
# optional leading comment\n\
(?:\n\
(?:\n\
[^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n\
(?![^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n\
# Atom\n\
| # or\n\
" # "\n\
[^\\\\\\x80-\\xff\\n\\015"] * # normal\n\
(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015"] * )* # ( special normal* )*\n\
" # "\n\
# Quoted string\n\
)\n\
[\\040\\t]* # Nab whitespace.\n\
(?:\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: # (\n\
(?: \\\\ [^\\x80-\\xff] |\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)*\n\
\\) # )\n\
) # special\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
)* # )*\n\
\\) # )\n\
[\\040\\t]* )* # If comment found, allow more spaces.\n\
(?:\n\
\\.\n\
[\\040\\t]* # Nab whitespace.\n\
(?:\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: # (\n\
(?: \\\\ [^\\x80-\\xff] |\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)*\n\
\\) # )\n\
) # special\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
)* # )*\n\
\\) # )\n\
[\\040\\t]* )* # If comment found, allow more spaces.\n\
(?:\n\
[^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n\
(?![^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n\
# Atom\n\
| # or\n\
" # "\n\
[^\\\\\\x80-\\xff\\n\\015"] * # normal\n\
(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015"] * )* # ( special normal* )*\n\
" # "\n\
# Quoted string\n\
)\n\
[\\040\\t]* # Nab whitespace.\n\
(?:\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: # (\n\
(?: \\\\ [^\\x80-\\xff] |\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)*\n\
\\) # )\n\
) # special\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
)* # )*\n\
\\) # )\n\
[\\040\\t]* )* # If comment found, allow more spaces.\n\
# additional words\n\
)*\n\
@\n\
[\\040\\t]* # Nab whitespace.\n\
(?:\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: # (\n\
(?: \\\\ [^\\x80-\\xff] |\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)*\n\
\\) # )\n\
) # special\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
)* # )*\n\
\\) # )\n\
[\\040\\t]* )* # If comment found, allow more spaces.\n\
(?:\n\
[^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n\
(?![^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n\
|\n\
\\[ # [\n\
(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff\n\
\\] # ]\n\
)\n\
[\\040\\t]* # Nab whitespace.\n\
(?:\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: # (\n\
(?: \\\\ [^\\x80-\\xff] |\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)*\n\
\\) # )\n\
) # special\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
)* # )*\n\
\\) # )\n\
[\\040\\t]* )* # If comment found, allow more spaces.\n\
# optional trailing comments\n\
(?:\n\
\\.\n\
[\\040\\t]* # Nab whitespace.\n\
(?:\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: # (\n\
(?: \\\\ [^\\x80-\\xff] |\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)*\n\
\\) # )\n\
) # special\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
)* # )*\n\
\\) # )\n\
[\\040\\t]* )* # If comment found, allow more spaces.\n\
(?:\n\
[^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n\
(?![^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n\
|\n\
\\[ # [\n\
(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff\n\
\\] # ]\n\
)\n\
[\\040\\t]* # Nab whitespace.\n\
(?:\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: # (\n\
(?: \\\\ [^\\x80-\\xff] |\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)*\n\
\\) # )\n\
) # special\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
)* # )*\n\
\\) # )\n\
[\\040\\t]* )* # If comment found, allow more spaces.\n\
# optional trailing comments\n\
)*\n\
# address\n\
| # or\n\
(?:\n\
[^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n\
(?![^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n\
# Atom\n\
| # or\n\
" # "\n\
[^\\\\\\x80-\\xff\\n\\015"] * # normal\n\
(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015"] * )* # ( special normal* )*\n\
" # "\n\
# Quoted string\n\
)\n\
# leading word\n\
[^()<>@,;:".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # "normal" atoms and or spaces\n\
(?:\n\
(?:\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: # (\n\
(?: \\\\ [^\\x80-\\xff] |\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)*\n\
\\) # )\n\
) # special\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
)* # )*\n\
\\) # )\n\
|\n\
" # "\n\
[^\\\\\\x80-\\xff\\n\\015"] * # normal\n\
(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015"] * )* # ( special normal* )*\n\
" # "\n\
) # "special" comment or quoted string\n\
[^()<>@,;:".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # more "normal"\n\
)*\n\
<\n\
[\\040\\t]* # Nab whitespace.\n\
(?:\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: # (\n\
(?: \\\\ [^\\x80-\\xff] |\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)*\n\
\\) # )\n\
) # special\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
)* # )*\n\
\\) # )\n\
[\\040\\t]* )* # If comment found, allow more spaces.\n\
# <\n\
(?:\n\
@\n\
[\\040\\t]* # Nab whitespace.\n\
(?:\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: # (\n\
(?: \\\\ [^\\x80-\\xff] |\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)*\n\
\\) # )\n\
) # special\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
)* # )*\n\
\\) # )\n\
[\\040\\t]* )* # If comment found, allow more spaces.\n\
(?:\n\
[^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n\
(?![^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n\
|\n\
\\[ # [\n\
(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff\n\
\\] # ]\n\
)\n\
[\\040\\t]* # Nab whitespace.\n\
(?:\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: # (\n\
(?: \\\\ [^\\x80-\\xff] |\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)*\n\
\\) # )\n\
) # special\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
)* # )*\n\
\\) # )\n\
[\\040\\t]* )* # If comment found, allow more spaces.\n\
# optional trailing comments\n\
(?:\n\
\\.\n\
[\\040\\t]* # Nab whitespace.\n\
(?:\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: # (\n\
(?: \\\\ [^\\x80-\\xff] |\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)*\n\
\\) # )\n\
) # special\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
)* # )*\n\
\\) # )\n\
[\\040\\t]* )* # If comment found, allow more spaces.\n\
(?:\n\
[^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n\
(?![^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n\
|\n\
\\[ # [\n\
(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff\n\
\\] # ]\n\
)\n\
[\\040\\t]* # Nab whitespace.\n\
(?:\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: # (\n\
(?: \\\\ [^\\x80-\\xff] |\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)*\n\
\\) # )\n\
) # special\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
)* # )*\n\
\\) # )\n\
[\\040\\t]* )* # If comment found, allow more spaces.\n\
# optional trailing comments\n\
)*\n\
(?: ,\n\
[\\040\\t]* # Nab whitespace.\n\
(?:\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: # (\n\
(?: \\\\ [^\\x80-\\xff] |\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)*\n\
\\) # )\n\
) # special\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
)* # )*\n\
\\) # )\n\
[\\040\\t]* )* # If comment found, allow more spaces.\n\
@\n\
[\\040\\t]* # Nab whitespace.\n\
(?:\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: # (\n\
(?: \\\\ [^\\x80-\\xff] |\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)*\n\
\\) # )\n\
) # special\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
)* # )*\n\
\\) # )\n\
[\\040\\t]* )* # If comment found, allow more spaces.\n\
(?:\n\
[^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n\
(?![^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n\
|\n\
\\[ # [\n\
(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff\n\
\\] # ]\n\
)\n\
[\\040\\t]* # Nab whitespace.\n\
(?:\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: # (\n\
(?: \\\\ [^\\x80-\\xff] |\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)*\n\
\\) # )\n\
) # special\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
)* # )*\n\
\\) # )\n\
[\\040\\t]* )* # If comment found, allow more spaces.\n\
# optional trailing comments\n\
(?:\n\
\\.\n\
[\\040\\t]* # Nab whitespace.\n\
(?:\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: # (\n\
(?: \\\\ [^\\x80-\\xff] |\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)*\n\
\\) # )\n\
) # special\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
)* # )*\n\
\\) # )\n\
[\\040\\t]* )* # If comment found, allow more spaces.\n\
(?:\n\
[^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n\
(?![^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n\
|\n\
\\[ # [\n\
(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff\n\
\\] # ]\n\
)\n\
[\\040\\t]* # Nab whitespace.\n\
(?:\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: # (\n\
(?: \\\\ [^\\x80-\\xff] |\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)*\n\
\\) # )\n\
) # special\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
)* # )*\n\
\\) # )\n\
[\\040\\t]* )* # If comment found, allow more spaces.\n\
# optional trailing comments\n\
)*\n\
)* # additional domains\n\
:\n\
[\\040\\t]* # Nab whitespace.\n\
(?:\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: # (\n\
(?: \\\\ [^\\x80-\\xff] |\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)*\n\
\\) # )\n\
) # special\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
)* # )*\n\
\\) # )\n\
[\\040\\t]* )* # If comment found, allow more spaces.\n\
# optional trailing comments\n\
)? # optional route\n\
(?:\n\
[^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n\
(?![^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n\
# Atom\n\
| # or\n\
" # "\n\
[^\\\\\\x80-\\xff\\n\\015"] * # normal\n\
(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015"] * )* # ( special normal* )*\n\
" # "\n\
# Quoted string\n\
)\n\
[\\040\\t]* # Nab whitespace.\n\
(?:\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: # (\n\
(?: \\\\ [^\\x80-\\xff] |\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)*\n\
\\) # )\n\
) # special\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
)* # )*\n\
\\) # )\n\
[\\040\\t]* )* # If comment found, allow more spaces.\n\
(?:\n\
\\.\n\
[\\040\\t]* # Nab whitespace.\n\
(?:\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: # (\n\
(?: \\\\ [^\\x80-\\xff] |\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)*\n\
\\) # )\n\
) # special\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
)* # )*\n\
\\) # )\n\
[\\040\\t]* )* # If comment found, allow more spaces.\n\
(?:\n\
[^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n\
(?![^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n\
# Atom\n\
| # or\n\
" # "\n\
[^\\\\\\x80-\\xff\\n\\015"] * # normal\n\
(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015"] * )* # ( special normal* )*\n\
" # "\n\
# Quoted string\n\
)\n\
[\\040\\t]* # Nab whitespace.\n\
(?:\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: # (\n\
(?: \\\\ [^\\x80-\\xff] |\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)*\n\
\\) # )\n\
) # special\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
)* # )*\n\
\\) # )\n\
[\\040\\t]* )* # If comment found, allow more spaces.\n\
# additional words\n\
)*\n\
@\n\
[\\040\\t]* # Nab whitespace.\n\
(?:\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: # (\n\
(?: \\\\ [^\\x80-\\xff] |\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)*\n\
\\) # )\n\
) # special\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
)* # )*\n\
\\) # )\n\
[\\040\\t]* )* # If comment found, allow more spaces.\n\
(?:\n\
[^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n\
(?![^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n\
|\n\
\\[ # [\n\
(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff\n\
\\] # ]\n\
)\n\
[\\040\\t]* # Nab whitespace.\n\
(?:\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: # (\n\
(?: \\\\ [^\\x80-\\xff] |\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)*\n\
\\) # )\n\
) # special\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
)* # )*\n\
\\) # )\n\
[\\040\\t]* )* # If comment found, allow more spaces.\n\
# optional trailing comments\n\
(?:\n\
\\.\n\
[\\040\\t]* # Nab whitespace.\n\
(?:\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: # (\n\
(?: \\\\ [^\\x80-\\xff] |\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)*\n\
\\) # )\n\
) # special\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
)* # )*\n\
\\) # )\n\
[\\040\\t]* )* # If comment found, allow more spaces.\n\
(?:\n\
[^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n\
(?![^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n\
|\n\
\\[ # [\n\
(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff\n\
\\] # ]\n\
)\n\
[\\040\\t]* # Nab whitespace.\n\
(?:\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: # (\n\
(?: \\\\ [^\\x80-\\xff] |\n\
\\( # (\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)*\n\
\\) # )\n\
) # special\n\
[^\\\\\\x80-\\xff\\n\\015()] * # normal*\n\
)* # )*\n\
\\) # )\n\
[\\040\\t]* )* # If comment found, allow more spaces.\n\
# optional trailing comments\n\
)*\n\
# address spec\n\
> # >\n\
# name and address\n\
)\n\
Alan Other <user@dom.ain> (0,25)
E$ckv SAME <user@dom.ain> (1,13)
E$ckv SAME user@dom.ain (0,12)
E$ckv SAME "A. Other" <user.1234@dom.ain> (a comment) (0,30)
E$ckv SAME A. Other <user.1234@dom.ain> (a comment) (2,28)
E$ckv SAME "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay (0,61)
E$ckv SAME A missing angle <user@some.where (17,32)
E$ckv SAME The quick brown fox NOMATCH
E$hx abc\\0def\\00pqr\\000xyz\\0000AB abc\0def\00pqr\000xyz\0000AB (0,19)
E$hx SAME abc456 abc\0def\00pqr\000xyz\0000ABCDE (7,26)
E$ abc\\x{0d}ef\\x00pqr\\x{00}0xyz\\x{00}00AB abc\x{0d}ef\x{00}pqr\x{00}0xyz\x{00}00AB (0,20)
E$ abc\\x000d\\x00pqr\\x000xyz\\x0000AB abc\x000d\x00pqr\x000xyz\x0000AB (0,13)
Ex$ SAME abc\x000d\x00pqr\x000xyz\x0000AB (0,13)
#E$ abc\\x0def\\x00pqr\\x000xyz\\x0000AB abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE (7,27)
#Ex$ abc\\x0def\\x00pqr\\x000xyz\\x0000AB abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE (7,27)
E$v ^[\\000-\\037] \0A (0,1)
E$v SAME \01B (0,1)
E$v SAME \037C (0,1)
E$x \\0* \0\0\0\0 (0,4)
E$ A\\x0{2,3}Z The A\x0\x0Z (4,8)
E$ SAME An A\0\x0\0Z (3,8)
E$ SAME A\0Z NOMATCH
E$ SAME A\0\x0\0\x0Z NOMATCH
E$z ^(cow|)\\1(bell) cowcowbell (0,10)(0,3)(6,10)
E$z SAME bell (0,4)(0,0)(0,4)
E$z SAME cowbell NOMATCH
E$ ^\\s \040abc (0,1)
E$ SAME \x{0c}abc (0,1)
E$ SAME \x0cxyz (0,1)
E$ SAME \fabc (0,1)
E$ SAME \nabc (0,1)
E$ SAME \rabc (0,1)
E$ SAME \tabc (0,1)
E$ SAME abc NOMATCH
E$c ^a\tb\n\
c abc (0,3)
E$z ^(a|)\\1*b ab (0,2)(0,1)
E$z SAME aaaab (0,5)(0,1)
E$z SAME b (0,1)(0,0)
E$z SAME acb NOMATCH
E$z ^(a|)\\1+b aab (0,3)(0,1)
E$z SAME aaaab (0,5)(0,1)
E$z SAME b (0,1)(0,0)
E$z SAME ab NOMATCH
E$z ^(a|)\\1?b ab (0,2)(0,1)
E$z SAME aab (0,3)(0,1)
E$z SAME b (0,1)(0,0)
E$z SAME acb NOMATCH
E$z ^(a|)\\1{2}b aaab (0,4)(0,1)
E$z SAME b (0,1)(0,0)
E$z SAME ab NOMATCH
E$z SAME aab NOMATCH
E$z SAME aaaab NOMATCH
E$z ^(a|)\\1{2,3}b aaab (0,4)(0,1)
E$z SAME aaaab (0,5)(0,1)
E$z SAME b (0,1)(0,0)
E$z SAME ab NOMATCH
E$z SAME aab NOMATCH
E$z SAME aaaaab NOMATCH
E ab{1,3}bc abbbbc (0,6)
E SAME abbbc (0,5)
E SAME abbc (0,4)
E SAME abc NOMATCH
E SAME abbbbbc NOMATCH
E$ ([^.]*)\\.([^:]*):[T ]+(.*) track1.title:TBlah blah blah (0,28)(0,6)(7,12)(14,28)
E$i ([^.]*)\\.([^:]*):[T ]+(.*) track1.title:TBlah blah blah (0,28)(0,6)(7,12)(14,28)
E$i ([^.]*)\\.([^:]*):[t ]+(.*) track1.title:TBlah blah blah (0,28)(0,6)(7,12)(14,28)
E ^[W-c]+$ WXY_^abc (0,8)
E SAME wxy NOMATCH
Ei ^[W-c]+$ WXY_^abc (0,8)
Ei SAME wxy_^ABC (0,8)
E$iv ^[\\x3f-\\x5F]+$ WXY_^abc (0,8)
E$iv SAME wxy_^ABC (0,8)
En ^abc$ abc (0,3)
En$ SAME qqq\nabc (4,7)
En$ SAME abc\nzzz (0,3)
En$ SAME qqq\nabc\nzzz (4,7)
E ^abc$ abc (0,3)
E$ SAME qqq\nabc NOMATCH
E$ SAME abc\nzzz NOMATCH
E$ SAME qqq\nabc\nzzz NOMATCH
E$n \\Aabc\\Z abc (0,3)
E$n SAME abc\n NOMATCH
E$n SAME qqq\nabc NOMATCH
E$n SAME abc\nzzz NOMATCH
E$n SAME qqq\nabc\nzzz NOMATCH
E$j \\A(.)*\\Z abc\ndef (0,7)(6,7)
E$n \\A(.)*\\Z abc\ndef NOMATCH
E (?:b)|(?::+) b::c (0,1)
E SAME c::b (1,3)
E [-az]+ az- (0,3)
E SAME b NOMATCH
E [az-]+ za- (0,3)
E SAME b NOMATCH
E$kv [a\\-z]+ a-z (0,3)
E$kv SAME b NOMATCH
E [a-z]+ abcdxyz (0,7)
E$v [\\d-]+ 12-34 (0,5)
E$v SAME aaa NOMATCH
E$v [\\d-z]+ 12-34z ERANGE
E$v SAME aaa ERANGE
E$ \\x5c \\ (0,1)
E$ \\x20Z the Zoo (3,5)
E$ SAME Zulu NOMATCH
E$i (abc)\\1 abcabc (0,6)(0,3)
E$i SAME ABCabc (0,6)(0,3)
E$i SAME abcABC (0,6)(0,3)
E (main(O)?)+ mainmain (0,8)(4,8)
E SAME mainOmain (0,9)(5,9)
E ab{3cd ab{3cd BADBR
E ab{3,cd ab{3,cd BADBR
E ab{3,4a}cd ab{3,4a}cd BADBR
E {4,5a}bc {4,5a}bc BADBR
E$ ^a.b a\rb (0,3)
E$ SAME a\nb (0,3)
E abc$ abc (0,3)
E$ SAME abc\n NOMATCH
E$n SAME abc\n (0,3)
E$ SAME abc\ndef NOMATCH
E$n SAME abc\ndef (0,3)
E$ (abc)\\123 abc\x53 (0,4)(0,3)
E$ (abc)\\223 abc\x93 (0,4)(0,3)
E$ (abc)\\323 abc\xd3 (0,4)(0,3)
E$h (abc)\\500 abc\x40 ESUBREG
E$h SAME abc\100 ESUBREG
E$h (abc)\\1000 abc\x{40}0 (0,5)(0,3)
E$h SAME abc\x40\x30 (0,5)(0,3)
E$h SAME abc\1000 (0,5)(0,3)
E$h SAME abc\100\x30 (0,5)(0,3)
E$h SAME abc\100\060 (0,5)(0,3)
E$h SAME abc\100\60 (0,5)(0,3)
E$h (abc)\\100z abc\x40z (0,5)(0,3)
E$ abc\\71 abc\071 ESUBREG
E$h abc\\71 abc\071 (0,4)
E$ abc\\81 abc\081 ESUBREG
E$h abc\\81 abc\081 NOMATCH
E$h SAME abc\0\x38\x31 NOMATCH
E$ abc\\091 abc\091 BADESC
E$x abc\\091 abc\091 (0,6)
E$x SAME abc\0\x39\x31 (0,6)
E$ (a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\\12\\123 abcdefghijkllS NOMATCH
E$ (a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\\12\\123 abcdefghijk\12S NOMATCH
E$h (a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\\12\\123 abcdefghijkllS (0,14)(0,1)(1,2)(2,3)(3,4)(4,5)(5,6)(6,7)(7,8)(8,9)(9,10)(10,11)(11,12)
E$h (a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\\12\\123 abcdefghijk\12S (0,13)(0,1)(1,2)(2,3)(3,4)(4,5)(5,6)(6,7)(7,8)(8,9)(9,10)(10,11)
E$ (a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)(?12)\\123 abcdefghijkllS (0,14)(0,1)(1,2)(2,3)(3,4)(4,5)(5,6)(6,7)(7,8)(8,9)(9,10)(10,11)(11,12)
E$ ab\\gdef abgdef BADESC
E$x ab\\gdef abgdef (0,6)
E a{0}bc bc (0,2)
E (a|(bc)){0,0}?xyz xyz (0,3)
E$v abc[\\10]de abc\010de (0,6)
E$v abc[\\1]de abc\1de (0,6)
E$kv abc[\\1]de abc\1de (0,6)
E$v (abc)[\\1]de abc\1de (0,6)(0,3)
E$kv (abc)[\\1]de abc\1de (0,6)(0,3)
E$ a.b(?s) a\nb (0,3)
E$v ^([^a])([^\\b])([^c]*)([^d]{3,4}) baNOTccccd (0,9)(0,1)(1,2)(2,5)(5,9)
E$v SAME baNOTcccd (0,8)(0,1)(1,2)(2,5)(5,8)
E$v SAME baNOTccd (0,7)(0,1)(1,2)(2,4)(4,7)
E$v SAME bacccd (0,5)(0,1)(1,2)(2,2)(2,5)
E$v SAME anything NOMATCH
E$v SAME b\bc... NOMATCH
E$v SAME baccd NOMATCH
E$v ^([^a])([^\\f])([^c]*)([^d]{3,4}) b\fc... NOMATCH
E [^a] Abc (0,1)
Ei [^a] Abc (1,2)
E [^a]+ AAAaAbc (0,3)
Ei [^a]+ AAAaAbc (5,8)
E$ [^a]+ bbb\nccc (0,7)
E [^k]$ abc (2,3)
E SAME abk (5,6)
E [^k]{2,3}$ abc (0,3)
E SAME kbc (1,3)
E SAME kabc (2,5)
E SAME abk NOMATCH
E SAME akb NOMATCH
E SAME akk NOMATCH
E$ ^\\d{8,}\\@.+[^k]$ 12345678@a.b.c.d (0,16)
E$ SAME 123456789@x.y.z (0,15)
E$ SAME 12345678@x.y.uk NOMATCH
E$ SAME 1234567@a.b.c.d NOMATCH
E$ (a)\\1{8,} aaaaaaaaa (0,9)(0,1)
E$ SAME aaaaaaaaaa (0,10)(0,1)
E$ SAME aaaaaaa NOMATCH
E [^a] aaaabcd (4,5)
E SAME aaAabcd (2,3)
Ei [^a] aaaabcd (4,5)
Ei SAME aaAabcd (4,5)
E [^az] aaaabcd (4,5)
E SAME aaAabcd (2,3)
Ei [^az] aaaabcd (4,5)
Ei SAME aaAabcd (4,5)
E$ \\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 (0,256)
E P[^*]TAIRE[^*]{1,6}?LL xxxxxxxxxxxPSTAIREISLLxxxxxxxxx (11,22)
E P[^*]TAIRE[^*]{1,}?LL xxxxxxxxxxxPSTAIREISLLxxxxxxxxx (11,22)
E$ (\\.\\d\\d[1-9]?)\\d+ 1.230003938 (1,11)(1,4)
E$ SAME 1.875000282 (1,11)(1,5)
E$ SAME 1.235 (1,5)(1,4)
E$ (\\.\\d\\d((?=0)|[1-9](?=\\d))) 1.230003938 (1,4)(1,4)(4,4)
E$ (\\.\\d\\d((?=0)|\\d(?=\\d))) 1.230003938 (1,5)(1,5)(4,5)
E$ SAME 1.875000282 (1,5)(1,5)(4,5)
E$ SAME 1.235 NOMATCH
E a(?)b ab (0,2)
E a(?#)b ab (0,2)
E$i \\b(foo)\\s+(\\w+) Food is on the foo table (15,24)(15,18)(19,24)
E foo(.*)bar The food is under the bar in the barn. (4,36)(7,33)
E foo(.*?)bar The food is under the bar in the barn. (4,25)(7,22)
E$ (.*)(\\d*) I have 2 numbers: 53147 (0,23)(0,23)(23,23)
E$ (.*)(\\d+) I have 2 numbers: 53147 (0,23)(0,22)(22,23)
E$ (.*?)(\\d*) I have 2 numbers: 53147 (0,0)(0,0)(0,0)
E$ (.*?)(\\d+) I have 2 numbers: 53147 (0,8)(0,7)(7,8)
E$ (.*)(\\d+)$ I have 2 numbers: 53147 (0,23)(0,22)(22,23)
E$ (.*?)(\\d+)$ I have 2 numbers: 53147 (0,23)(0,18)(18,23)
E$ (.*)\\b(\\d+)$ I have 2 numbers: 53147 (0,23)(0,18)(18,23)
E$ (.*\\D)(\\d+)$ I have 2 numbers: 53147 (0,23)(0,18)(18,23)
E$ ^\\D*(?!123) ABC123 (0,2)
E$ ^(\\D*)(?=\\d)(?!123) ABC445 (0,3)(0,3)
E$ SAME ABC123 NOMATCH
E ^[W-]46] W46]789 (0,4)
E SAME -46]789 (0,4)
E SAME Wall NOMATCH
E SAME Zebra NOMATCH
E SAME 42 NOMATCH
E SAME [abcd] NOMATCH
E SAME ]abcd[ NOMATCH
E$kv ^[W-\\]46] W46]789 (0,1)
E$kv SAME Wall (0,1)
E$kv SAME Zebra (0,1)
E$kv SAME Xylophone (0,1)
E$kv SAME 42 (0,1)
E$kv SAME [abcd] (0,1)
E$kv SAME ]abcd[ (0,1)
E$kv SAME \\backslash (0,1)
E$kv SAME -46]789 NOMATCH
E$kv SAME well NOMATCH
E$ \\d\\d/\\d\\d/\\d\\d\\d\\d 01/01/2000 (0,10)
E word (?:[a-zA-Z0-9]+ ){0,10}otherword word cat dog elephant mussel cow horse canary baboon snake shark otherword (0,74)
E SAME word cat dog elephant mussel cow horse canary baboon snake shark NOMATCH
E 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 NOMATCH
E ^(a){0,0} bcd (0,0)
E SAME abc (0,0)
E SAME aab (0,0)
E ^(a){0,1} bcd (0,0)
E SAME abc (0,1)(0,1)
E SAME aab (0,1)(0,1)
E ^(a){0,2} bcd (0,0)
E SAME abc (0,1)(0,1)
E SAME aab (0,2)(1,2)
E ^(a){0,3} bcd (0,0)
E SAME abc (0,1)(0,1)
E SAME aab (0,2)(1,2)
E SAME aaa (0,3)(2,3)
E ^(a){0,} bcd (0,0)
E SAME abc (0,1)(0,1)
E SAME aab (0,2)(1,2)
E SAME aaa (0,3)(2,3)
E SAME aaaaaaaa (0,8)(7,8)
E ^(a){1,1} bcd NOMATCH
E SAME abc (0,1)(0,1)
E SAME aab (0,1)(0,1)
E ^(a){1,2} bcd NOMATCH
E SAME abc (0,1)(0,1)
E SAME aab (0,2)(1,2)
E ^(a){1,3} bcd NOMATCH
E SAME abc (0,1)(0,1)
E SAME aab (0,2)(1,2)
E SAME aaa (0,3)(2,3)
E ^(a){1,} bcd NOMATCH
E SAME abc (0,1)(0,1)
E SAME aab (0,2)(1,2)
E SAME aaa (0,3)(2,3)
E SAME aaaaaaaa (0,8)(7,8)
E$ .{0,}\\.gif borfle\nbib.gif\nno (0,14)
E$ .*\\.gif borfle\nbib.gif\nno (0,14)
E$n SAME borfle\nbib.gif\nno (7,14)
E$j SAME borfle\nbib.gif\nno (0,14)
E$nj SAME borfle\nbib.gif\nno (0,14)
E$ .*$ borfle\nbib.gif\nno (0,17)
En$ SAME borfle\nbib.gif\nno (0,6)
Ej$ SAME borfle\nbib.gif\nno (0,17)
Enj$ SAME borfle\nbib.gif\nno (0,17)
E$ SAME borfle\nbib.gif\nno\n (0,18)
En$ SAME borfle\nbib.gif\nno\n (0,6)
Ej$ SAME borfle\nbib.gif\nno\n (0,18)
Enj$ SAME borfle\nbib.gif\nno\n (0,18)
E$ (.*X|^B) abcde\n1234Xyz (0,11)(0,11)
E$ SAME BarFoo (0,1)(0,1)
E$ SAME abcde\nBar NOMATCH
En$ (.*X|^B) abcde\n1234Xyz (6,11)(6,11)
En$ SAME BarFoo (0,1)(0,1)
En$ SAME abcde\nBar (6,7)(6,7)
Ej$ (.*X|^B) abcde\n1234Xyz (0,11)(0,11)
Ej$ SAME BarFoo (0,1)(0,1)
Ej$ SAME abcde\nBar NOMATCH
Enj$ (.*X|^B) abcde\n1234Xyz (0,11)(0,11)
Enj$ SAME BarFoo (0,1)(0,1)
Enj$ SAME abcde\nBar (6,7)(6,7)
E$ (?s)(.*X|^B) abcde\n1234Xyz (0,11)(0,11)
E$ SAME BarFoo (0,1)(0,1)
E$ SAME abcde\nBar NOMATCH
E$ (?s:.*X|^B) abcde\n1234Xyz (0,11)
E$ SAME BarFoo (0,1)
E$ SAME abcde\nBar NOMATCH
E$ ^.*B abc\nB (0,5)
E$n ^.*B abc\nB (4,5)
E$ (?s)^.*B abc\nB (0,5)
E$ (?m)^.*B abc\nB (4,5)
E$ (?ms)^.*B abc\nB (0,5)
E$ (?ms)^B abc\nB (4,5)
E$ (?m)B$ B\n (0,1)
E$ (?s)B$ B\n NOMATCH
E ^[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 (0,12)
E$ ^\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d 123456654321 (0,12)
E$v ^[\\d][\\d][\\d][\\d][\\d][\\d][\\d][\\d][\\d][\\d][\\d][\\d] 123456654321 (0,12)
E ^[abc]{12} abcabcabcabc (0,12)
E ^[a-c]{12} abcabcabcabc (0,12)
E ^(a|b|c){12} abcabcabcabc (0,12)(11,12)
E ^[abcdefghijklmnopqrstuvwxy0123456789] n (0,1)
E SAME z NOMATCH
E abcde{0,0} abcd (0,4)
E SAME abce NOMATCH
E ab[cd]{0,0}e abe (0,3)
E SAME abcde NOMATCH
E ab(c){0,0}d abd (0,3)
E SAME abcd NOMATCH
E a(b*) a (0,1)(1,1)
E SAME ab (0,2)(1,2)
E SAME abbbb (0,5)(1,5)
E SAME bbbbb NOMATCH
E$ ab\\d{0}e abe (0,3)
E$ SAME ab1e NOMATCH
E$v "([^\\\\"]+|\\\\.)*" the "quick" brown fox (4,11)(5,10)
#E$v SAME "the \\"quick\\" brown fox" (0,25)(14,24)
E .*? abc (0,0)
E$ \\b abc (0,0)
E$ \\b abc (0,0)
Ez NULL abc (0,0)
E$ijv <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> <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> (0,227)(3,21)(25,47)(48,51)(51,122)(122,122)(122,122)(?,?)(134,156)(157,172)(180,202)(203,217)
E a[^a]b acb (0,3)
E$ SAME a\nb (0,3)
E a.b acb (0,3)
E$ SAME a\nb (0,3)
Ej a[^a]b acb (0,3)
Ej$ SAME a\nb (0,3)
Ej a.b acb (0,3)
Ej$ SAME a\nb (0,3)