1 /-- This set of tests is for features that are compatible with all versions of
2 Perl >= 5.10, in non-UTF-8 mode. It should run clean for the 8-bit, 16-bit,
3 and 32-bit PCRE libraries. --/
5 < forbid 89?=ABCDEFfGILMNPTUWXZ<
12 What do you know about the quick brown fox?
13 0: the quick brown fox
14 What do you know about THE QUICK BROWN FOX?
17 /The quick brown fox/i
19 0: the quick brown fox
21 0: The quick brown FOX
22 What do you know about the quick brown fox?
23 0: the quick brown fox
24 What do you know about THE QUICK BROWN FOX?
25 0: THE QUICK BROWN FOX
27 /abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
28 abcd\t\n\r\f\a\e9;\$\\?caxyz
29 0: abcd\x09\x0a\x0d\x0c\x07\x1b9;$\?caxyz
31 /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
32 abxyzpqrrrabbxyyyypqAzz
33 0: abxyzpqrrrabbxyyyypqAzz
34 abxyzpqrrrabbxyyyypqAzz
35 0: abxyzpqrrrabbxyyyypqAzz
36 aabxyzpqrrrabbxyyyypqAzz
37 0: aabxyzpqrrrabbxyyyypqAzz
38 aaabxyzpqrrrabbxyyyypqAzz
39 0: aaabxyzpqrrrabbxyyyypqAzz
40 aaaabxyzpqrrrabbxyyyypqAzz
41 0: aaaabxyzpqrrrabbxyyyypqAzz
42 abcxyzpqrrrabbxyyyypqAzz
43 0: abcxyzpqrrrabbxyyyypqAzz
44 aabcxyzpqrrrabbxyyyypqAzz
45 0: aabcxyzpqrrrabbxyyyypqAzz
46 aaabcxyzpqrrrabbxyyyypAzz
47 0: aaabcxyzpqrrrabbxyyyypAzz
48 aaabcxyzpqrrrabbxyyyypqAzz
49 0: aaabcxyzpqrrrabbxyyyypqAzz
50 aaabcxyzpqrrrabbxyyyypqqAzz
51 0: aaabcxyzpqrrrabbxyyyypqqAzz
52 aaabcxyzpqrrrabbxyyyypqqqAzz
53 0: aaabcxyzpqrrrabbxyyyypqqqAzz
54 aaabcxyzpqrrrabbxyyyypqqqqAzz
55 0: aaabcxyzpqrrrabbxyyyypqqqqAzz
56 aaabcxyzpqrrrabbxyyyypqqqqqAzz
57 0: aaabcxyzpqrrrabbxyyyypqqqqqAzz
58 aaabcxyzpqrrrabbxyyyypqqqqqqAzz
59 0: aaabcxyzpqrrrabbxyyyypqqqqqqAzz
60 aaaabcxyzpqrrrabbxyyyypqAzz
61 0: aaaabcxyzpqrrrabbxyyyypqAzz
62 abxyzzpqrrrabbxyyyypqAzz
63 0: abxyzzpqrrrabbxyyyypqAzz
64 aabxyzzzpqrrrabbxyyyypqAzz
65 0: aabxyzzzpqrrrabbxyyyypqAzz
66 aaabxyzzzzpqrrrabbxyyyypqAzz
67 0: aaabxyzzzzpqrrrabbxyyyypqAzz
68 aaaabxyzzzzpqrrrabbxyyyypqAzz
69 0: aaaabxyzzzzpqrrrabbxyyyypqAzz
70 abcxyzzpqrrrabbxyyyypqAzz
71 0: abcxyzzpqrrrabbxyyyypqAzz
72 aabcxyzzzpqrrrabbxyyyypqAzz
73 0: aabcxyzzzpqrrrabbxyyyypqAzz
74 aaabcxyzzzzpqrrrabbxyyyypqAzz
75 0: aaabcxyzzzzpqrrrabbxyyyypqAzz
76 aaaabcxyzzzzpqrrrabbxyyyypqAzz
77 0: aaaabcxyzzzzpqrrrabbxyyyypqAzz
78 aaaabcxyzzzzpqrrrabbbxyyyypqAzz
79 0: aaaabcxyzzzzpqrrrabbbxyyyypqAzz
80 aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
81 0: aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
82 aaabcxyzpqrrrabbxyyyypABzz
83 0: aaabcxyzpqrrrabbxyyyypABzz
84 aaabcxyzpqrrrabbxyyyypABBzz
85 0: aaabcxyzpqrrrabbxyyyypABBzz
86 >>>aaabxyzpqrrrabbxyyyypqAzz
87 0: aaabxyzpqrrrabbxyyyypqAzz
88 >aaaabxyzpqrrrabbxyyyypqAzz
89 0: aaaabxyzpqrrrabbxyyyypqAzz
90 >>>>abcxyzpqrrrabbxyyyypqAzz
91 0: abcxyzpqrrrabbxyyyypqAzz
94 abxyzpqrrabbxyyyypqAzz
96 abxyzpqrrrrabbxyyyypqAzz
98 abxyzpqrrrabxyyyypqAzz
100 aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
102 aaaabcxyzzzzpqrrrabbbxyyypqAzz
104 aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
362 /^.+[0-9][0-9][0-9]$/
376 /^.+?[0-9][0-9][0-9]$/
390 /^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
391 abc!pqr=apquxz.ixr.zzz.ac.uk
392 0: abc!pqr=apquxz.ixr.zzz.ac.uk
397 !pqr=apquxz.ixr.zzz.ac.uk
399 abc!=apquxz.ixr.zzz.ac.uk
401 abc!pqr=apquxz:ixr.zzz.ac.uk
403 abc!pqr=apquxz.ixr.zzz.ac.ukk
407 Well, we need a colon: somewhere
448 /^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
468 /^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
469 1 IN SOA non-sp1 non-sp2(
470 0: 1 IN SOA non-sp1 non-sp2(
474 1 IN SOA non-sp1 non-sp2 (
475 0: 1 IN SOA non-sp1 non-sp2 (
481 1IN SOA non-sp1 non-sp2(
484 /^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/
505 /^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/
531 /^(?=ab(de))(abd)(e)/
538 /^(?!(ab)de|x)(abd)(f)/
552 /^[\da-f](\.[\da-f])*$/i
583 / ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/x
593 /(?x) ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/
615 /^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
631 /^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
643 /^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
645 0: a+ Z0+\x08\x0a\x1d\x12
749 /\A(abc|def)=(\1){2,3}\Z/
763 /^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\11*(\3\4)\1(?#)2$/
779 0: abcdefghijkkkkcda2
793 /(cat(a(ract|tonic)|erpillar)) \1()2(3)/
795 0: cataract cataract23
801 catatonic catatonic23
802 0: catatonic catatonic23
808 caterpillar caterpillar23
809 0: caterpillar caterpillar23
817 /^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]/
818 From abcd Mon Sep 01 12:33:02 1997
819 0: From abcd Mon Sep 01 12:33
822 /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
823 From abcd Mon Sep 01 12:33:02 1997
824 0: From abcd Mon Sep 01 12:33
826 From abcd Mon Sep 1 12:33:02 1997
827 0: From abcd Mon Sep 1 12:33
831 From abcd Sep 01 12:33:02 1997
841 the quick brown\t fox
845 foobar is foolish see?
849 /(?:(?!foo)...|^.{0,2})bar(.*)/
863 /^(\D*)(?=\d)(?!123)/
872 /^1234(?# test newlines
877 /^1234 #comment in extended re
935 /^[ab]{1,3}?(ab*?|b)/
946 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
947 \) )* # optional leading comment
949 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
950 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
952 " (?: # opening quote...
953 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
955 \\ [^\x80-\xff] # Escaped something (something != CR)
958 (?: (?: [\040\t] | \(
959 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
960 \) )* \. (?: [\040\t] | \(
961 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
963 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
964 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
966 " (?: # opening quote...
967 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
969 \\ [^\x80-\xff] # Escaped something (something != CR)
971 ) )* # further okay, if led by a period
973 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
974 \) )* @ (?: [\040\t] | \(
975 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
977 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
978 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
980 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
982 ) # initial subdomain
985 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
986 \) )* \. # if led by a period...
988 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
990 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
991 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
993 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1000 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1001 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1003 " (?: # opening quote...
1004 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
1006 \\ [^\x80-\xff] # Escaped something (something != CR)
1007 )* " # closing quote
1008 ) # one word, optionally followed by....
1010 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] | # atom and space parts, or...
1012 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1013 \) | # comments, or...
1015 " (?: # opening quote...
1016 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
1018 \\ [^\x80-\xff] # Escaped something (something != CR)
1019 )* " # closing quote
1023 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1025 (?: @ (?: [\040\t] | \(
1026 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1028 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1029 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1031 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1033 ) # initial subdomain
1036 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1037 \) )* \. # if led by a period...
1039 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1041 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1042 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1044 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1049 (?: (?: [\040\t] | \(
1050 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1051 \) )* , (?: [\040\t] | \(
1052 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1053 \) )* @ (?: [\040\t] | \(
1054 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1056 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1057 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1059 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1061 ) # initial subdomain
1064 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1065 \) )* \. # if led by a period...
1067 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1069 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1070 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1072 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1076 )* # further okay, if led by comma
1079 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1080 \) )* )? # optional route
1082 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1083 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1085 " (?: # opening quote...
1086 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
1088 \\ [^\x80-\xff] # Escaped something (something != CR)
1089 )* " # closing quote
1091 (?: (?: [\040\t] | \(
1092 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1093 \) )* \. (?: [\040\t] | \(
1094 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1096 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1097 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1099 " (?: # opening quote...
1100 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
1102 \\ [^\x80-\xff] # Escaped something (something != CR)
1103 )* " # closing quote
1104 ) )* # further okay, if led by a period
1106 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1107 \) )* @ (?: [\040\t] | \(
1108 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1110 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1111 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1113 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1115 ) # initial subdomain
1118 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1119 \) )* \. # if led by a period...
1121 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1123 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1124 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1126 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1132 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1133 \) )* > # trailing >
1136 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1137 \) )* # optional trailing comment
1139 Alan Other <user\@dom.ain>
1140 0: Alan Other <user@dom.ain>
1145 \"A. Other\" <user.1234\@dom.ain> (a comment)
1146 0: "A. Other" <user.1234@dom.ain> (a comment)
1147 A. Other <user.1234\@dom.ain> (a comment)
1148 0: Other <user.1234@dom.ain> (a comment)
1149 \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
1150 0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
1151 A missing angle <user\@some.where
1158 /[\040\t]* # Nab whitespace.
1161 [^\\\x80-\xff\n\015()] * # normal*
1163 (?: \\ [^\x80-\xff] |
1165 [^\\\x80-\xff\n\015()] * # normal*
1166 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1169 [^\\\x80-\xff\n\015()] * # normal*
1172 [\040\t]* )* # If comment found, allow more spaces.
1173 # optional leading comment
1176 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1177 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1181 [^\\\x80-\xff\n\015"] * # normal
1182 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1186 [\040\t]* # Nab whitespace.
1189 [^\\\x80-\xff\n\015()] * # normal*
1191 (?: \\ [^\x80-\xff] |
1193 [^\\\x80-\xff\n\015()] * # normal*
1194 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1197 [^\\\x80-\xff\n\015()] * # normal*
1200 [\040\t]* )* # If comment found, allow more spaces.
1203 [\040\t]* # Nab whitespace.
1206 [^\\\x80-\xff\n\015()] * # normal*
1208 (?: \\ [^\x80-\xff] |
1210 [^\\\x80-\xff\n\015()] * # normal*
1211 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1214 [^\\\x80-\xff\n\015()] * # normal*
1217 [\040\t]* )* # If comment found, allow more spaces.
1219 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1220 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1224 [^\\\x80-\xff\n\015"] * # normal
1225 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1229 [\040\t]* # Nab whitespace.
1232 [^\\\x80-\xff\n\015()] * # normal*
1234 (?: \\ [^\x80-\xff] |
1236 [^\\\x80-\xff\n\015()] * # normal*
1237 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1240 [^\\\x80-\xff\n\015()] * # normal*
1243 [\040\t]* )* # If comment found, allow more spaces.
1247 [\040\t]* # Nab whitespace.
1250 [^\\\x80-\xff\n\015()] * # normal*
1252 (?: \\ [^\x80-\xff] |
1254 [^\\\x80-\xff\n\015()] * # normal*
1255 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1258 [^\\\x80-\xff\n\015()] * # normal*
1261 [\040\t]* )* # If comment found, allow more spaces.
1263 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1264 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1267 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1270 [\040\t]* # Nab whitespace.
1273 [^\\\x80-\xff\n\015()] * # normal*
1275 (?: \\ [^\x80-\xff] |
1277 [^\\\x80-\xff\n\015()] * # normal*
1278 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1281 [^\\\x80-\xff\n\015()] * # normal*
1284 [\040\t]* )* # If comment found, allow more spaces.
1285 # optional trailing comments
1288 [\040\t]* # Nab whitespace.
1291 [^\\\x80-\xff\n\015()] * # normal*
1293 (?: \\ [^\x80-\xff] |
1295 [^\\\x80-\xff\n\015()] * # normal*
1296 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1299 [^\\\x80-\xff\n\015()] * # normal*
1302 [\040\t]* )* # If comment found, allow more spaces.
1304 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1305 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1308 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1311 [\040\t]* # Nab whitespace.
1314 [^\\\x80-\xff\n\015()] * # normal*
1316 (?: \\ [^\x80-\xff] |
1318 [^\\\x80-\xff\n\015()] * # normal*
1319 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1322 [^\\\x80-\xff\n\015()] * # normal*
1325 [\040\t]* )* # If comment found, allow more spaces.
1326 # optional trailing comments
1331 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1332 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1336 [^\\\x80-\xff\n\015"] * # normal
1337 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1342 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # "normal" atoms and or spaces
1346 [^\\\x80-\xff\n\015()] * # normal*
1348 (?: \\ [^\x80-\xff] |
1350 [^\\\x80-\xff\n\015()] * # normal*
1351 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1354 [^\\\x80-\xff\n\015()] * # normal*
1359 [^\\\x80-\xff\n\015"] * # normal
1360 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1362 ) # "special" comment or quoted string
1363 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # more "normal"
1366 [\040\t]* # Nab whitespace.
1369 [^\\\x80-\xff\n\015()] * # normal*
1371 (?: \\ [^\x80-\xff] |
1373 [^\\\x80-\xff\n\015()] * # normal*
1374 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1377 [^\\\x80-\xff\n\015()] * # normal*
1380 [\040\t]* )* # If comment found, allow more spaces.
1384 [\040\t]* # Nab whitespace.
1387 [^\\\x80-\xff\n\015()] * # normal*
1389 (?: \\ [^\x80-\xff] |
1391 [^\\\x80-\xff\n\015()] * # normal*
1392 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1395 [^\\\x80-\xff\n\015()] * # normal*
1398 [\040\t]* )* # If comment found, allow more spaces.
1400 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1401 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1404 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1407 [\040\t]* # Nab whitespace.
1410 [^\\\x80-\xff\n\015()] * # normal*
1412 (?: \\ [^\x80-\xff] |
1414 [^\\\x80-\xff\n\015()] * # normal*
1415 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1418 [^\\\x80-\xff\n\015()] * # normal*
1421 [\040\t]* )* # If comment found, allow more spaces.
1422 # optional trailing comments
1425 [\040\t]* # Nab whitespace.
1428 [^\\\x80-\xff\n\015()] * # normal*
1430 (?: \\ [^\x80-\xff] |
1432 [^\\\x80-\xff\n\015()] * # normal*
1433 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1436 [^\\\x80-\xff\n\015()] * # normal*
1439 [\040\t]* )* # If comment found, allow more spaces.
1441 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1442 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1445 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1448 [\040\t]* # Nab whitespace.
1451 [^\\\x80-\xff\n\015()] * # normal*
1453 (?: \\ [^\x80-\xff] |
1455 [^\\\x80-\xff\n\015()] * # normal*
1456 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1459 [^\\\x80-\xff\n\015()] * # normal*
1462 [\040\t]* )* # If comment found, allow more spaces.
1463 # optional trailing comments
1466 [\040\t]* # Nab whitespace.
1469 [^\\\x80-\xff\n\015()] * # normal*
1471 (?: \\ [^\x80-\xff] |
1473 [^\\\x80-\xff\n\015()] * # normal*
1474 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1477 [^\\\x80-\xff\n\015()] * # normal*
1480 [\040\t]* )* # If comment found, allow more spaces.
1482 [\040\t]* # Nab whitespace.
1485 [^\\\x80-\xff\n\015()] * # normal*
1487 (?: \\ [^\x80-\xff] |
1489 [^\\\x80-\xff\n\015()] * # normal*
1490 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1493 [^\\\x80-\xff\n\015()] * # normal*
1496 [\040\t]* )* # If comment found, allow more spaces.
1498 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1499 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1502 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1505 [\040\t]* # Nab whitespace.
1508 [^\\\x80-\xff\n\015()] * # normal*
1510 (?: \\ [^\x80-\xff] |
1512 [^\\\x80-\xff\n\015()] * # normal*
1513 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1516 [^\\\x80-\xff\n\015()] * # normal*
1519 [\040\t]* )* # If comment found, allow more spaces.
1520 # optional trailing comments
1523 [\040\t]* # Nab whitespace.
1526 [^\\\x80-\xff\n\015()] * # normal*
1528 (?: \\ [^\x80-\xff] |
1530 [^\\\x80-\xff\n\015()] * # normal*
1531 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1534 [^\\\x80-\xff\n\015()] * # normal*
1537 [\040\t]* )* # If comment found, allow more spaces.
1539 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1540 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1543 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1546 [\040\t]* # Nab whitespace.
1549 [^\\\x80-\xff\n\015()] * # normal*
1551 (?: \\ [^\x80-\xff] |
1553 [^\\\x80-\xff\n\015()] * # normal*
1554 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1557 [^\\\x80-\xff\n\015()] * # normal*
1560 [\040\t]* )* # If comment found, allow more spaces.
1561 # optional trailing comments
1563 )* # additional domains
1565 [\040\t]* # Nab whitespace.
1568 [^\\\x80-\xff\n\015()] * # normal*
1570 (?: \\ [^\x80-\xff] |
1572 [^\\\x80-\xff\n\015()] * # normal*
1573 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1576 [^\\\x80-\xff\n\015()] * # normal*
1579 [\040\t]* )* # If comment found, allow more spaces.
1580 # optional trailing comments
1583 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1584 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1588 [^\\\x80-\xff\n\015"] * # normal
1589 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1593 [\040\t]* # Nab whitespace.
1596 [^\\\x80-\xff\n\015()] * # normal*
1598 (?: \\ [^\x80-\xff] |
1600 [^\\\x80-\xff\n\015()] * # normal*
1601 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1604 [^\\\x80-\xff\n\015()] * # normal*
1607 [\040\t]* )* # If comment found, allow more spaces.
1610 [\040\t]* # Nab whitespace.
1613 [^\\\x80-\xff\n\015()] * # normal*
1615 (?: \\ [^\x80-\xff] |
1617 [^\\\x80-\xff\n\015()] * # normal*
1618 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1621 [^\\\x80-\xff\n\015()] * # normal*
1624 [\040\t]* )* # If comment found, allow more spaces.
1626 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1627 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1631 [^\\\x80-\xff\n\015"] * # normal
1632 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1636 [\040\t]* # Nab whitespace.
1639 [^\\\x80-\xff\n\015()] * # normal*
1641 (?: \\ [^\x80-\xff] |
1643 [^\\\x80-\xff\n\015()] * # normal*
1644 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1647 [^\\\x80-\xff\n\015()] * # normal*
1650 [\040\t]* )* # If comment found, allow more spaces.
1654 [\040\t]* # Nab whitespace.
1657 [^\\\x80-\xff\n\015()] * # normal*
1659 (?: \\ [^\x80-\xff] |
1661 [^\\\x80-\xff\n\015()] * # normal*
1662 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1665 [^\\\x80-\xff\n\015()] * # normal*
1668 [\040\t]* )* # If comment found, allow more spaces.
1670 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1671 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1674 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1677 [\040\t]* # Nab whitespace.
1680 [^\\\x80-\xff\n\015()] * # normal*
1682 (?: \\ [^\x80-\xff] |
1684 [^\\\x80-\xff\n\015()] * # normal*
1685 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1688 [^\\\x80-\xff\n\015()] * # normal*
1691 [\040\t]* )* # If comment found, allow more spaces.
1692 # optional trailing comments
1695 [\040\t]* # Nab whitespace.
1698 [^\\\x80-\xff\n\015()] * # normal*
1700 (?: \\ [^\x80-\xff] |
1702 [^\\\x80-\xff\n\015()] * # normal*
1703 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1706 [^\\\x80-\xff\n\015()] * # normal*
1709 [\040\t]* )* # If comment found, allow more spaces.
1711 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1712 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1715 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1718 [\040\t]* # Nab whitespace.
1721 [^\\\x80-\xff\n\015()] * # normal*
1723 (?: \\ [^\x80-\xff] |
1725 [^\\\x80-\xff\n\015()] * # normal*
1726 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1729 [^\\\x80-\xff\n\015()] * # normal*
1732 [\040\t]* )* # If comment found, allow more spaces.
1733 # optional trailing comments
1740 Alan Other <user\@dom.ain>
1741 0: Alan Other <user@dom.ain>
1746 \"A. Other\" <user.1234\@dom.ain> (a comment)
1747 0: "A. Other" <user.1234@dom.ain>
1748 A. Other <user.1234\@dom.ain> (a comment)
1749 0: Other <user.1234@dom.ain>
1750 \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
1751 0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
1752 A missing angle <user\@some.where
1759 /abc\0def\00pqr\000xyz\0000AB/
1760 abc\0def\00pqr\000xyz\0000AB
1761 0: abc\x00def\x00pqr\x00xyz\x000AB
1762 abc456 abc\0def\00pqr\000xyz\0000ABCDE
1763 0: abc\x00def\x00pqr\x00xyz\x000AB
1765 /abc\x0def\x00pqr\x000xyz\x0000AB/
1766 abc\x0def\x00pqr\x000xyz\x0000AB
1767 0: abc\x0def\x00pqr\x000xyz\x0000AB
1768 abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE
1769 0: abc\x0def\x00pqr\x000xyz\x0000AB
1924 /([^.]*)\.([^:]*):[T ]+(.*)/
1925 track1.title:TBlah blah blah
1926 0: track1.title:TBlah blah blah
1931 /([^.]*)\.([^:]*):[T ]+(.*)/i
1932 track1.title:TBlah blah blah
1933 0: track1.title:TBlah blah blah
1938 /([^.]*)\.([^:]*):[t ]+(.*)/i
1939 track1.title:TBlah blah blah
1940 0: track1.title:TBlah blah blah
2163 /^(A)(B)(C)(D)(E)(F)(G)(H)(I)\8\9$/
2184 /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\12\123/
2200 /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
2244 /^([^a])([^\b])([^c]*)([^d]{3,4})/
2374 /\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/
2375 \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
2376 0: \x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff
2378 /P[^*]TAIRE[^*]{1,6}?LL/
2379 xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
2382 /P[^*]TAIRE[^*]{1,}?LL/
2383 xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
2397 /(\.\d\d((?=0)|\d(?=\d)))/
2416 Food is on the foo table
2422 The food is under the bar in the barn.
2423 0: food is under the bar in the bar
2424 1: d is under the bar in the
2427 The food is under the bar in the barn.
2428 0: food is under the bar
2432 I have 2 numbers: 53147
2433 0: I have 2 numbers: 53147
2434 1: I have 2 numbers: 53147
2438 I have 2 numbers: 53147
2439 0: I have 2 numbers: 53147
2440 1: I have 2 numbers: 5314
2444 I have 2 numbers: 53147
2450 I have 2 numbers: 53147
2456 I have 2 numbers: 53147
2457 0: I have 2 numbers: 53147
2458 1: I have 2 numbers: 5314
2462 I have 2 numbers: 53147
2463 0: I have 2 numbers: 53147
2464 1: I have 2 numbers:
2468 I have 2 numbers: 53147
2469 0: I have 2 numbers: 53147
2470 1: I have 2 numbers:
2474 I have 2 numbers: 53147
2475 0: I have 2 numbers: 53147
2476 1: I have 2 numbers:
2483 /^(\D*)(?=\d)(?!123)/
2534 /\d\d\/\d\d\/\d\d\d\d/
2538 /word (?:[a-zA-Z0-9]+ ){0,10}otherword/
2539 word cat dog elephant mussel cow horse canary baboon snake shark otherword
2540 0: word cat dog elephant mussel cow horse canary baboon snake shark otherword
2541 word cat dog elephant mussel cow horse canary baboon snake shark
2544 /word (?:[a-zA-Z0-9]+ ){0,300}otherword/
2545 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
2668 0: borfle\x0abib.gif
2672 0: borfle\x0abib.gif
2684 0: borfle\x0abib.gif\x0ano
2688 0: borfle\x0abib.gif\x0ano
2691 borfle\nbib.gif\nno\n
2695 borfle\nbib.gif\nno\n
2699 borfle\nbib.gif\nno\n
2700 0: borfle\x0abib.gif\x0ano\x0a
2703 borfle\nbib.gif\nno\n
2704 0: borfle\x0abib.gif\x0ano\x0a
2800 /^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
2804 /^\d\d\d\d\d\d\d\d\d\d\d\d/
2808 /^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/
2825 /^[abcdefghijklmnopqrstuvwxy0123456789]/
2882 the \"quick\" brown fox
2885 \"the \\\"quick\\\" brown fox\"
2886 0: "the \"quick\" brown fox"
2927 /<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
2928 <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>
2929 0: <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>
2930 1: BGCOLOR='#DBE9E9'
2931 2: align=left valign=top
2933 4: <a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)
2937 8: align=left valign=top
2939 10: align=left valign=top
3084 /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/
3088 /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
3089 0: /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
3091 /(?>(\.\d\d[1-9]?))\d+/
3103 /^((?>\w+)|(?>\s+))*$/
3104 now is the time for all good men to come to the aid of the party
3105 0: now is the time for all good men to come to the aid of the party
3109 this is not a line with only words and spaces!
3154 /((?>[^()]+)|\([^()]*\))+/
3159 /\(((?>[^()]+)|\([^()]+\))+\)/
3168 ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3196 /(a b(?x)c d (?-x)e f)/
3265 /(?s-i:more.*than).*million/i
3267 0: more than million
3269 0: more than MILLION
3270 more \n than Million
3271 0: more \x0a than Million
3276 more \n than \n million
3279 /(?:(?s-i)more.*than).*million/i
3281 0: more than million
3283 0: more than MILLION
3284 more \n than Million
3285 0: more \x0a than Million
3290 more \n than \n million
3323 /(?<=a(?i)b)(\w\w)c/
3339 /(?:(a)|b)(?(1)A|B)/
3365 /^(?(?=abc)\w{3}:|\d\d)$/
3377 /^(?(?!abc)\d\d|\w{3}:)$/
3389 /(?(?<=foo)bar|cat)/
3403 /(?(?<!foo)cat|bar)/
3417 /( \( )? [^()]+ (?(1) \) |) /x
3423 the quick (abcd) fox
3428 /( \( )? [^()]+ (?(1) \) ) /x
3434 the quick (abcd) fox
3479 /((?i)blah)\s+(?i:\1)/
3634 /(?(?=[^a-z]+[a-z]) \d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} ) /x
3658 /(?i:saturday|sunday)/
3698 /^([ab](?i)[cd]|[ef])/
3725 /^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/
3761 /(?<=(?<!foo)bar)baz/
3775 /The cases of aaaa and aaaaaa are missed out below because Perl does things/
3776 /differently. We know that odd, and maybe incorrect, things happen with/
3778 /recursive references in Perl, as far as 5.11.3 - see some stuff in test #2./
3814 /^(a\1?)(a\1?)(a\2?)(a\3?)$/
3868 /The following tests are taken from the Perl 5.005 test suite; some of them/
3869 /are compatible with 5.004, but I'd rather not have to sort them out./
4392 /[a-zA-Z_][a-zA-Z0-9_]*/
4396 /^a(bc+|b[eh])g|.h$/
4400 /(bc+d$|ef*g.|h?i(j|k))/
4418 /((((((((((a))))))))))/
4432 /((((((((((a))))))))))\10/
4446 /(((((((((a)))))))))/
4459 /multiple words of text/
4468 multiple words, yeah
4541 bbaababbabaaaaabbaaaabba
4946 /[a-zA-Z_][a-zA-Z0-9_]*/i
4950 /^a(bc+|b[eh])g|.h$/i
4954 /(bc+d$|ef*g.|h?i(j|k))/i
4974 /((((((((((a))))))))))/i
4988 /((((((((((a))))))))))\10/i
5002 /(((((((((a)))))))))/i
5015 /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i
5020 /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i
5025 /multiple words of text/i
5034 MULTIPLE WORDS, YEAH
5114 /a(?:b|c|d){4,5}(.)/
5119 /a(?:b|c|d){4,5}?(.)/
5131 /a(?:b|c|d){6,7}(.)/
5136 /a(?:b|c|d){6,7}?(.)/
5141 /a(?:b|c|d){5,6}(.)/
5146 /a(?:b|c|d){5,6}?(.)/
5151 /a(?:b|c|d){5,7}(.)/
5156 /a(?:b|c|d){5,7}?(.)/
5161 /a(?:b|(c|e){1,2}?|d)+?(.)/
5205 /(?:(f)(o)(o)|(b)(a)(r))*/
5241 /^(?:b|a(?=(.)))*\1/
5439 /(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/
5443 /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/
5444 caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
5445 0: caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
5468 /^a (?#xxx) (?#yyy) {3}c/x
5512 /((?s)^a(.))((?m)^b$)/
5597 /^(\()?blah(?(1)(\)))$/
5613 /^(\(+)?blah(?(1)(\)))$/
5751 /((?>[^()]+)|\([^()]*\))+/
5780 /^(?>(?(1)\.|())[^\W_](?>[a-z0-9-]*[^\W_])?)+$/
5800 0: the.quick.brown.fox
5828 the.quick.brown.fox-
5830 the.quick.brown.fox.
5832 the.quick.brown.fox_
5834 the.quick.brown.fox+
5837 /(?>.*)(?<=(abcd|wxyz))/
5846 a rather long string that doesn't end with one of them
5849 /word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/
5850 word cat dog elephant mussel cow horse canary baboon snake shark otherword
5851 0: word cat dog elephant mussel cow horse canary baboon snake shark otherword
5852 word cat dog elephant mussel cow horse canary baboon snake shark
5855 /word (?>[a-zA-Z0-9]+ ){0,30}otherword/
5856 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
5859 /(?<=\d{3}(?!999))foo/
5869 /(?<=(?!...999)\d{3})foo/
5879 /(?<=\d{3}(?!999)...)foo/
5889 /(?<=\d{3}...)(?<!999)foo/
5899 /<a[\s]+href[\s]*=[\s]* # find <a href=
5900 ([\"\'])? # find single or double quote
5901 (?(1) (.*?)\1 | ([^\s]+)) # if quote found, match up to next matching
5902 # quote, otherwise match up to next space
5909 <a href=\"abcd xyz pqr\" cats
5910 0: <a href="abcd xyz pqr"
5913 <a href=\'abcd xyz pqr\' cats
5914 0: <a href='abcd xyz pqr'
5918 /<a\s+href\s*=\s* # find <a href=
5919 (["'])? # find single or double quote
5920 (?(1) (.*?)\1 | (\S+)) # if quote found, match up to next matching
5921 # quote, otherwise match up to next space
5928 <a href=\"abcd xyz pqr\" cats
5929 0: <a href="abcd xyz pqr"
5932 <a href = \'abcd xyz pqr\' cats
5933 0: <a href = 'abcd xyz pqr'
5937 /<a\s+href(?>\s*)=(?>\s*) # find <a href=
5938 (["'])? # find single or double quote
5939 (?(1) (.*?)\1 | (\S+)) # if quote found, match up to next matching
5940 # quote, otherwise match up to next space
5947 <a href=\"abcd xyz pqr\" cats
5948 0: <a href="abcd xyz pqr"
5951 <a href = \'abcd xyz pqr\' cats
5952 0: <a href = 'abcd xyz pqr'
6007 > \x09\x0a\x0c\x0d\x0b<
6008 0: \x09\x0a\x0c\x0d\x0b
6011 > \x09\x0a\x0c\x0d\x0b<
6015 > \x09\x0a\x0c\x0d\x0b<
6016 0: \x09\x0a\x0c\x0d\x0b
6019 > \x09\x0a\x0c\x0d\x0b<
6020 0: \x09\x0a\x0c\x0d\x0b
6053 abc#not comment\n literal
6054 0: abc#not comment\x0a literal
6059 abc#not comment\n literal
6060 0: abc#not comment\x0a literal
6064 literal\E #more comment
6066 abc#not comment\n literal
6067 0: abc#not comment\x0a literal
6071 literal\E #more comment/x
6072 abc#not comment\n literal
6073 0: abc#not comment\x0a literal
6110 /((?x)x y z | a b c)/
6170 /-- This tests for an IPv6 address in the form where it can have up to
6171 eight components, one and only one of which is empty. This must be
6172 an internal component. --/
6174 /^(?!:) # colon disallowed at start
6176 (?: [0-9a-f]{1,4} | # 1-4 hex digits or
6177 (?(1)0 | () ) ) # if null previously matched, fail; else null
6178 : # followed by colon
6179 ){1,7} # end item; 1-7 of them required
6180 [0-9a-f]{1,4} $ # final hex number at end of string
6181 (?(1)|.) # check that there was an empty component
6189 a123:b342::324e:abcd
6190 0: a123:b342::324e:abcd
6192 a123:ddde:b342::324e:abcd
6193 0: a123:ddde:b342::324e:abcd
6195 a123:ddde:b342::324e:dcba:abcd
6196 0: a123:ddde:b342::324e:dcba:abcd
6198 a123:ddde:9999:b342::324e:dcba:abcd
6199 0: a123:ddde:9999:b342::324e:dcba:abcd
6205 a123:bce:ddde:9999:b342::324e:dcba:abcd
6207 a123::9999:b342::324e:dcba:abcd
6247 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
6250 /(?i)reg(?:ul(?:[aä]|ae)r|ex)/
6260 /Åæåä[à -ÿÀ-ß]+/
6262 0: \xc5\xe6\xe5\xe4\xe0
6264 0: \xc5\xe6\xe5\xe4\xff
6266 0: \xc5\xe6\xe5\xe4\xc0
6268 0: \xc5\xe6\xe5\xe4\xdf
6328 /(?:(?(1)\1a|b)(X|Y))+/
6336 /()()()()()()()()()(?:(?(10)\10a|b)(X|Y))+/
6362 "(?x)(?-x: \s*#\s*)"
6370 "(?x-is)(?:(?-ixs) \s*#\s*) include"
6519 /(a){0,3}(?(1)b|(c|))*D/
6533 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
6535 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6536 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6540 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
6542 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6543 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6546 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
6548 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6549 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6556 /^(?s)(?>.*)(?<!\n)/
6579 /( (A | (?(1)0|) )* )/x
6585 /( ( (?(1)0|) )* )/x
6650 /^%((?(?=[a])[^%])|b)*%$/
6791 /(?:(?>(a))b|(a)c)++/
6797 /(?=(?>(a))b|(a)c)(..)/
6810 /(?:(?>([ab])))+a=/+
6822 /((?>(a+)b)+(aabab))/
6914 /^(?=(?1))?[az]([abc])d/
7069 \x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a
7070 0: \x09 \xa0X\x0a\x0b\x0c\x0d
7071 \x09\x20\xa0\x0a\x0b\x0c\x0d\x0a
7072 0: \x09 \xa0\x0a\x0b\x0c\x0d
7073 \x09\x20\xa0\x0a\x0b\x0c
7074 0: \x09 \xa0\x0a\x0b\x0c
7077 \x09\x20\xa0\x0a\x0b
7102 /\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/
7103 >XY\x0aZ\x0aA\x0bNN\x0c
7104 0: XY\x0aZ\x0aA\x0bNN\x0c
7105 >\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
7106 0: \x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
7158 /^(a(b))\1\g1\g{1}\g-1\g{-1}\g{-02}Z/
7164 /(?<A>tom|bon)-\g{A}/
7190 /(?|(abc)|(xyz))(?1)/
7202 /^X(?5)(a)(?|(b)|(q))(c)(d)(Y)/
7211 /^X(?7)(a)(?|(b|(r)(s))|(q))(c)(d)(Y)/
7222 /^X(?7)(a)(?|(b|(?|(r)|(t))(s))|(q))(c)(d)(Y)/
7233 /(?'abc'\w+):\k<abc>{2}/
7247 /(?'abc'\w+):\g{abc}{2}/
7261 /^(?<ab>a)? (?(<ab>)b|c) (?('ab')d|e)/x
7278 /^(?(DEFINE) (?<A> a) (?<B> b) ) (?&A) (?&B) /x
7282 /(?<NAME>(?&NAME_PAT))\s+(?<ADDR>(?&ADDRESS_PAT))
7292 /(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))\b(?&byte)(\.(?&byte)){3}/
7312 /\b(?&byte)(\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))/
7330 now is the time for all good men to come to the aid of the party
7331 0: now is the time for all good men to come to the aid of the party
7335 this is not a line with only words and spaces!
7362 /([^()]++|\([^()]*\))+/
7367 /\(([^()]++|\([^()]+\))+\)/
7376 ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
7379 /^([^()]|\((?1)*\))*$/
7394 /^>abc>([^()]|\((?1)*\))*<xyz<$/
7402 0: >abc>(1(2)3)<xyz<
7405 /^(?:((.)(?1)\2|)|((.)(?3)\4|.))$/i
7410 Satanoscillatemymetallicsonatas
7411 0: Satanoscillatemymetallicsonatas
7414 3: Satanoscillatemymetallicsonatas
7416 AmanaplanacanalPanama
7417 0: AmanaplanacanalPanama
7420 3: AmanaplanacanalPanama
7423 0: AblewasIereIsawElba
7426 3: AblewasIereIsawElba
7433 /^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/
7465 /((< (?: (?(R) \d++ | [^<>]*+) | (?2)) * >))/x
7503 /a+b?(*PRUNE)c+(*FAIL)/
7507 /a+b?(*COMMIT)c+(*FAIL)/
7511 /a+b?(*SKIP)c+(*FAIL)/
7515 /^(?:aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
7531 /^(aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
7554 /a+b?(*THEN)c+(*FAIL)/
7558 /(A (A|B(*ACCEPT)|C) D)(E)/x
7582 /^\W*+(?:((.)\W*+(?1)\W*+\2|)|((.)\W*+(?3)\W*+\4|\W*+.\W*+))\W*+$/i
7587 Satan, oscillate my metallic sonatas!
7588 0: Satan, oscillate my metallic sonatas!
7591 3: Satan, oscillate my metallic sonatas
7593 A man, a plan, a canal: Panama!
7594 0: A man, a plan, a canal: Panama!
7597 3: A man, a plan, a canal: Panama
7599 Able was I ere I saw Elba.
7600 0: Able was I ere I saw Elba.
7603 3: Able was I ere I saw Elba
7631 0: ablewasiereisawelba
7632 1: ablewasiereisawelba
7657 /(?<X>a)(?<=b(?&X))/
7662 /^(?|(abc)|(def))\1/
7676 /^(?|(abc)|(def))(?1)/
7690 /(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) |b(?<quote> (?<apostrophe>')|(?<realquote>")) ) (?('quote')[a-z]+|[0-9]+)/xJ
7709 /(?:(?1)|B)(A(*F)|C)/
7721 /^(?:(?1)|B)(A(*F)|C)/
7737 /(?:(?1)|B)(A(*ACCEPT)XX|C)D/
7760 /(?(DEFINE)(A))B(?1)C/
7764 /(?(DEFINE)((A)\2))B(?1)C/
7768 /(?<pn> \( ( [^()]++ | (?&pn) )* \) )/x
7814 /^(?&t)(?(DEFINE)(?<t>a\Kb))$/
7818 /^([^()]|\((?1)*\))*$/
7826 /(?P<L1>(?P<L2>0)(?P>L1)|(?P>L2))/
7839 /(?P<L1>(?P<L2>0)|(?P>L2)(?P>L1))/
7853 /--- This one does fail, as expected, in Perl. It needs the complex item at the
7854 end of the pattern. A single letter instead of (B|D) makes it not fail,
7855 which I think is a Perl bug. --- /
7861 /--- Check the use of names for failure ---/
7863 /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K
7871 /--- Force no study, otherwise mark is not seen. The studied version is in
7872 test 2 because it isn't Perl-compatible. ---/
7874 /(*MARK:A)(*SKIP:B)(C|X)/KSS
7882 /^(A(*THEN:A)B|C(*THEN:B)D)/K
7888 /^(?:A(*THEN:A)B|C(*THEN:B)D)/K
7892 /^(?>A(*THEN:A)B|C(*THEN:B)D)/K
7896 /--- This should succeed, as the skip causes bump to offset 1 (the mark). Note
7897 that we have to have something complicated such as (B|Z) at the end because,
7898 for Perl, a simple character somehow causes an unwanted optimization to mess
7899 with the handling of backtracking verbs. ---/
7901 /A(*MARK:A)A+(*SKIP:A)(B|Z) | AC/xK
7905 /--- Test skipping over a non-matching mark. ---/
7907 /A(*MARK:A)A+(*MARK:B)(*SKIP:A)(B|Z) | AC/xK
7911 /--- Check shorthand for MARK ---/
7913 /A(*:A)A+(*SKIP:A)(B|Z) | AC/xK
7917 /--- Don't loop! Force no study, otherwise mark is not seen. ---/
7919 /(*:A)A+(*SKIP:A)(B|Z)/KSS
7923 /--- This should succeed, as a non-existent skip name disables the skip ---/
7925 /A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/xK
7929 /A(*MARK:A)A+(*SKIP:B)(B|Z) | AC(*:B)/xK
7934 /--- COMMIT at the start of a pattern should act like an anchor. Again,
7935 however, we need the complication for Perl. ---/
7937 /(*COMMIT)(A|P)(B|P)(C|P)/
7948 /--- COMMIT inside an atomic group can't stop backtracking over the group. ---/
7950 /(\w+)(?>b(*COMMIT))\w{2}/
7955 /(\w+)b(*COMMIT)\w{2}/
7959 /--- Check opening parens in comment when seeking forward reference. ---/
7961 /(?&t)(?#()(?(DEFINE)(?<t>a))/
7965 /--- COMMIT should override THEN ---/
7967 /(?>(*COMMIT)(?>yes|no)(*THEN)(*F))?/
7971 /(?>(*COMMIT)(yes|no)(*THEN)(*F))?/
7989 /(?P<abn>(?P=abn)xxx|)+/
8013 /^(?&t)*+(?(DEFINE)(?<t>a))\w$/
8021 /^(?&t)*(?(DEFINE)(?<t>a))\w$/
8148 /(foo ( \( ((?:(?> [^()]+ )|(?2))*) \) ) )/x
8149 foo(bar(baz)+baz(bop))
8150 0: foo(bar(baz)+baz(bop))
8151 1: foo(bar(baz)+baz(bop))
8152 2: (bar(baz)+baz(bop))
8153 3: bar(baz)+baz(bop)
8155 /(A (A|B(*ACCEPT)|C) D)(E)/x
8184 /(?(?=(a(*ACCEPT)z))a)/
8207 /(?(DEFINE)(a))?b(?1)/
8244 /(?>(?&t)c|(?&t))(?(DEFINE)(?<t>a|b(*PRUNE)c))/
8252 /--- Checking revised (*THEN) handling ---/
8256 /^.*? (a(*THEN)b) c/x
8260 /^.*? (a(*THEN)b|(*F)) c/x
8265 /^.*? ( (a(*THEN)b) | (*F) ) c/x
8271 /^.*? ( (a(*THEN)b) ) c/x
8275 /--- Non-capture ---/
8277 /^.*? (?:a(*THEN)b) c/x
8281 /^.*? (?:a(*THEN)b|(*F)) c/x
8285 /^.*? (?: (?:a(*THEN)b) | (*F) ) c/x
8289 /^.*? (?: (?:a(*THEN)b) ) c/x
8295 /^.*? (?>a(*THEN)b) c/x
8299 /^.*? (?>a(*THEN)b|(*F)) c/x
8303 /^.*? (?> (?>a(*THEN)b) | (*F) ) c/x
8307 /^.*? (?> (?>a(*THEN)b) ) c/x
8311 /--- Possessive capture ---/
8313 /^.*? (a(*THEN)b)++ c/x
8317 /^.*? (a(*THEN)b|(*F))++ c/x
8322 /^.*? ( (a(*THEN)b)++ | (*F) )++ c/x
8328 /^.*? ( (a(*THEN)b)++ )++ c/x
8332 /--- Possessive non-capture ---/
8334 /^.*? (?:a(*THEN)b)++ c/x
8338 /^.*? (?:a(*THEN)b|(*F))++ c/x
8342 /^.*? (?: (?:a(*THEN)b)++ | (*F) )++ c/x
8346 /^.*? (?: (?:a(*THEN)b)++ )++ c/x
8350 /--- Condition assertion ---/
8352 /^(?(?=a(*THEN)b)ab|ac)/
8358 /^.*?(?(?=a)a|b(*THEN)c)/
8362 /^.*?(?:(?(?=a)a|b(*THEN)c)|d)/
8366 /^.*?(?(?=a)a(*THEN)b|c)/
8376 /------------------------------/
8383 /(?>(a)(*:m))/imsxSK
8393 /(?<=(a(*ACCEPT)b))c/
8398 /(?<=(a(*COMMIT)b))c/
8436 /(*MARK:A)(*PRUNE:B)(C|X)/KS
8444 /(*MARK:A)(*PRUNE:B)(C|X)/KSS
8452 /(*MARK:A)(*THEN:B)(C|X)/KS
8460 /(*MARK:A)(*THEN:B)(C|X)/KSY
8468 /(*MARK:A)(*THEN:B)(C|X)/KSS
8476 /--- This should fail, as the skip causes a bump to offset 3 (the skip) ---/
8478 /A(*MARK:A)A+(*SKIP)(B|Z) | AC/xK
8484 /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xK
8488 /A(*:A)A+(*SKIP)(B|Z) | AC/xK
8492 /--- This should fail, as a null name is the same as no name ---/
8494 /A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xK
8498 /--- A check on what happens after hitting a mark and them bumping along to
8499 something that does not even start. Perl reports tags after the failures here,
8500 though it does not when the individual letters are made into something
8501 more complicated. ---/
8521 /^(A(*THEN:A)B|C(*THEN:B)D)/K
8537 /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K
8553 /--- An empty name does not pass back an empty string. It is the same as if no
8554 name were given. ---/
8556 /^(A(*PRUNE:)B|C(*PRUNE:B)D)/K
8565 /--- PRUNE goes to next bumpalong; COMMIT does not. ---/
8572 /--- Mark names can be duplicated ---/
8601 /A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xK
8605 /a(*PRUNE:X)bc|qq/KY
8617 /(?=a(*MARK:A)b)..x/K
8626 /(?=a(*MARK:A)b)..(*:Y)x/K
8635 /(?=a(*PRUNE:A)b)..x/K
8644 /(?=a(*PRUNE:A)b)..(*:Y)x/K
8653 /(?=a(*THEN:A)b)..x/K
8662 /(?=a(*THEN:A)b)..(*:Y)x/K
8671 /(another)?(\1?)test/
8677 /(another)?(\1+)test/
8681 /(a(*COMMIT)b){0}a(?1)|aac/
8731 /(?>.*?)(?<=(abcd)|(wxyz))/
8740 /(?>.*)(?<=(abcd)|(wxyz))/
8757 /(?:(a(*PRUNE)b)){0}(?:(?1)|ac)/
8761 /(?:(a(*SKIP)b)){0}(?:(?1)|ac)/
8769 /A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/xK
8773 /a(*SKIP:m)x|ac(*:n)(*SKIP:n)d|ac/K
8778 /A(*SKIP:m)x|A(*SKIP:n)x|AB/K
8782 /((*SKIP:r)d){0}a(*SKIP:m)x|ac(*:n)|ac/K
8787 /-- Tests that try to figure out how Perl works. My hypothesis is that the
8788 first verb that is backtracked onto is the one that acts. This seems to be
8789 the case almost all the time, but there is one exception that is perhaps a
8792 /-- This matches "aaaac"; each PRUNE advances one character until the subject
8793 no longer starts with 5 'a's. --/
8795 /aaaaa(*PRUNE)b|a+c/
8799 /-- Putting SKIP in front of PRUNE makes no difference, as it is never
8800 backtracked onto, whether or not it has a label. --/
8802 /aaaaa(*SKIP)(*PRUNE)b|a+c/
8806 /aaaaa(*SKIP:N)(*PRUNE)b|a+c/
8810 /aaaa(*:N)a(*SKIP:N)(*PRUNE)b|a+c/
8814 /-- Putting THEN in front makes no difference. */
8816 /aaaaa(*THEN)(*PRUNE)b|a+c/
8820 /-- However, putting COMMIT in front of the prune changes it to "no match". I
8821 think this is inconsistent and possibly a bug. For the moment, running this
8822 test is moved out of the Perl-compatible file. --/
8824 /aaaaa(*COMMIT)(*PRUNE)b|a+c/
8827 /---- OK, lets play the same game again using SKIP instead of PRUNE. ----/
8829 /-- This matches "ac" because SKIP forces the next match to start on the
8836 /-- Putting PRUNE in front makes no difference. --/
8838 /aaaaa(*PRUNE)(*SKIP)b|a+c/
8842 /-- Putting THEN in front makes no difference. --/
8844 /aaaaa(*THEN)(*SKIP)b|a+c/
8848 /-- In this case, neither does COMMIT. This still matches "ac". --/
8850 /aaaaa(*COMMIT)(*SKIP)b|a+c/
8854 /-- This gives "no match", as expected. --/
8856 /aaaaa(*COMMIT)b|a+c/
8861 /------ Tests using THEN ------/
8863 /-- This matches "aaaaaac", as expected. --/
8869 /-- Putting SKIP in front makes no difference. --/
8871 /aaaaa(*SKIP)(*THEN)b|a+c/
8875 /-- Putting PRUNE in front makes no difference. --/
8877 /aaaaa(*PRUNE)(*THEN)b|a+c/
8881 /-- Putting COMMIT in front makes no difference. --/
8883 /aaaaa(*COMMIT)(*THEN)b|a+c/
8887 /-- End of "priority" tests --/
8889 /aaaaa(*:m)(*PRUNE:m)(*SKIP:m)m|a+/
8893 /aaaaa(*:m)(*MARK:m)(*PRUNE)(*SKIP:m)m|a+/
8897 /aaaaa(*:n)(*PRUNE:m)(*SKIP:m)m|a+/
8901 /aaaaa(*:n)(*MARK:m)(*PRUNE)(*SKIP:m)m|a+/
8905 /a(*MARK:A)aa(*PRUNE:A)a(*SKIP:A)b|a+c/
8909 /a(*MARK:A)aa(*MARK:A)a(*SKIP:A)b|a+c/
8913 /aaa(*PRUNE:A)a(*SKIP:A)b|a+c/
8917 /aaa(*MARK:A)a(*SKIP:A)b|a+c/
8921 /a(*:m)a(*COMMIT)(*SKIP:m)b|a+c/K
8930 /(a(*COMMIT)b)c|abd/
8937 /(?=a(*COMMIT)b)abc|abd/
8943 /(?>a(*COMMIT)b)c|abd/
8949 /a(?=b(*COMMIT)c)[^d]|abd/
8961 /a(?>b(*COMMIT)c)d|abd/
8969 /(?>a(*COMMIT)b)c|abd/
8973 /(?>a(*COMMIT)c)d|abd/
8977 /((?=a(*COMMIT)b)ab|ac){0}(?:(?1)|a(c))/
8983 /-- These tests were formerly in test 2, but changes in PCRE and Perl have
8984 made them compatible. --/
9009 /A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xK
9013 /^((abc|abcx)(*THEN)y|abcd)/
9022 /^((yes|no)(*THEN)(*F))?/
9026 /(A (.*) C? (*THEN) | A D) (*FAIL)/x
9030 /(A (.*) C? (*THEN) | A D) z/x
9034 /(A (.*) C? (*THEN) | A D) \s* (*FAIL)/x
9038 /(A (.*) C? (*THEN) | A D) \s* z/x
9042 /(A (.*) (?:C|) (*THEN) | A D) (*FAIL)/x
9046 /(A (.*) (?:C|) (*THEN) | A D) z/x
9050 /(A (.*) C{0,6} (*THEN) | A D) (*FAIL)/x
9054 /(A (.*) C{0,6} (*THEN) | A D) z/x
9058 /(A (.*) (CE){0,6} (*THEN) | A D) (*FAIL)/x
9062 /(A (.*) (CE){0,6} (*THEN) | A D) z/x
9066 /(A (.*) (CE*){0,6} (*THEN) | A D) (*FAIL)/x
9070 /(A (.*) (CE*){0,6} (*THEN) | A D) z/x
9074 /(?=a(*COMMIT)b|ac)ac|ac/
9078 /(?=a(*COMMIT)b|(ac)) ac | (a)c/x
9084 /(?(?!b(*THEN)a)bn|bnn)/
9088 /(?!b(*SKIP)a)bn|bnn/
9092 /(?(?!b(*SKIP)a)bn|bnn)/
9096 /(?!b(*PRUNE)a)bn|bnn/
9100 /(?(?!b(*PRUNE)a)bn|bnn)/
9104 /(?!b(*COMMIT)a)bn|bnn/
9108 /(?(?!b(*COMMIT)a)bn|bnn)/
9112 /(?=b(*SKIP)a)bn|bnn/
9116 /(?=b(*THEN)a)bn|bnn/
9144 /(?!a(*COMMIT)b)ac|cd/
9152 /^(A(*THEN)B|C(*THEN)D)/
9157 /(*:m(m)(?&y)(?(DEFINE)(?<y>b))/K
9162 /(*PRUNE:m(m)(?&y)(?(DEFINE)(?<y>b))/K
9167 /(*SKIP:m(m)(?&y)(?(DEFINE)(?<y>b))/K
9171 /(*THEN:m(m)(?&y)(?(DEFINE)(?<y>b))/K
9214 /(?:(?<n>foo)|(?<n>bar))\k<n>/J
9223 /(?<n>A)(?:(?<n>foo)|(?<n>bar))\k<n>/J
9240 /^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
9241 1 IN SOA non-sp1 non-sp2(
9242 0: 1 IN SOA non-sp1 non-sp2(
9247 /^ (?:(?<A>A)|(?'B'B)(?<A>A)) (?('A')x) (?(<B>)y)$/xJ
9280 / ^ (?> a + ) b $ /x
9284 / ^ ( a + ) + + \w $ /x
9316 /-- End of testinput1 --/