1 # This set of tests is for features that are compatible with all versions of
2 # Perl >= 5.10, in non-UTF mode. It should run clean for the 8-bit, 16-bit, and
3 # 32-bit PCRE libraries, and also using the perltest.pl script.
6 #newline_default lf any anycrlf
11 0: the quick brown fox
12 What do you know about the quick brown fox?
13 0: the quick brown fox
17 What do you know about THE QUICK BROWN FOX?
20 /The quick brown fox/i
22 0: the quick brown fox
24 0: The quick brown FOX
25 What do you know about the quick brown fox?
26 0: the quick brown fox
27 What do you know about THE QUICK BROWN FOX?
28 0: THE QUICK BROWN FOX
30 /abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
31 abcd\t\n\r\f\a\e9;\$\\?caxyz
32 0: abcd\x09\x0a\x0d\x0c\x07\x1b9;$\?caxyz
34 /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
35 abxyzpqrrrabbxyyyypqAzz
36 0: abxyzpqrrrabbxyyyypqAzz
37 abxyzpqrrrabbxyyyypqAzz
38 0: abxyzpqrrrabbxyyyypqAzz
39 aabxyzpqrrrabbxyyyypqAzz
40 0: aabxyzpqrrrabbxyyyypqAzz
41 aaabxyzpqrrrabbxyyyypqAzz
42 0: aaabxyzpqrrrabbxyyyypqAzz
43 aaaabxyzpqrrrabbxyyyypqAzz
44 0: aaaabxyzpqrrrabbxyyyypqAzz
45 abcxyzpqrrrabbxyyyypqAzz
46 0: abcxyzpqrrrabbxyyyypqAzz
47 aabcxyzpqrrrabbxyyyypqAzz
48 0: aabcxyzpqrrrabbxyyyypqAzz
49 aaabcxyzpqrrrabbxyyyypAzz
50 0: aaabcxyzpqrrrabbxyyyypAzz
51 aaabcxyzpqrrrabbxyyyypqAzz
52 0: aaabcxyzpqrrrabbxyyyypqAzz
53 aaabcxyzpqrrrabbxyyyypqqAzz
54 0: aaabcxyzpqrrrabbxyyyypqqAzz
55 aaabcxyzpqrrrabbxyyyypqqqAzz
56 0: aaabcxyzpqrrrabbxyyyypqqqAzz
57 aaabcxyzpqrrrabbxyyyypqqqqAzz
58 0: aaabcxyzpqrrrabbxyyyypqqqqAzz
59 aaabcxyzpqrrrabbxyyyypqqqqqAzz
60 0: aaabcxyzpqrrrabbxyyyypqqqqqAzz
61 aaabcxyzpqrrrabbxyyyypqqqqqqAzz
62 0: aaabcxyzpqrrrabbxyyyypqqqqqqAzz
63 aaaabcxyzpqrrrabbxyyyypqAzz
64 0: aaaabcxyzpqrrrabbxyyyypqAzz
65 abxyzzpqrrrabbxyyyypqAzz
66 0: abxyzzpqrrrabbxyyyypqAzz
67 aabxyzzzpqrrrabbxyyyypqAzz
68 0: aabxyzzzpqrrrabbxyyyypqAzz
69 aaabxyzzzzpqrrrabbxyyyypqAzz
70 0: aaabxyzzzzpqrrrabbxyyyypqAzz
71 aaaabxyzzzzpqrrrabbxyyyypqAzz
72 0: aaaabxyzzzzpqrrrabbxyyyypqAzz
73 abcxyzzpqrrrabbxyyyypqAzz
74 0: abcxyzzpqrrrabbxyyyypqAzz
75 aabcxyzzzpqrrrabbxyyyypqAzz
76 0: aabcxyzzzpqrrrabbxyyyypqAzz
77 aaabcxyzzzzpqrrrabbxyyyypqAzz
78 0: aaabcxyzzzzpqrrrabbxyyyypqAzz
79 aaaabcxyzzzzpqrrrabbxyyyypqAzz
80 0: aaaabcxyzzzzpqrrrabbxyyyypqAzz
81 aaaabcxyzzzzpqrrrabbbxyyyypqAzz
82 0: aaaabcxyzzzzpqrrrabbbxyyyypqAzz
83 aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
84 0: aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
85 aaabcxyzpqrrrabbxyyyypABzz
86 0: aaabcxyzpqrrrabbxyyyypABzz
87 aaabcxyzpqrrrabbxyyyypABBzz
88 0: aaabcxyzpqrrrabbxyyyypABBzz
89 >>>aaabxyzpqrrrabbxyyyypqAzz
90 0: aaabxyzpqrrrabbxyyyypqAzz
91 >aaaabxyzpqrrrabbxyyyypqAzz
92 0: aaaabxyzpqrrrabbxyyyypqAzz
93 >>>>abcxyzpqrrrabbxyyyypqAzz
94 0: abcxyzpqrrrabbxyyyypqAzz
96 abxyzpqrrabbxyyyypqAzz
98 abxyzpqrrrrabbxyyyypqAzz
100 abxyzpqrrrabxyyyypqAzz
102 aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
104 aaaabcxyzzzzpqrrrabbbxyyypqAzz
106 aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
332 /^.+[0-9][0-9][0-9]$/
345 /^.+?[0-9][0-9][0-9]$/
358 /^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
359 abc!pqr=apquxz.ixr.zzz.ac.uk
360 0: abc!pqr=apquxz.ixr.zzz.ac.uk
364 !pqr=apquxz.ixr.zzz.ac.uk
366 abc!=apquxz.ixr.zzz.ac.uk
368 abc!pqr=apquxz:ixr.zzz.ac.uk
370 abc!pqr=apquxz.ixr.zzz.ac.ukk
374 Well, we need a colon: somewhere
415 /^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
434 /^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
435 1 IN SOA non-sp1 non-sp2(
436 0: 1 IN SOA non-sp1 non-sp2(
440 1 IN SOA non-sp1 non-sp2 (
441 0: 1 IN SOA non-sp1 non-sp2 (
446 1IN SOA non-sp1 non-sp2(
449 /^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/
469 /^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/
494 /^(?=ab(de))(abd)(e)/
501 /^(?!(ab)de|x)(abd)(f)/
515 /^[\da-f](\.[\da-f])*$/i
546 / ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/x
555 /(?x) ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/
575 /^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
591 /^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
603 /^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
605 0: a+ Z0+\x08\x0a\x1d\x12
707 /\A(abc|def)=(\1){2,3}\Z/
720 /^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\11*(\3\4)\1(?#)2$/
736 0: abcdefghijkkkkcda2
750 /(cat(a(ract|tonic)|erpillar)) \1()2(3)/
752 0: cataract cataract23
758 catatonic catatonic23
759 0: catatonic catatonic23
765 caterpillar caterpillar23
766 0: caterpillar caterpillar23
774 /^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]/
775 From abcd Mon Sep 01 12:33:02 1997
776 0: From abcd Mon Sep 01 12:33
779 /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
780 From abcd Mon Sep 01 12:33:02 1997
781 0: From abcd Mon Sep 01 12:33
783 From abcd Mon Sep 1 12:33:02 1997
784 0: From abcd Mon Sep 1 12:33
787 From abcd Sep 01 12:33:02 1997
797 the quick brown\t fox
801 foobar is foolish see?
805 /(?:(?!foo)...|^.{0,2})bar(.*)/
819 /^(\D*)(?=\d)(?!123)/
827 /^1234(?# test newlines
832 /^1234 #comment in extended re
888 /^[ab]{1,3}?(ab*?|b)/
899 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
900 \) )* # optional leading comment
902 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
903 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
905 " (?: # opening quote...
906 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
908 \\ [^\x80-\xff] # Escaped something (something != CR)
911 (?: (?: [\040\t] | \(
912 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
913 \) )* \. (?: [\040\t] | \(
914 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
916 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
917 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
919 " (?: # opening quote...
920 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
922 \\ [^\x80-\xff] # Escaped something (something != CR)
924 ) )* # further okay, if led by a period
926 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
927 \) )* @ (?: [\040\t] | \(
928 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
930 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
931 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
933 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
935 ) # initial subdomain
938 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
939 \) )* \. # if led by a period...
941 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
943 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
944 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
946 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
953 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
954 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
956 " (?: # opening quote...
957 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
959 \\ [^\x80-\xff] # Escaped something (something != CR)
961 ) # one word, optionally followed by....
963 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] | # atom and space parts, or...
965 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
966 \) | # comments, or...
968 " (?: # opening quote...
969 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
971 \\ [^\x80-\xff] # Escaped something (something != CR)
976 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
978 (?: @ (?: [\040\t] | \(
979 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
981 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
982 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
984 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
986 ) # initial subdomain
989 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
990 \) )* \. # if led by a period...
992 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
994 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
995 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
997 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1002 (?: (?: [\040\t] | \(
1003 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1004 \) )* , (?: [\040\t] | \(
1005 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1006 \) )* @ (?: [\040\t] | \(
1007 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1009 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1010 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1012 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1014 ) # initial subdomain
1017 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1018 \) )* \. # if led by a period...
1020 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1022 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1023 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1025 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1029 )* # further okay, if led by comma
1032 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1033 \) )* )? # optional route
1035 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1036 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1038 " (?: # opening quote...
1039 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
1041 \\ [^\x80-\xff] # Escaped something (something != CR)
1042 )* " # closing quote
1044 (?: (?: [\040\t] | \(
1045 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1046 \) )* \. (?: [\040\t] | \(
1047 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1049 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1050 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1052 " (?: # opening quote...
1053 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
1055 \\ [^\x80-\xff] # Escaped something (something != CR)
1056 )* " # closing quote
1057 ) )* # further okay, if led by a period
1059 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1060 \) )* @ (?: [\040\t] | \(
1061 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1063 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1064 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1066 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1068 ) # initial subdomain
1071 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1072 \) )* \. # if led by a period...
1074 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1076 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1077 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1079 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1085 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1086 \) )* > # trailing >
1089 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1090 \) )* # optional trailing comment
1092 Alan Other <user\@dom.ain>
1093 0: Alan Other <user@dom.ain>
1098 \"A. Other\" <user.1234\@dom.ain> (a comment)
1099 0: "A. Other" <user.1234@dom.ain> (a comment)
1100 A. Other <user.1234\@dom.ain> (a comment)
1101 0: Other <user.1234@dom.ain> (a comment)
1102 \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
1103 0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
1104 A missing angle <user\@some.where
1110 /[\040\t]* # Nab whitespace.
1113 [^\\\x80-\xff\n\015()] * # normal*
1115 (?: \\ [^\x80-\xff] |
1117 [^\\\x80-\xff\n\015()] * # normal*
1118 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1121 [^\\\x80-\xff\n\015()] * # normal*
1124 [\040\t]* )* # If comment found, allow more spaces.
1125 # optional leading comment
1128 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1129 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1133 [^\\\x80-\xff\n\015"] * # normal
1134 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1138 [\040\t]* # Nab whitespace.
1141 [^\\\x80-\xff\n\015()] * # normal*
1143 (?: \\ [^\x80-\xff] |
1145 [^\\\x80-\xff\n\015()] * # normal*
1146 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1149 [^\\\x80-\xff\n\015()] * # normal*
1152 [\040\t]* )* # If comment found, allow more spaces.
1155 [\040\t]* # Nab whitespace.
1158 [^\\\x80-\xff\n\015()] * # normal*
1160 (?: \\ [^\x80-\xff] |
1162 [^\\\x80-\xff\n\015()] * # normal*
1163 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1166 [^\\\x80-\xff\n\015()] * # normal*
1169 [\040\t]* )* # If comment found, allow more spaces.
1171 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1172 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1176 [^\\\x80-\xff\n\015"] * # normal
1177 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1181 [\040\t]* # Nab whitespace.
1184 [^\\\x80-\xff\n\015()] * # normal*
1186 (?: \\ [^\x80-\xff] |
1188 [^\\\x80-\xff\n\015()] * # normal*
1189 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1192 [^\\\x80-\xff\n\015()] * # normal*
1195 [\040\t]* )* # If comment found, allow more spaces.
1199 [\040\t]* # Nab whitespace.
1202 [^\\\x80-\xff\n\015()] * # normal*
1204 (?: \\ [^\x80-\xff] |
1206 [^\\\x80-\xff\n\015()] * # normal*
1207 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1210 [^\\\x80-\xff\n\015()] * # normal*
1213 [\040\t]* )* # If comment found, allow more spaces.
1215 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1216 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1219 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1222 [\040\t]* # Nab whitespace.
1225 [^\\\x80-\xff\n\015()] * # normal*
1227 (?: \\ [^\x80-\xff] |
1229 [^\\\x80-\xff\n\015()] * # normal*
1230 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1233 [^\\\x80-\xff\n\015()] * # normal*
1236 [\040\t]* )* # If comment found, allow more spaces.
1237 # optional trailing comments
1240 [\040\t]* # Nab whitespace.
1243 [^\\\x80-\xff\n\015()] * # normal*
1245 (?: \\ [^\x80-\xff] |
1247 [^\\\x80-\xff\n\015()] * # normal*
1248 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1251 [^\\\x80-\xff\n\015()] * # normal*
1254 [\040\t]* )* # If comment found, allow more spaces.
1256 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1257 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1260 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1263 [\040\t]* # Nab whitespace.
1266 [^\\\x80-\xff\n\015()] * # normal*
1268 (?: \\ [^\x80-\xff] |
1270 [^\\\x80-\xff\n\015()] * # normal*
1271 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1274 [^\\\x80-\xff\n\015()] * # normal*
1277 [\040\t]* )* # If comment found, allow more spaces.
1278 # optional trailing comments
1283 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1284 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1288 [^\\\x80-\xff\n\015"] * # normal
1289 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1294 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # "normal" atoms and or spaces
1298 [^\\\x80-\xff\n\015()] * # normal*
1300 (?: \\ [^\x80-\xff] |
1302 [^\\\x80-\xff\n\015()] * # normal*
1303 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1306 [^\\\x80-\xff\n\015()] * # normal*
1311 [^\\\x80-\xff\n\015"] * # normal
1312 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1314 ) # "special" comment or quoted string
1315 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # more "normal"
1318 [\040\t]* # Nab whitespace.
1321 [^\\\x80-\xff\n\015()] * # normal*
1323 (?: \\ [^\x80-\xff] |
1325 [^\\\x80-\xff\n\015()] * # normal*
1326 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1329 [^\\\x80-\xff\n\015()] * # normal*
1332 [\040\t]* )* # If comment found, allow more spaces.
1336 [\040\t]* # Nab whitespace.
1339 [^\\\x80-\xff\n\015()] * # normal*
1341 (?: \\ [^\x80-\xff] |
1343 [^\\\x80-\xff\n\015()] * # normal*
1344 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1347 [^\\\x80-\xff\n\015()] * # normal*
1350 [\040\t]* )* # If comment found, allow more spaces.
1352 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1353 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1356 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1359 [\040\t]* # Nab whitespace.
1362 [^\\\x80-\xff\n\015()] * # normal*
1364 (?: \\ [^\x80-\xff] |
1366 [^\\\x80-\xff\n\015()] * # normal*
1367 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1370 [^\\\x80-\xff\n\015()] * # normal*
1373 [\040\t]* )* # If comment found, allow more spaces.
1374 # optional trailing comments
1377 [\040\t]* # Nab whitespace.
1380 [^\\\x80-\xff\n\015()] * # normal*
1382 (?: \\ [^\x80-\xff] |
1384 [^\\\x80-\xff\n\015()] * # normal*
1385 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1388 [^\\\x80-\xff\n\015()] * # normal*
1391 [\040\t]* )* # If comment found, allow more spaces.
1393 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1394 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1397 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1400 [\040\t]* # Nab whitespace.
1403 [^\\\x80-\xff\n\015()] * # normal*
1405 (?: \\ [^\x80-\xff] |
1407 [^\\\x80-\xff\n\015()] * # normal*
1408 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1411 [^\\\x80-\xff\n\015()] * # normal*
1414 [\040\t]* )* # If comment found, allow more spaces.
1415 # optional trailing comments
1418 [\040\t]* # Nab whitespace.
1421 [^\\\x80-\xff\n\015()] * # normal*
1423 (?: \\ [^\x80-\xff] |
1425 [^\\\x80-\xff\n\015()] * # normal*
1426 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1429 [^\\\x80-\xff\n\015()] * # normal*
1432 [\040\t]* )* # If comment found, allow more spaces.
1434 [\040\t]* # Nab whitespace.
1437 [^\\\x80-\xff\n\015()] * # normal*
1439 (?: \\ [^\x80-\xff] |
1441 [^\\\x80-\xff\n\015()] * # normal*
1442 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1445 [^\\\x80-\xff\n\015()] * # normal*
1448 [\040\t]* )* # If comment found, allow more spaces.
1450 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1451 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1454 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1457 [\040\t]* # Nab whitespace.
1460 [^\\\x80-\xff\n\015()] * # normal*
1462 (?: \\ [^\x80-\xff] |
1464 [^\\\x80-\xff\n\015()] * # normal*
1465 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1468 [^\\\x80-\xff\n\015()] * # normal*
1471 [\040\t]* )* # If comment found, allow more spaces.
1472 # optional trailing comments
1475 [\040\t]* # Nab whitespace.
1478 [^\\\x80-\xff\n\015()] * # normal*
1480 (?: \\ [^\x80-\xff] |
1482 [^\\\x80-\xff\n\015()] * # normal*
1483 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1486 [^\\\x80-\xff\n\015()] * # normal*
1489 [\040\t]* )* # If comment found, allow more spaces.
1491 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1492 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1495 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1498 [\040\t]* # Nab whitespace.
1501 [^\\\x80-\xff\n\015()] * # normal*
1503 (?: \\ [^\x80-\xff] |
1505 [^\\\x80-\xff\n\015()] * # normal*
1506 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1509 [^\\\x80-\xff\n\015()] * # normal*
1512 [\040\t]* )* # If comment found, allow more spaces.
1513 # optional trailing comments
1515 )* # additional domains
1517 [\040\t]* # Nab whitespace.
1520 [^\\\x80-\xff\n\015()] * # normal*
1522 (?: \\ [^\x80-\xff] |
1524 [^\\\x80-\xff\n\015()] * # normal*
1525 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1528 [^\\\x80-\xff\n\015()] * # normal*
1531 [\040\t]* )* # If comment found, allow more spaces.
1532 # optional trailing comments
1535 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1536 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1540 [^\\\x80-\xff\n\015"] * # normal
1541 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1545 [\040\t]* # Nab whitespace.
1548 [^\\\x80-\xff\n\015()] * # normal*
1550 (?: \\ [^\x80-\xff] |
1552 [^\\\x80-\xff\n\015()] * # normal*
1553 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1556 [^\\\x80-\xff\n\015()] * # normal*
1559 [\040\t]* )* # If comment found, allow more spaces.
1562 [\040\t]* # Nab whitespace.
1565 [^\\\x80-\xff\n\015()] * # normal*
1567 (?: \\ [^\x80-\xff] |
1569 [^\\\x80-\xff\n\015()] * # normal*
1570 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1573 [^\\\x80-\xff\n\015()] * # normal*
1576 [\040\t]* )* # If comment found, allow more spaces.
1578 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1579 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1583 [^\\\x80-\xff\n\015"] * # normal
1584 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1588 [\040\t]* # Nab whitespace.
1591 [^\\\x80-\xff\n\015()] * # normal*
1593 (?: \\ [^\x80-\xff] |
1595 [^\\\x80-\xff\n\015()] * # normal*
1596 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1599 [^\\\x80-\xff\n\015()] * # normal*
1602 [\040\t]* )* # If comment found, allow more spaces.
1606 [\040\t]* # Nab whitespace.
1609 [^\\\x80-\xff\n\015()] * # normal*
1611 (?: \\ [^\x80-\xff] |
1613 [^\\\x80-\xff\n\015()] * # normal*
1614 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1617 [^\\\x80-\xff\n\015()] * # normal*
1620 [\040\t]* )* # If comment found, allow more spaces.
1622 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1623 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1626 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1629 [\040\t]* # Nab whitespace.
1632 [^\\\x80-\xff\n\015()] * # normal*
1634 (?: \\ [^\x80-\xff] |
1636 [^\\\x80-\xff\n\015()] * # normal*
1637 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1640 [^\\\x80-\xff\n\015()] * # normal*
1643 [\040\t]* )* # If comment found, allow more spaces.
1644 # optional trailing comments
1647 [\040\t]* # Nab whitespace.
1650 [^\\\x80-\xff\n\015()] * # normal*
1652 (?: \\ [^\x80-\xff] |
1654 [^\\\x80-\xff\n\015()] * # normal*
1655 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1658 [^\\\x80-\xff\n\015()] * # normal*
1661 [\040\t]* )* # If comment found, allow more spaces.
1663 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1664 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1667 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1670 [\040\t]* # Nab whitespace.
1673 [^\\\x80-\xff\n\015()] * # normal*
1675 (?: \\ [^\x80-\xff] |
1677 [^\\\x80-\xff\n\015()] * # normal*
1678 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1681 [^\\\x80-\xff\n\015()] * # normal*
1684 [\040\t]* )* # If comment found, allow more spaces.
1685 # optional trailing comments
1692 Alan Other <user\@dom.ain>
1693 0: Alan Other <user@dom.ain>
1698 \"A. Other\" <user.1234\@dom.ain> (a comment)
1699 0: "A. Other" <user.1234@dom.ain>
1700 A. Other <user.1234\@dom.ain> (a comment)
1701 0: Other <user.1234@dom.ain>
1702 \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
1703 0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
1704 A missing angle <user\@some.where
1710 /abc\0def\00pqr\000xyz\0000AB/
1711 abc\0def\00pqr\000xyz\0000AB
1712 0: abc\x00def\x00pqr\x00xyz\x000AB
1713 abc456 abc\0def\00pqr\000xyz\0000ABCDE
1714 0: abc\x00def\x00pqr\x00xyz\x000AB
1716 /abc\x0def\x00pqr\x000xyz\x0000AB/
1717 abc\x0def\x00pqr\x000xyz\x0000AB
1718 0: abc\x0def\x00pqr\x000xyz\x0000AB
1719 abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE
1720 0: abc\x0def\x00pqr\x000xyz\x0000AB
1866 /([^.]*)\.([^:]*):[T ]+(.*)/
1867 track1.title:TBlah blah blah
1868 0: track1.title:TBlah blah blah
1873 /([^.]*)\.([^:]*):[T ]+(.*)/i
1874 track1.title:TBlah blah blah
1875 0: track1.title:TBlah blah blah
1880 /([^.]*)\.([^:]*):[t ]+(.*)/i
1881 track1.title:TBlah blah blah
1882 0: track1.title:TBlah blah blah
2062 /^(A)(B)(C)(D)(E)(F)(G)(H)(I)\8\9$/
2082 /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\12\123/
2098 /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
2138 /^([^a])([^\b])([^c]*)([^d]{3,4})/
2259 /\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/
2260 \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
2261 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
2263 /P[^*]TAIRE[^*]{1,6}?LL/
2264 xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
2267 /P[^*]TAIRE[^*]{1,}?LL/
2268 xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
2282 /(\.\d\d((?=0)|\d(?=\d)))/
2300 Food is on the foo table
2306 The food is under the bar in the barn.
2307 0: food is under the bar in the bar
2308 1: d is under the bar in the
2311 The food is under the bar in the barn.
2312 0: food is under the bar
2316 I have 2 numbers: 53147
2317 0: I have 2 numbers: 53147
2318 1: I have 2 numbers: 53147
2322 I have 2 numbers: 53147
2323 0: I have 2 numbers: 53147
2324 1: I have 2 numbers: 5314
2328 I have 2 numbers: 53147
2334 I have 2 numbers: 53147
2340 I have 2 numbers: 53147
2341 0: I have 2 numbers: 53147
2342 1: I have 2 numbers: 5314
2346 I have 2 numbers: 53147
2347 0: I have 2 numbers: 53147
2348 1: I have 2 numbers:
2352 I have 2 numbers: 53147
2353 0: I have 2 numbers: 53147
2354 1: I have 2 numbers:
2358 I have 2 numbers: 53147
2359 0: I have 2 numbers: 53147
2360 1: I have 2 numbers:
2367 /^(\D*)(?=\d)(?!123)/
2415 /\d\d\/\d\d\/\d\d\d\d/
2419 /word (?:[a-zA-Z0-9]+ ){0,10}otherword/
2420 word cat dog elephant mussel cow horse canary baboon snake shark otherword
2421 0: word cat dog elephant mussel cow horse canary baboon snake shark otherword
2423 word cat dog elephant mussel cow horse canary baboon snake shark
2426 /word (?:[a-zA-Z0-9]+ ){0,300}otherword/
2428 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
2555 0: borfle\x0abib.gif
2559 0: borfle\x0abib.gif
2571 0: borfle\x0abib.gif\x0ano
2575 0: borfle\x0abib.gif\x0ano
2578 borfle\nbib.gif\nno\n
2582 borfle\nbib.gif\nno\n
2586 borfle\nbib.gif\nno\n
2587 0: borfle\x0abib.gif\x0ano\x0a
2590 borfle\nbib.gif\nno\n
2591 0: borfle\x0abib.gif\x0ano\x0a
2682 /^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
2686 /^\d\d\d\d\d\d\d\d\d\d\d\d/
2690 /^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/
2707 /^[abcdefghijklmnopqrstuvwxy0123456789]/
2757 the \"quick\" brown fox
2760 \"the \\\"quick\\\" brown fox\"
2761 0: "the \"quick\" brown fox"
2802 /<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
2803 <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>
2804 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>
2805 1: BGCOLOR='#DBE9E9'
2806 2: align=left valign=top
2808 4: <a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)
2812 8: align=left valign=top
2814 10: align=left valign=top
2953 /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
2954 0: /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
2956 /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/
2959 /(?>(\.\d\d[1-9]?))\d+/
2970 /^((?>\w+)|(?>\s+))*$/
2971 now is the time for all good men to come to the aid of the party
2972 0: now is the time for all good men to come to the aid of the party
2975 this is not a line with only words and spaces!
3019 /((?>[^()]+)|\([^()]*\))+/
3024 /\(((?>[^()]+)|\([^()]+\))+\)/
3032 ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3058 /(a b(?x)c d (?-x)e f)/
3122 /(?s-i:more.*than).*million/i
3124 0: more than million
3126 0: more than MILLION
3127 more \n than Million
3128 0: more \x0a than Million
3132 more \n than \n million
3135 /(?:(?s-i)more.*than).*million/i
3137 0: more than million
3139 0: more than MILLION
3140 more \n than Million
3141 0: more \x0a than Million
3145 more \n than \n million
3176 /(?<=a(?i)b)(\w\w)c/
3191 /(?:(a)|b)(?(1)A|B)/
3215 # Perl gets this next one wrong if the pattern ends with $; in that case it
3216 # fails to match "12".
3218 /^(?(?=abc)\w{3}:|\d\d)/
3229 /^(?(?!abc)\d\d|\w{3}:)$/
3240 /(?(?<=foo)bar|cat)/
3253 /(?(?<!foo)cat|bar)/
3266 /( \( )? [^()]+ (?(1) \) |) /x
3272 the quick (abcd) fox
3277 /( \( )? [^()]+ (?(1) \) ) /x
3283 the quick (abcd) fox
3326 /((?i)blah)\s+(?i:\1)/
3349 /((?i)blah)\s+(?m)A(?i:\1)/
3489 /(?(?=[^a-z]+[a-z]) \d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} ) /x
3511 /(?i:saturday|sunday)/
3550 /^([ab](?i)[cd]|[ef])/
3576 /^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/
3610 /(?<=(?<!foo)bar)baz/
3623 # The cases of aaaa and aaaaaa are missed out below because Perl does things
3624 # differently. We know that odd, and maybe incorrect, things happen with
3625 # recursive references in Perl, as far as 5.11.3 - see some stuff in test #2.
3661 /^(a\1?)(a\1?)(a\2?)(a\3?)$/
3716 # The following tests are taken from the Perl 5.005 test suite; some of them
3717 # are compatible with 5.004, but I'd rather not have to sort them out.
4207 /[a-zA-Z_][a-zA-Z0-9_]*/
4211 /^a(bc+|b[eh])g|.h$/
4215 /(bc+d$|ef*g.|h?i(j|k))/
4232 /((((((((((a))))))))))/
4246 /((((((((((a))))))))))\10/
4260 /(((((((((a)))))))))/
4273 /multiple words of text/
4281 multiple words, yeah
4352 bbaababbabaaaaabbaaaabba
4747 /[a-zA-Z_][a-zA-Z0-9_]*/i
4751 /^a(bc+|b[eh])g|.h$/i
4755 /(bc+d$|ef*g.|h?i(j|k))/i
4774 /((((((((((a))))))))))/i
4788 /((((((((((a))))))))))\10/i
4802 /(((((((((a)))))))))/i
4815 /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i
4820 /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i
4825 /multiple words of text/i
4833 MULTIPLE WORDS, YEAH
4913 /a(?:b|c|d){4,5}(.)/
4918 /a(?:b|c|d){4,5}?(.)/
4930 /a(?:b|c|d){6,7}(.)/
4935 /a(?:b|c|d){6,7}?(.)/
4940 /a(?:b|c|d){5,6}(.)/
4945 /a(?:b|c|d){5,6}?(.)/
4950 /a(?:b|c|d){5,7}(.)/
4955 /a(?:b|c|d){5,7}?(.)/
4960 /a(?:b|(c|e){1,2}?|d)+?(.)/
5002 /(?:(f)(o)(o)|(b)(a)(r))*/
5037 /^(?:b|a(?=(.)))*\1/
5210 /(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/
5214 /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/
5215 caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
5216 0: caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
5239 /^a (?#xxx) (?#yyy) {3}c/x
5281 /((?s)^a(.))((?m)^b$)/
5364 /^(\()?blah(?(1)(\)))$/
5379 /^(\(+)?blah(?(1)(\)))$/
5511 /((?>[^()]+)|\([^()]*\))+/
5537 /^(?>(?(1)\.|())[^\W_](?>[a-z0-9-]*[^\W_])?)+$/
5557 0: the.quick.brown.fox
5584 the.quick.brown.fox-
5586 the.quick.brown.fox.
5588 the.quick.brown.fox_
5590 the.quick.brown.fox+
5593 /(?>.*)(?<=(abcd|wxyz))/
5601 a rather long string that doesn't end with one of them
5604 /word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/
5605 word cat dog elephant mussel cow horse canary baboon snake shark otherword
5606 0: word cat dog elephant mussel cow horse canary baboon snake shark otherword
5608 word cat dog elephant mussel cow horse canary baboon snake shark
5611 /word (?>[a-zA-Z0-9]+ ){0,30}otherword/
5613 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
5616 /(?<=\d{3}(?!999))foo/
5625 /(?<=(?!...999)\d{3})foo/
5634 /(?<=\d{3}(?!999)...)foo/
5643 /(?<=\d{3}...)(?<!999)foo/
5652 /<a[\s]+href[\s]*=[\s]* # find <a href=
5653 ([\"\'])? # find single or double quote
5654 (?(1) (.*?)\1 | ([^\s]+)) # if quote found, match up to next matching
5655 # quote, otherwise match up to next space
5662 <a href=\"abcd xyz pqr\" cats
5663 0: <a href="abcd xyz pqr"
5666 <a href=\'abcd xyz pqr\' cats
5667 0: <a href='abcd xyz pqr'
5671 /<a\s+href\s*=\s* # find <a href=
5672 (["'])? # find single or double quote
5673 (?(1) (.*?)\1 | (\S+)) # if quote found, match up to next matching
5674 # quote, otherwise match up to next space
5681 <a href=\"abcd xyz pqr\" cats
5682 0: <a href="abcd xyz pqr"
5685 <a href = \'abcd xyz pqr\' cats
5686 0: <a href = 'abcd xyz pqr'
5690 /<a\s+href(?>\s*)=(?>\s*) # find <a href=
5691 (["'])? # find single or double quote
5692 (?(1) (.*?)\1 | (\S+)) # if quote found, match up to next matching
5693 # quote, otherwise match up to next space
5700 <a href=\"abcd xyz pqr\" cats
5701 0: <a href="abcd xyz pqr"
5704 <a href = \'abcd xyz pqr\' cats
5705 0: <a href = 'abcd xyz pqr'
5748 > \x09\x0a\x0c\x0d\x0b<
5749 0: \x09\x0a\x0c\x0d\x0b
5752 > \x09\x0a\x0c\x0d\x0b<
5756 > \x09\x0a\x0c\x0d\x0b<
5757 0: \x09\x0a\x0c\x0d\x0b
5760 > \x09\x0a\x0c\x0d\x0b<
5761 0: \x09\x0a\x0c\x0d\x0b
5794 abc#not comment\n literal
5795 0: abc#not comment\x0a literal
5800 abc#not comment\n literal
5801 0: abc#not comment\x0a literal
5805 literal\E #more comment
5807 abc#not comment\n literal
5808 0: abc#not comment\x0a literal
5812 literal\E #more comment/x
5813 abc#not comment\n literal
5814 0: abc#not comment\x0a literal
5849 /((?x)x y z | a b c)/
5907 # This tests for an IPv6 address in the form where it can have up to
5908 # eight components, one and only one of which is empty. This must be
5909 # an internal component.
5911 /^(?!:) # colon disallowed at start
5913 (?: [0-9a-f]{1,4} | # 1-4 hex digits or
5914 (?(1)0 | () ) ) # if null previously matched, fail; else null
5915 : # followed by colon
5916 ){1,7} # end item; 1-7 of them required
5917 [0-9a-f]{1,4} $ # final hex number at end of string
5918 (?(1)|.) # check that there was an empty component
5926 a123:b342::324e:abcd
5927 0: a123:b342::324e:abcd
5929 a123:ddde:b342::324e:abcd
5930 0: a123:ddde:b342::324e:abcd
5932 a123:ddde:b342::324e:dcba:abcd
5933 0: a123:ddde:b342::324e:dcba:abcd
5935 a123:ddde:9999:b342::324e:dcba:abcd
5936 0: a123:ddde:9999:b342::324e:dcba:abcd
5941 a123:bce:ddde:9999:b342::324e:dcba:abcd
5943 a123::9999:b342::324e:dcba:abcd
5973 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
5976 /(?i)reg(?:ul(?:[aä]|ae)r|ex)/
5988 0: \xc5\xe6\xe5\xe4\xe0
5990 0: \xc5\xe6\xe5\xe4\xff
5992 0: \xc5\xe6\xe5\xe4\xc0
5994 0: \xc5\xe6\xe5\xe4\xdf
6050 /(?:(?(1)\1a|b)(X|Y))+/
6058 /()()()()()()()()()(?:(?(10)\10a|b)(X|Y))+/
6084 "(?x)(?-x: \s*#\s*)"
6091 "(?x-is)(?:(?-ixs) \s*#\s*) include"
6235 /(a){0,3}(?(1)b|(c|))*D/
6249 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6250 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6253 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
6257 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6258 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6260 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
6264 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6265 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6267 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
6275 /^(?s)(?>.*)(?<!\n)/
6301 /( (A | (?(1)0|) )* )/x
6307 /( ( (?(1)0|) )* )/x
6374 /^%((?(?=[a])[^%])|b)*%$/
6510 /(?:(?>(a))b|(a)c)++/
6516 /(?=(?>(a))b|(a)c)(..)/
6529 /(?:(?>([ab])))+a=/aftertext
6535 /(?>([ab]))+a=/aftertext
6541 /((?>(a+)b)+(aabab))/
6587 /(?=abc){3}abc/aftertext
6595 /(?=abc)+abc/aftertext
6603 /(?=abc)++abc/aftertext
6633 /^(?=(?1))?[az]([abc])d/
6761 \x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a
6762 0: \x09 \xa0X\x0a\x0b\x0c\x0d
6763 \x09\x20\xa0\x0a\x0b\x0c\x0d\x0a
6764 0: \x09 \xa0\x0a\x0b\x0c\x0d
6765 \x09\x20\xa0\x0a\x0b\x0c
6766 0: \x09 \xa0\x0a\x0b\x0c
6768 \x09\x20\xa0\x0a\x0b
6792 /\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/
6793 >XY\x0aZ\x0aA\x0bNN\x0c
6794 0: XY\x0aZ\x0aA\x0bNN\x0c
6795 >\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
6796 0: \x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
6818 /abc\K|def\K/g,aftertext
6825 /ab\Kc|de\Kf/g,aftertext
6847 /^(a(b))\1\g1\g{1}\g-1\g{-1}\g{-2}Z/
6853 /(?<A>tom|bon)-\g{A}/
6879 /(?|(abc)|(xyz))(?1)/
6890 /^X(?5)(a)(?|(b)|(q))(c)(d)(Y)/
6899 /^X(?7)(a)(?|(b|(r)(s))|(q))(c)(d)(Y)/
6910 /^X(?7)(a)(?|(b|(?|(r)|(t))(s))|(q))(c)(d)(Y)/
6921 /(?'abc'\w+):\k<abc>{2}/
6934 /(?'abc'\w+):\g{abc}{2}/
6947 /^(?<ab>a)? (?(<ab>)b|c) (?('ab')d|e)/x
6964 /^(?(DEFINE) (?<A> a) (?<B> b) ) (?&A) (?&B) /x
6968 /(?<NAME>(?&NAME_PAT))\s+(?<ADDR>(?&ADDRESS_PAT))
6978 /(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))\b(?&byte)(\.(?&byte)){3}/
6997 /\b(?&byte)(\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))/
7014 now is the time for all good men to come to the aid of the party
7015 0: now is the time for all good men to come to the aid of the party
7018 this is not a line with only words and spaces!
7044 /([^()]++|\([^()]*\))+/
7049 /\(([^()]++|\([^()]+\))+\)/
7057 ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
7060 /^([^()]|\((?1)*\))*$/
7074 /^>abc>([^()]|\((?1)*\))*<xyz<$/
7082 0: >abc>(1(2)3)<xyz<
7085 /^(?:((.)(?1)\2|)|((.)(?3)\4|.))$/i
7090 Satanoscillatemymetallicsonatas
7091 0: Satanoscillatemymetallicsonatas
7094 3: Satanoscillatemymetallicsonatas
7096 AmanaplanacanalPanama
7097 0: AmanaplanacanalPanama
7100 3: AmanaplanacanalPanama
7103 0: AblewasIereIsawElba
7106 3: AblewasIereIsawElba
7112 /^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/
7142 /((< (?: (?(R) \d++ | [^<>]*+) | (?2)) * >))/x
7181 /a+b?(*PRUNE)c+(*FAIL)/
7186 /a+b?(*COMMIT)c+(*FAIL)/
7191 /a+b?(*SKIP)c+(*FAIL)/
7196 /^(?:aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
7212 /^(aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
7235 /a+b?(*THEN)c+(*FAIL)/
7240 /(A (A|B(*ACCEPT)|C) D)(E)/x
7263 /^\W*+(?:((.)\W*+(?1)\W*+\2|)|((.)\W*+(?3)\W*+\4|\W*+.\W*+))\W*+$/i
7268 Satan, oscillate my metallic sonatas!
7269 0: Satan, oscillate my metallic sonatas!
7272 3: Satan, oscillate my metallic sonatas
7274 A man, a plan, a canal: Panama!
7275 0: A man, a plan, a canal: Panama!
7278 3: A man, a plan, a canal: Panama
7280 Able was I ere I saw Elba.
7281 0: Able was I ere I saw Elba.
7284 3: Able was I ere I saw Elba
7311 0: ablewasiereisawelba
7312 1: ablewasiereisawelba
7336 /(?<X>a)(?<=b(?&X))/
7341 /^(?|(abc)|(def))\1/
7354 /^(?|(abc)|(def))(?1)/
7367 /(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) |b(?<quote> (?<apostrophe>')|(?<realquote>")) ) (?('quote')[a-z]+|[0-9]+)/x,dupnames
7385 /(?:(?1)|B)(A(*F)|C)/
7396 /^(?:(?1)|B)(A(*F)|C)/
7411 /(?:(?1)|B)(A(*ACCEPT)XX|C)D/
7433 /(?(DEFINE)(A))B(?1)C/
7437 /(?(DEFINE)((A)\2))B(?1)C/
7441 /(?<pn> \( ( [^()]++ | (?&pn) )* \) )/x
7485 /^(?&t)(?(DEFINE)(?<t>a\Kb))$/
7489 /^([^()]|\((?1)*\))*$/
7497 /(?P<L1>(?P<L2>0)(?P>L1)|(?P>L2))/
7510 /(?P<L1>(?P<L2>0)|(?P>L2)(?P>L1))/
7524 # This one does fail, as expected, in Perl. It needs the complex item at the
7525 # end of the pattern. A single letter instead of (B|D) makes it not fail, which
7526 # I think is a Perl bug.
7533 # Check the use of names for failure
7535 /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/mark
7542 /(*MARK:A)(*SKIP:B)(C|X)/mark
7551 /^(A(*THEN:A)B|C(*THEN:B)D)/mark
7556 /^(?:A(*THEN:A)B|C(*THEN:B)D)/mark
7561 /^(?>A(*THEN:A)B|C(*THEN:B)D)/mark
7566 # This should succeed, as the skip causes bump to offset 1 (the mark). Note
7567 # that we have to have something complicated such as (B|Z) at the end because,
7568 # for Perl, a simple character somehow causes an unwanted optimization to mess
7569 # with the handling of backtracking verbs.
7571 /A(*MARK:A)A+(*SKIP:A)(B|Z) | AC/x,mark
7575 # Test skipping over a non-matching mark.
7577 /A(*MARK:A)A+(*MARK:B)(*SKIP:A)(B|Z) | AC/x,mark
7581 # Check shorthand for MARK.
7583 /A(*:A)A+(*SKIP:A)(B|Z) | AC/x,mark
7587 /(*:A)A+(*SKIP:A)(B|Z)/mark
7592 # This should succeed, as a non-existent skip name disables the skip.
7594 /A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/x,mark
7598 /A(*MARK:A)A+(*SKIP:B)(B|Z) | AC(*:B)/x,mark
7603 # COMMIT at the start of a pattern should act like an anchor. Again, however,
7604 # we need the complication for Perl.
7606 /(*COMMIT)(A|P)(B|P)(C|P)/
7616 # COMMIT inside an atomic group can't stop backtracking over the group.
7618 /(\w+)(?>b(*COMMIT))\w{2}/
7623 /(\w+)b(*COMMIT)\w{2}/
7628 # Check opening parens in comment when seeking forward reference.
7630 /(?&t)(?#()(?(DEFINE)(?<t>a))/
7634 # COMMIT should override THEN.
7636 /(?>(*COMMIT)(?>yes|no)(*THEN)(*F))?/
7641 /(?>(*COMMIT)(yes|no)(*THEN)(*F))?/
7662 /(?P<abn>(?P=abn)xxx|)+/
7684 /^(?&t)*+(?(DEFINE)(?<t>a))\w$/
7691 /^(?&t)*(?(DEFINE)(?<t>a))\w$/
7810 /(foo ( \( ((?:(?> [^()]+ )|(?2))*) \) ) )/x
7811 foo(bar(baz)+baz(bop))
7812 0: foo(bar(baz)+baz(bop))
7813 1: foo(bar(baz)+baz(bop))
7814 2: (bar(baz)+baz(bop))
7815 3: bar(baz)+baz(bop)
7817 /(A (A|B(*ACCEPT)|C) D)(E)/x
7846 /(?(?=(a(*ACCEPT)z))a)/
7870 /(?(DEFINE)(a))?b(?1)/
7917 /(?>(?&t)c|(?&t))(?(DEFINE)(?<t>a|b(*PRUNE)c))/
7925 # Checking revised (*THEN) handling.
7929 /^.*? (a(*THEN)b) c/x
7934 /^.*? (a(*THEN)b|(*F)) c/x
7939 /^.*? ( (a(*THEN)b) | (*F) ) c/x
7945 /^.*? ( (a(*THEN)b) ) c/x
7952 /^.*? (?:a(*THEN)b) c/x
7957 /^.*? (?:a(*THEN)b|(*F)) c/x
7961 /^.*? (?: (?:a(*THEN)b) | (*F) ) c/x
7965 /^.*? (?: (?:a(*THEN)b) ) c/x
7972 /^.*? (?>a(*THEN)b) c/x
7977 /^.*? (?>a(*THEN)b|(*F)) c/x
7981 /^.*? (?> (?>a(*THEN)b) | (*F) ) c/x
7985 /^.*? (?> (?>a(*THEN)b) ) c/x
7990 # Possessive capture
7992 /^.*? (a(*THEN)b)++ c/x
7997 /^.*? (a(*THEN)b|(*F))++ c/x
8002 /^.*? ( (a(*THEN)b)++ | (*F) )++ c/x
8008 /^.*? ( (a(*THEN)b)++ )++ c/x
8013 # Possessive non-capture
8015 /^.*? (?:a(*THEN)b)++ c/x
8020 /^.*? (?:a(*THEN)b|(*F))++ c/x
8024 /^.*? (?: (?:a(*THEN)b)++ | (*F) )++ c/x
8028 /^.*? (?: (?:a(*THEN)b)++ )++ c/x
8033 # Condition assertion
8035 /^(?(?=a(*THEN)b)ab|ac)/
8041 /^.*?(?(?=a)a|b(*THEN)c)/
8046 /^.*?(?:(?(?=a)a|b(*THEN)c)|d)/
8050 /^.*?(?(?=a)a(*THEN)b|c)/
8061 # --------------------------
8063 /(?>a(*:m))/imsx,mark
8068 /(?>(a)(*:m))/imsx,mark
8078 /(?<=(a(*ACCEPT)b))c/
8083 /(?<=(a(*COMMIT)b))c/
8120 /(*MARK:A)(*PRUNE:B)(C|X)/mark
8129 /(*MARK:A)(*PRUNE:B)(C|X)/mark
8138 /(*MARK:A)(*THEN:B)(C|X)/mark
8147 /(*MARK:A)(*THEN:B)(C|X)/mark,no_start_optimize
8156 /(*MARK:A)(*THEN:B)(C|X)/mark
8165 # This should fail, as the skip causes a bump to offset 3 (the skip).
8167 /A(*MARK:A)A+(*SKIP)(B|Z) | AC/x,mark
8174 /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/x,mark
8179 /A(*:A)A+(*SKIP)(B|Z) | AC/x,mark
8184 # This should fail, as a null name is the same as no name.
8186 /A(*MARK:A)A+(*SKIP:)(B|Z) | AC/x,mark
8191 # A check on what happens after hitting a mark and them bumping along to
8192 # something that does not even start. Perl reports tags after the failures
8193 # here, though it does not when the individual letters are made into something
8196 /A(*:A)B|XX(*:B)Y/mark
8213 /^(A(*THEN:A)B|C(*THEN:B)D)/mark
8228 /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/mark
8243 # An empty name does not pass back an empty string. It is the same as if no
8246 /^(A(*PRUNE:)B|C(*PRUNE:B)D)/mark
8255 # PRUNE goes to next bumpalong; COMMIT does not.
8262 # Mark names can be duplicated.
8264 /A(*:A)B|X(*:A)Y/mark
8272 /b(*:m)f|a(*:n)w/mark
8289 /A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/x,mark
8293 /(?=a(*MARK:A)b)..x/mark
8301 /(?=a(*MARK:A)b)..(*:Y)x/mark
8309 /(?=a(*PRUNE:A)b)..x/mark
8317 /(?=a(*PRUNE:A)b)..(*:Y)x/mark
8325 /(?=a(*THEN:A)b)..x/mark
8333 /(?=a(*THEN:A)b)..(*:Y)x/mark
8341 /(another)?(\1?)test/
8347 /(another)?(\1+)test/
8352 /(a(*COMMIT)b){0}a(?1)|aac/
8387 /(?>.*?)(?<=(abcd)|(wxyz))/
8396 /(?>.*)(?<=(abcd)|(wxyz))/
8414 /(?:(a(*PRUNE)b)){0}(?:(?1)|ac)/
8418 /(?:(a(*SKIP)b)){0}(?:(?1)|ac)/
8427 /A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/x,mark
8431 /a(*SKIP:m)x|ac(*:n)(*SKIP:n)d|ac/mark
8436 /A(*SKIP:m)x|A(*SKIP:n)x|AB/mark
8440 /((*SKIP:r)d){0}a(*SKIP:m)x|ac(*:n)|ac/mark
8445 # Tests that try to figure out how Perl works. My hypothesis is that the first
8446 # verb that is backtracked onto is the one that acts. This seems to be the case
8447 # almost all the time, but there is one exception that is perhaps a bug.
8449 # This matches "aaaac"; each PRUNE advances one character until the subject no
8450 # longer starts with 5 'a's.
8452 /aaaaa(*PRUNE)b|a+c/
8456 # Putting SKIP in front of PRUNE makes no difference, as it is never
8457 # backtracked onto, whether or not it has a label.
8459 /aaaaa(*SKIP)(*PRUNE)b|a+c/
8463 /aaaaa(*SKIP:N)(*PRUNE)b|a+c/
8467 /aaaa(*:N)a(*SKIP:N)(*PRUNE)b|a+c/
8471 # Putting THEN in front makes no difference.
8473 /aaaaa(*THEN)(*PRUNE)b|a+c/
8477 # However, putting COMMIT in front of the prune changes it to "no match". I
8478 # think this is inconsistent and possibly a bug. For the moment, running this
8479 # test is moved out of the Perl-compatible file.
8481 /aaaaa(*COMMIT)(*PRUNE)b|a+c/
8483 # OK, lets play the same game again using SKIP instead of PRUNE.
8485 # This matches "ac" because SKIP forces the next match to start on the
8492 # Putting PRUNE in front makes no difference.
8494 /aaaaa(*PRUNE)(*SKIP)b|a+c/
8498 # Putting THEN in front makes no difference.
8500 /aaaaa(*THEN)(*SKIP)b|a+c/
8504 # In this case, neither does COMMIT. This still matches "ac".
8506 /aaaaa(*COMMIT)(*SKIP)b|a+c/
8510 # This gives "no match", as expected.
8512 /aaaaa(*COMMIT)b|a+c/
8517 # ---- Tests using THEN ----
8519 # This matches "aaaaaac", as expected.
8525 # Putting SKIP in front makes no difference.
8527 /aaaaa(*SKIP)(*THEN)b|a+c/
8531 # Putting PRUNE in front makes no difference.
8533 /aaaaa(*PRUNE)(*THEN)b|a+c/
8537 # Putting COMMIT in front makes no difference.
8539 /aaaaa(*COMMIT)(*THEN)b|a+c/
8543 # End of "priority" tests
8545 /aaaaa(*:m)(*PRUNE:m)(*SKIP:m)m|a+/
8549 /aaaaa(*:m)(*MARK:m)(*PRUNE)(*SKIP:m)m|a+/
8553 /aaaaa(*:n)(*PRUNE:m)(*SKIP:m)m|a+/
8557 /aaaaa(*:n)(*MARK:m)(*PRUNE)(*SKIP:m)m|a+/
8561 /a(*MARK:A)aa(*PRUNE:A)a(*SKIP:A)b|a+c/
8565 /a(*MARK:A)aa(*MARK:A)a(*SKIP:A)b|a+c/
8569 /aaa(*PRUNE:A)a(*SKIP:A)b|a+c/
8573 /aaa(*MARK:A)a(*SKIP:A)b|a+c/
8577 /a(*:m)a(*COMMIT)(*SKIP:m)b|a+c/mark
8586 /(a(*COMMIT)b)c|abd/
8594 /(?=a(*COMMIT)b)abc|abd/
8600 /(?>a(*COMMIT)b)c|abd/
8606 /a(?=b(*COMMIT)c)[^d]|abd/
8619 /a(?>b(*COMMIT)c)d|abd/
8628 /(?>a(*COMMIT)b)c|abd/
8632 /(?>a(*COMMIT)c)d|abd/
8637 /((?=a(*COMMIT)b)ab|ac){0}(?:(?1)|a(c))/
8643 # These tests were formerly in test 2, but changes in PCRE and Perl have
8644 # made them compatible.
8667 /A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/x,mark
8672 /^((abc|abcx)(*THEN)y|abcd)/
8680 /^((yes|no)(*THEN)(*F))?/
8685 /(A (.*) C? (*THEN) | A D) (*FAIL)/x
8690 /(A (.*) C? (*THEN) | A D) z/x
8695 /(A (.*) C? (*THEN) | A D) \s* (*FAIL)/x
8700 /(A (.*) C? (*THEN) | A D) \s* z/x
8705 /(A (.*) (?:C|) (*THEN) | A D) (*FAIL)/x
8710 /(A (.*) (?:C|) (*THEN) | A D) z/x
8715 /(A (.*) C{0,6} (*THEN) | A D) (*FAIL)/x
8720 /(A (.*) C{0,6} (*THEN) | A D) z/x
8725 /(A (.*) (CE){0,6} (*THEN) | A D) (*FAIL)/x
8730 /(A (.*) (CE){0,6} (*THEN) | A D) z/x
8735 /(A (.*) (CE*){0,6} (*THEN) | A D) (*FAIL)/x
8740 /(A (.*) (CE*){0,6} (*THEN) | A D) z/x
8745 /(?=a(*COMMIT)b|ac)ac|ac/
8750 /(?=a(*COMMIT)b|(ac)) ac | (a)c/x
8757 /(?(?!b(*THEN)a)bn|bnn)/
8761 /(?!b(*SKIP)a)bn|bnn/
8765 /(?(?!b(*SKIP)a)bn|bnn)/
8769 /(?!b(*PRUNE)a)bn|bnn/
8773 /(?(?!b(*PRUNE)a)bn|bnn)/
8777 /(?!b(*COMMIT)a)bn|bnn/
8781 /(?(?!b(*COMMIT)a)bn|bnn)/
8785 /(?=b(*SKIP)a)bn|bnn/
8790 /(?=b(*THEN)a)bn|bnn/
8818 /(?!a(*COMMIT)b)ac|cd/
8826 /^(A(*THEN)B|C(*THEN)D)/
8831 /(*:m(m)(?&y)(?(DEFINE)(?<y>b))/mark
8836 /(*PRUNE:m(m)(?&y)(?(DEFINE)(?<y>b))/mark
8841 /(*SKIP:m(m)(?&y)(?(DEFINE)(?<y>b))/mark
8845 /(*THEN:m(m)(?&y)(?(DEFINE)(?<y>b))/mark
8885 /(?:(?<n>foo)|(?<n>bar))\k<n>/dupnames
8894 /(?<n>A)(?:(?<n>foo)|(?<n>bar))\k<n>/dupnames
8910 /^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
8911 1 IN SOA non-sp1 non-sp2(
8912 0: 1 IN SOA non-sp1 non-sp2(
8917 /^ (?:(?<A>A)|(?'B'B)(?<A>A)) (?('A')x) (?(<B>)y)$/x,dupnames
8950 / ^ (?> a + ) b $ /x
8954 / ^ ( a + ) + + \w $ /x
8959 /(?:a\Kb)*+/aftertext
8964 /(?>a\Kb)*/aftertext
8969 /(?:a\Kb)*/aftertext
8986 /(?:x|(?:(xx|yy)+|x|x|x|x|x)|a|a|a)bc/
8991 '\A(?:[^\"]++|\"(?:[^\"]*+|\"\")*+\")++'
8992 NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
8993 0: NON QUOTED "QUOT""ED" AFTER
8995 '\A(?:[^\"]++|\"(?:[^\"]++|\"\")*+\")++'
8996 NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
8997 0: NON QUOTED "QUOT""ED" AFTER
8999 '\A(?:[^\"]++|\"(?:[^\"]++|\"\")++\")++'
9000 NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
9001 0: NON QUOTED "QUOT""ED" AFTER
9003 '\A([^\"1]++|[\"2]([^\"3]*+|[\"4][\"5])*+[\"6])++'
9004 NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
9005 0: NON QUOTED "QUOT""ED" AFTER
9009 /^\w+(?>\s*)(?<=\w)/
9013 /(?P<same>a)(?P<same>b)/g,dupnames
9022 /(?P<same>a)(?P<same>b)(?P=same)/g,dupnames
9028 /(?P=same)?(?P<same>a)(?P<same>b)/g,dupnames
9037 /(?:(?P=same)?(?:(?P<same>a)|(?P<same>b))(?P=same))+/g,dupnames
9046 /(?:(?P=same)?(?:(?P=same)(?P<same>a)(?P=same)|(?P=same)?(?P<same>b)(?P=same)){2}(?P=same)(?P<same>c)(?P=same)){2}(?P<same>z)?/g,dupnames
9051 /(?P<Name>a)?(?P<Name2>b)?(?(<Name>)c|d)*l/
9076 /A((((((((a))))))))\8B/
9088 /A(((((((((a)))))))))\9B/
9114 /(?:((abcd))|(((?:(?:(?:(?:abc|(?:abcdef))))b)abcdefghi)abc)|((*ACCEPT)))/
9138 /((((((((((((x))))))))))))\12/
9158 /(?1)()((((((\1++))\x85)+)|))/
9169 "(?|(\k'Pm')|(?'Pm'))"
9174 /(?|(aaa)|(b))\g{1}/
9201 /(?|(?'a'aaa)|(?'a'b))\k'a'/
9209 /(?|(?'a'aaa)|(?'a'b))(?'a'cccc)\k'a'/dupnames
9219 # /x does not apply to MARK labels
9221 /x (*MARK:ab cd # comment
9225 MK: ab cd # comment\x0aef
9231 /(?<DEFINE>b)(?(DEFINE)(a+))(?&DEFINE)/
9239 /(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[,;:])(?=.{8,16})(?!.*[\s])/
9251 /(Z)(a)\2{1,2}?(?-i)\1X/i
9257 /(?'c')XX(?'YYYYYYYYYYYYYYYYYYYYYYYCl')/
9263 /[s[:digit:]\Q\E-H]+/
9273 /(?1)(A(*COMMIT)|B)D/
9290 /(?(DEFINE)(?<m> 1? (?=(?<cond>2)?) 1 2 (?('cond')|3)))
9302 (?: A| (1? (?=(?<cond>2)?) (1) 2 (?('cond')|3)) )
9315 /^ (?(DEFINE) ( (?!(a)\2b)..) ) ()(?1) /x
9325 '(?>ab|abab){1,5}?M'
9326 abababababababababababM
9429 /^(?(?=(a))abc|def)/
9434 /^(?(?!(a))def|abc)/
9439 /^(?(?=(a)(*ACCEPT))abc|def)/
9444 /^(?(?!(a)(*ACCEPT))def|abc)/
9454 # This pattern uses a lot of named subpatterns in order to match email
9455 # addresses in various formats. It's a heavy test for named subpatterns. In the
9456 # <atext> group, slash is coded as \x{2f} so that this pattern can also be
9457 # processed by perltest.sh, which does not cater for an escaped delimiter
9458 # within the pattern. $ within the pattern must also be escaped. All $ and @
9459 # characters in subject strings are escaped so that Perl doesn't interpret them
9460 # as variable insertions and " characters must also be escaped for Perl.
9462 # This set of subpatterns is more or less a direct transliteration of the BNF
9463 # definitions in RFC2822, without any of the obsolete features. The addition of
9464 # a possessive + to the definition of <phrase> reduced the match limit in PCRE2
9465 # from over 5 million to just under 400, and eliminated a very noticeable delay
9466 # when this file was passed to perltest.sh.
9469 (?<addr_spec> (?&local_part) \@ (?&domain) )
9470 (?<angle_addr> (?&CFWS)?+ < (?&addr_spec) > (?&CFWS)?+ )
9471 (?<atext> [a-z\d!#\$%&'*+-\x{2f}=?^_`{|}~] )
9472 (?<atom> (?&CFWS)?+ (?&atext)+ (?&CFWS)?+ )
9473 (?<ccontent> (?&ctext) | (?"ed_pair) | (?&comment) )
9474 (?<ctext> [^\x{9}\x{10}\x{13}\x{7f}-\x{ff}\ ()\\] )
9475 (?<comment> \( (?: (?&FWS)?+ (?&ccontent) )*+ (?&FWS)?+ \) )
9476 (?<CFWS> (?: (?&FWS)?+ (?&comment) )* (?# NOT possessive)
9477 (?: (?&FWS)?+ (?&comment) | (?&FWS) ) )
9478 (?<dcontent> (?&dtext) | (?"ed_pair) )
9479 (?<display_name> (?&phrase) )
9480 (?<domain> (?&dot_atom) | (?&domain_literal) )
9481 (?<domain_literal> (?&CFWS)?+ \[ (?: (?&FWS)?+ (?&dcontent) )* (?&FWS)?+ \]
9483 (?<dot_atom> (?&CFWS)?+ (?&dot_atom_text) (?&CFWS)?+ )
9484 (?<dot_atom_text> (?&atext)++ (?: \. (?&atext)++)*+ )
9485 (?<dtext> [^\x{9}\x{10}\x{13}\x{7f}-\x{ff}\ \[\]\\] )
9486 (?<FWS> (?: [\t\ ]*+ \n)?+ [\t\ ]++ )
9487 (?<local_part> (?&dot_atom) | (?"ed_string) )
9488 (?<mailbox> (?&name_addr) | (?&addr_spec) )
9489 (?<name_addr> (?&display_name)? (?&angle_addr) )
9490 (?<phrase> (?&word)++ )
9491 (?<qcontent> (?&qtext) | (?"ed_pair) )
9492 (?<quoted_pair> " (?&text) )
9493 (?<quoted_string> (?&CFWS)?+ " (?: (?&FWS)?+ (?&qcontent))* (?&FWS)?+ "
9495 (?<qtext> [^\x{9}\x{10}\x{13}\x{7f}-\x{ff}\ "\\] )
9497 (?<word> (?&atom) | (?"ed_string) )
9500 Alan Other <user\@dom.ain>
9501 0: Alan Other <user@dom.ain>
9508 user\@[domain literal]
9509 0: user@[domain literal]
9510 user\@[domain literal with \"[square brackets\"] inside]
9511 0: user@[domain literal with "[square brackets"] inside]
9512 \"A. Other\" <user.1234\@dom.ain> (a comment)
9513 0: "A. Other" <user.1234@dom.ain> (a comment)
9514 A. Other <user.1234\@dom.ain> (a comment)
9515 0: A. Other <user.1234@dom.ain> (a comment)
9516 \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
9517 0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
9519 A missing angle <user\@some.where
9524 # --------------------------------------------------------------------------
9526 # This pattern uses named groups to match default PCRE2 patterns. It's another
9527 # heavy test for named subpatterns. Once again, code slash as \x{2f} and escape
9528 # $ even in classes so that this works with pcre2test.
9532 (?<assertion> (?&simple_assertion) | (?&lookaround) )
9534 (?<atomic_group> \( \? > (?®ex) \) )
9536 (?<back_reference> \\ \d+ |
9537 \\g (?: [+-]?\d+ | \{ (?: [+-]?\d+ | (?&groupname) ) \} ) |
9538 \\k <(?&groupname)> |
9539 \\k '(?&groupname)' |
9540 \\k \{ (?&groupname) \} |
9541 \( \? P= (?&groupname) \) )
9543 (?<branch> (?:(?&assertion) |
9546 (?&option_setting) |
9547 (?&qualified_item) |
9549 (?"ed_string_empty) |
9550 (?&special_escape) |
9554 (?<callout> \(\?C (?: \d+ |
9555 (?: (?<D>["'`^%\#\$])
9556 (?: \k'D'\k'D' | (?!\k'D') . )* \k'D' |
9557 \{ (?: \}\} | [^}]*+ )* \} )
9560 (?<capturing_group> \( (?: \? P? < (?&groupname) > | \? ' (?&groupname) ' )?
9563 (?<character_class> \[ \^?+ (?: \] (?&class_item)* | (?&class_item)+ ) \] )
9565 (?<character_type> (?! \\N\{\w+\} ) \\ [dDsSwWhHvVRN] )
9567 (?<class_item> (?: \[ : (?:
9568 alnum|alpha|ascii|blank|cntrl|digit|graph|lower|print|
9569 punct|space|upper|word|xdigit
9572 (?"ed_string_empty) |
9573 (?&escaped_character) |
9574 (?&character_type) |
9577 (?<comment> \(\?\# [^)]* \) | (?"ed_string_empty) | \\E )
9579 (?<condition> (?: \( [+-]? \d+ \) |
9580 \( < (?&groupname) > \) |
9581 \( ' (?&groupname) ' \) |
9583 \( R & (?&groupname) \) |
9584 \( (?&groupname) \) |
9586 \( VERSION >?=\d+(?:\.\d\d?)? \) |
9587 (?&callout)?+ (?&comment)* (?&lookaround) ) )
9589 (?<conditional_group> \(\? (?&condition) (?&branch) (?: \| (?&branch) )? \) )
9591 (?<delimited_regex> (?<delimiter> [-\x{2f}!"'`=_:;,%&@~]) (?®ex)
9594 (?<escaped_character> \\ (?: 0[0-7]{1,2} | [0-7]{1,3} | o\{ [0-7]+ \} |
9595 x \{ (*COMMIT) [[:xdigit:]]* \} | x [[:xdigit:]]{0,2} |
9596 [aefnrt] | c[[:print:]] |
9599 (?<group> (?&capturing_group) | (?&non_capturing_group) |
9600 (?&resetting_group) | (?&atomic_group) |
9601 (?&conditional_group) )
9603 (?<groupname> [a-zA-Z_]\w* )
9605 (?<literal_character> (?! (?&range_qualifier) ) [^[()|*+?.\$\\] )
9607 (?<lookaround> \(\? (?: = | ! | <= | <! ) (?®ex) \) )
9609 (?<non_capturing_group> \(\? [iJmnsUx-]* : (?®ex) \) )
9611 (?<option_setting> \(\? [iJmnsUx-]* \) )
9613 (?<qualified_item> (?:\. |
9615 (?&back_reference) |
9616 (?&character_class) |
9617 (?&character_type) |
9618 (?&escaped_character) |
9620 (?&subroutine_call) |
9621 (?&literal_character) |
9623 ) (?&comment)? (?&qualifier)? )
9625 (?<qualifier> (?: [?*+] | (?&range_qualifier) ) [+?]? )
9627 (?<quoted_string> (?: \\Q (?: (?!\\E | \k'delimiter') . )++ (?: \\E | ) ) )
9629 (?<quoted_string_empty> \\Q\\E )
9631 (?<range_qualifier> \{ (?: \d+ (?: , \d* )? | , \d+ ) \} )
9633 (?<regex> (?&start_item)* (?&branch) (?: \| (?&branch) )* )
9635 (?<resetting_group> \( \? \| (?®ex) \) )
9637 (?<simple_assertion> \^ | \$ | \\A | \\b | \\B | \\G | \\z | \\Z )
9639 (?<special_escape> \\K )
9641 (?<start_item> \( \* (?:
9662 (?<subroutine_call> (?: \(\?R\) | \(\?[+-]?\d+\) |
9663 \(\? (?: & | P> ) (?&groupname) \) |
9664 \\g < (?&groupname) > |
9665 \\g ' (?&groupname) ' |
9669 (?<verb> \(\* (?: ACCEPT | FAIL | F | COMMIT |
9670 (?:MARK)?:(?&verbname) |
9671 (?:PRUNE|SKIP|THEN) (?: : (?&verbname)? )? ) \) )
9673 (?<verbname> [^)]+ )
9676 # Kick it all off...
9677 ^(?&delimited_regex)$/subject_literal,jitstack=256
9678 /^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\11*(\3\4)\1(?#)2$/
9679 0: /^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\11*(\3\4)\1(?#)2$/
9680 /(cat(a(ract|tonic)|erpillar)) \1()2(3)/
9681 0: /(cat(a(ract|tonic)|erpillar)) \1()2(3)/
9682 /^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]/
9683 0: /^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]/
9684 /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
9685 0: /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
9686 /<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
9687 0: /<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
9688 /^(?(DEFINE) (?<A> a) (?<B> b) ) (?&A) (?&B) /
9689 0: /^(?(DEFINE) (?<A> a) (?<B> b) ) (?&A) (?&B) /
9690 /(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))\b(?&byte)(\.(?&byte)){3}/
9691 0: /(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))\b(?&byte)(\.(?&byte)){3}/
9692 /\b(?&byte)(\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))/
9693 0: /\b(?&byte)(\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))/
9696 /a+b?(*THEN)c+(*FAIL)/
9697 0: /a+b?(*THEN)c+(*FAIL)/
9698 /(A (A|B(*ACCEPT)|C) D)(E)/x
9699 0: /(A (A|B(*ACCEPT)|C) D)(E)/x
9700 /^\W*+(?:((.)\W*+(?1)\W*+\2|)|((.)\W*+(?3)\W*+\4|\W*+.\W*+))\W*+$/i
9701 0: /^\W*+(?:((.)\W*+(?1)\W*+\2|)|((.)\W*+(?3)\W*+\4|\W*+.\W*+))\W*+$/i
9702 /A(*PRUNE)B(*SKIP)C(*THEN)D(*COMMIT)E(*F)F(*FAIL)G(?!)H(*ACCEPT)I/B
9703 0: /A(*PRUNE)B(*SKIP)C(*THEN)D(*COMMIT)E(*F)F(*FAIL)G(?!)H(*ACCEPT)I/B
9704 /(?C`a``b`)(?C'a''b')(?C"a""b")(?C^a^^b^)(?C%a%%b%)(?C#a##b#)(?C$a$$b$)(?C{a}}b})/B,callout_info
9705 0: /(?C`a``b`)(?C'a''b')(?C"a""b")(?C^a^^b^)(?C%a%%b%)(?C#a##b#)(?C$a$$b$)(?C{a}}b})/B,callout_info
9706 /(?sx)(?(DEFINE)(?<assertion> (?&simple_assertion) | (?&lookaround) )(?<atomic_group> \( \? > (?®ex) \) )(?<back_reference> \\ \d+ | \\g (?: [+-]?\d+ | \{ (?: [+-]?\d+ | (?&groupname) ) \} ) | \\k <(?&groupname)> | \\k '(?&groupname)' | \\k \{ (?&groupname) \} | \( \? P= (?&groupname) \) )(?<branch> (?:(?&assertion) | (?&callout) | (?&comment) | (?&option_setting) | (?&qualified_item) | (?"ed_string) | (?"ed_string_empty) | (?&special_escape) | (?&verb) )* )(?<callout> \(\?C (?: \d+ | (?: (?<D>["'`^%\#\$]) (?: \k'D'\k'D' | (?!\k'D') . )* \k'D' | \{ (?: \}\} | [^}]*+ )* \} ) )? \) )(?<capturing_group> \( (?: \? P? < (?&groupname) > | \? ' (?&groupname) ' )? (?®ex) \) )(?<character_class> \[ \^?+ (?: \] (?&class_item)* | (?&class_item)+ ) \] )(?<character_type> (?! \\N\{\w+\} ) \\ [dDsSwWhHvVRN] )(?<class_item> (?: \[ : (?: alnum|alpha|ascii|blank|cntrl|digit|graph|lower|print| punct|space|upper|word|xdigit ) : \] | (?"ed_string) | (?"ed_string_empty) | (?&escaped_character) | (?&character_type) | [^]] ) )(?<comment> \(\?\# [^)]* \) | (?"ed_string_empty) | \\E )(?<condition> (?: \( [+-]? \d+ \) | \( < (?&groupname) > \) | \( ' (?&groupname) ' \) | \( R \d* \) | \( R & (?&groupname) \) | \( (?&groupname) \) | \( DEFINE \) | \( VERSION >?=\d+(?:\.\d\d?)? \) | (?&callout)?+ (?&comment)* (?&lookaround) ) )(?<conditional_group> \(\? (?&condition) (?&branch) (?: \| (?&branch) )? \) )(?<delimited_regex> (?<delimiter> [-\x{2f}!"'`=_:;,%&@~]) (?®ex) \k'delimiter' .* )(?<escaped_character> \\ (?: 0[0-7]{1,2} | [0-7]{1,3} | o\{ [0-7]+ \} | x \{ (*COMMIT) [[:xdigit:]]* \} | x [[:xdigit:]]{0,2} | [aefnrt] | c[[:print:]] | [^[:alnum:]] ) )(?<group> (?&capturing_group) | (?&non_capturing_group) | (?&resetting_group) | (?&atomic_group) | (?&conditional_group) )(?<groupname> [a-zA-Z_]\w* )(?<literal_character> (?! (?&range_qualifier) ) [^[()|*+?.\$\\] )(?<lookaround> \(\? (?: = | ! | <= | <! ) (?®ex) \) )(?<non_capturing_group> \(\? [iJmnsUx-]* : (?®ex) \) )(?<option_setting> \(\? [iJmnsUx-]* \) )(?<qualified_item> (?:\. | (?&lookaround) | (?&back_reference) | (?&character_class) | (?&character_type) | (?&escaped_character) | (?&group) | (?&subroutine_call) | (?&literal_character) | (?"ed_string) ) (?&comment)? (?&qualifier)? )(?<qualifier> (?: [?*+] | (?&range_qualifier) ) [+?]? )(?<quoted_string> (?: \\Q (?: (?!\\E | \k'delimiter') . )++ (?: \\E | ) ) ) (?<quoted_string_empty> \\Q\\E ) (?<range_qualifier> \{ (?: \d+ (?: , \d* )? | , \d+ ) \} )(?<regex> (?&start_item)* (?&branch) (?: \| (?&branch) )* )(?<resetting_group> \( \? \| (?®ex) \) )(?<simple_assertion> \^ | \$ | \\A | \\b | \\B | \\G | \\z | \\Z )(?<special_escape> \\K )(?<start_item> \( \* (?: ANY | ANYCRLF | BSR_ANYCRLF | BSR_UNICODE | CR | CRLF | LF | LIMIT_MATCH=\d+ | LIMIT_DEPTH=\d+ | LIMIT_HEAP=\d+ | NOTEMPTY | NOTEMPTY_ATSTART | NO_AUTO_POSSESS | NO_DOTSTAR_ANCHOR | NO_JIT | NO_START_OPT | NUL | UTF | UCP ) \) )(?<subroutine_call> (?: \(\?R\) | \(\?[+-]?\d+\) | \(\? (?: & | P> ) (?&groupname) \) | \\g < (?&groupname) > | \\g ' (?&groupname) ' | \\g < [+-]? \d+ > | \\g ' [+-]? \d+ ) )(?<verb> \(\* (?: ACCEPT | FAIL | F | COMMIT | (?:MARK)?:(?&verbname) | (?:PRUNE|SKIP|THEN) (?: : (?&verbname)? )? ) \) )(?<verbname> [^)]+ ))^(?&delimited_regex)$/
9707 0: /(?sx)(?(DEFINE)(?<assertion> (?&simple_assertion) | (?&lookaround) )(?<atomic_group> \( \? > (?®ex) \) )(?<back_reference> \\ \d+ | \\g (?: [+-]?\d+ | \{ (?: [+-]?\d+ | (?&groupname) ) \} ) | \\k <(?&groupname)> | \\k '(?&groupname)' | \\k \{ (?&groupname) \} | \( \? P= (?&groupname) \) )(?<branch> (?:(?&assertion) | (?&callout) | (?&comment) | (?&option_setting) | (?&qualified_item) | (?"ed_string) | (?"ed_string_empty) | (?&special_escape) | (?&verb) )* )(?<callout> \(\?C (?: \d+ | (?: (?<D>["'`^%\#\$]) (?: \k'D'\k'D' | (?!\k'D') . )* \k'D' | \{ (?: \}\} | [^}]*+ )* \} ) )? \) )(?<capturing_group> \( (?: \? P? < (?&groupname) > | \? ' (?&groupname) ' )? (?®ex) \) )(?<character_class> \[ \^?+ (?: \] (?&class_item)* | (?&class_item)+ ) \] )(?<character_type> (?! \\N\{\w+\} ) \\ [dDsSwWhHvVRN] )(?<class_item> (?: \[ : (?: alnum|alpha|ascii|blank|cntrl|digit|graph|lower|print| punct|space|upper|word|xdigit ) : \] | (?"ed_string) | (?"ed_string_empty) | (?&escaped_character) | (?&character_type) | [^]] ) )(?<comment> \(\?\# [^)]* \) | (?"ed_string_empty) | \\E )(?<condition> (?: \( [+-]? \d+ \) | \( < (?&groupname) > \) | \( ' (?&groupname) ' \) | \( R \d* \) | \( R & (?&groupname) \) | \( (?&groupname) \) | \( DEFINE \) | \( VERSION >?=\d+(?:\.\d\d?)? \) | (?&callout)?+ (?&comment)* (?&lookaround) ) )(?<conditional_group> \(\? (?&condition) (?&branch) (?: \| (?&branch) )? \) )(?<delimited_regex> (?<delimiter> [-\x{2f}!"'`=_:;,%&@~]) (?®ex) \k'delimiter' .* )(?<escaped_character> \\ (?: 0[0-7]{1,2} | [0-7]{1,3} | o\{ [0-7]+ \} | x \{ (*COMMIT) [[:xdigit:]]* \} | x [[:xdigit:]]{0,2} | [aefnrt] | c[[:print:]] | [^[:alnum:]] ) )(?<group> (?&capturing_group) | (?&non_capturing_group) | (?&resetting_group) | (?&atomic_group) | (?&conditional_group) )(?<groupname> [a-zA-Z_]\w* )(?<literal_character> (?! (?&range_qualifier) ) [^[()|*+?.\$\\] )(?<lookaround> \(\? (?: = | ! | <= | <! ) (?®ex) \) )(?<non_capturing_group> \(\? [iJmnsUx-]* : (?®ex) \) )(?<option_setting> \(\? [iJmnsUx-]* \) )(?<qualified_item> (?:\. | (?&lookaround) | (?&back_reference) | (?&character_class) | (?&character_type) | (?&escaped_character) | (?&group) | (?&subroutine_call) | (?&literal_character) | (?"ed_string) ) (?&comment)? (?&qualifier)? )(?<qualifier> (?: [?*+] | (?&range_qualifier) ) [+?]? )(?<quoted_string> (?: \\Q (?: (?!\\E | \k'delimiter') . )++ (?: \\E | ) ) ) (?<quoted_string_empty> \\Q\\E ) (?<range_qualifier> \{ (?: \d+ (?: , \d* )? | , \d+ ) \} )(?<regex> (?&start_item)* (?&branch) (?: \| (?&branch) )* )(?<resetting_group> \( \? \| (?®ex) \) )(?<simple_assertion> \^ | \$ | \\A | \\b | \\B | \\G | \\z | \\Z )(?<special_escape> \\K )(?<start_item> \( \* (?: ANY | ANYCRLF | BSR_ANYCRLF | BSR_UNICODE | CR | CRLF | LF | LIMIT_MATCH=\d+ | LIMIT_DEPTH=\d+ | LIMIT_HEAP=\d+ | NOTEMPTY | NOTEMPTY_ATSTART | NO_AUTO_POSSESS | NO_DOTSTAR_ANCHOR | NO_JIT | NO_START_OPT | NUL | UTF | UCP ) \) )(?<subroutine_call> (?: \(\?R\) | \(\?[+-]?\d+\) | \(\? (?: & | P> ) (?&groupname) \) | \\g < (?&groupname) > | \\g ' (?&groupname) ' | \\g < [+-]? \d+ > | \\g ' [+-]? \d+ ) )(?<verb> \(\* (?: ACCEPT | FAIL | F | COMMIT | (?:MARK)?:(?&verbname) | (?:PRUNE|SKIP|THEN) (?: : (?&verbname)? )? ) \) )(?<verbname> [^)]+ ))^(?&delimited_regex)$/
9709 /((?(?C'')\QX\E(?!((?(?C'')(?!X=X));=)r*X=X));=)/
9711 /(?:(?(2y)a|b)(X))+/
9717 /(?P<abn>(?P=abn)(?<badstufxxx)/
9720 # --------------------------------------------------------------------------
9742 /((?<=((*ACCEPT)) )\1?\b) /
9744 ((?<=((*ACCEPT)) )\\1?\\b)\x20
9747 /((?<=((*ACCEPT))X)\1?Y)\1/
9753 /((?<=((*ACCEPT))X)\1?Y(*ACCEPT))\1/
9759 /(?(DEFINE)(?<optional_a>a?)X)^(?&optional_a)a$/
9823 /(?<=\G.)/g,aftertext
9842 /a(?=.(*:X))(*SKIP:X)(*F)|(.)/
9847 /a(?>(*:X))(*SKIP:X)(*F)|(.)/
9852 /a(?:(*:X))(*SKIP:X)(*F)|(.)/
9857 #pattern no_start_optimize
9859 /(?>a(*:1))(?>b(*:1))(*SKIP:1)x|.*/
9863 /(?>a(*:1))(?>b)(*SKIP:1)x|.*/
9874 /(?=a(*ACCEPT:QQ)bc)axyz/
9879 /(?(DEFINE)(a(*ACCEPT:X)))(?1)b/
9888 /(?(DEFINE)(a(*F:X)))(?1)b/
9897 /(?(DEFINE)(a(*COMMIT:X)))(?1)b/
9902 /a+(*:Z)b(*COMMIT:X)(*SKIP:Z)c|.*/
9906 /a+(*:Z)b(*COMMIT:X)(*SKIP:X)c|.*/
9914 #pattern -no_start_optimize
9917 /(.COMMIT)(*COMMIT::::::::::interal error:::)/
9923 /(?i)A(?^)B(?^x:C D)(?^i)e f/