1 # This set of tests check the DFA matching functionality of pcre2_dfa_match(),
2 # excluding UTF and Unicode property support. All matches are done using DFA,
3 # forced by setting a default subject modifier at the start.
7 #newline_default lf anycrlf any
27 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\=ovector=10
28 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\=dfa_shortest
184 /[^a]+/no_auto_possess
190 /[^a]*/no_auto_possess
195 /[^a]{3,5}/no_auto_possess
344 /^(a*\w|ab)=(a*\w|ab)/
350 /^([^()]|\((?1)*\))*$/
357 /^>abc>([^()]|\((?1)*\))*<xyz<$/
363 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9876
365 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
367 /< (?: (?(R) \d++ | [^<>]*+) | (?R)) * >/x
377 /^(?(?=abc)\w{3}:|\d\d)$/
384 /^(?(?!abc)\d\d|\w{3}:)$/
423 /(ab|cd){3,4}/auto_callout
478 aaaa4444444444444z\=ps
490 foobar...\=ps,dfa_restart,offset=4
497 lkjhlkjhlkjhlkjhabbbbbbcdaefabbbbbbbefa\=ps,notbol,noteol
498 cdabbbbbbbb\=ps,notbol,dfa_restart,noteol
499 efabbbbbbbbbbbbbbbb\=ps,notbol,dfa_restart,noteol
500 bbbbbbbbbbbbcdXyasdfadf\=ps,notbol,dfa_restart,noteol
502 adfadadaklhlkalkajhlkjahdfasdfasdfladsfjkj\=ps,noteol
504 /the quick brown fox/
506 What do you know about the quick brown fox?
509 What do you know about THE QUICK BROWN FOX?
511 /The quick brown fox/i
514 What do you know about the quick brown fox?
515 What do you know about THE QUICK BROWN FOX?
517 /abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
518 abcd\t\n\r\f\a\e9;\$\\?caxyz
520 /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
521 abxyzpqrrrabbxyyyypqAzz
522 abxyzpqrrrabbxyyyypqAzz
523 aabxyzpqrrrabbxyyyypqAzz
524 aaabxyzpqrrrabbxyyyypqAzz
525 aaaabxyzpqrrrabbxyyyypqAzz
526 abcxyzpqrrrabbxyyyypqAzz
527 aabcxyzpqrrrabbxyyyypqAzz
528 aaabcxyzpqrrrabbxyyyypAzz
529 aaabcxyzpqrrrabbxyyyypqAzz
530 aaabcxyzpqrrrabbxyyyypqqAzz
531 aaabcxyzpqrrrabbxyyyypqqqAzz
532 aaabcxyzpqrrrabbxyyyypqqqqAzz
533 aaabcxyzpqrrrabbxyyyypqqqqqAzz
534 aaabcxyzpqrrrabbxyyyypqqqqqqAzz
535 aaaabcxyzpqrrrabbxyyyypqAzz
536 abxyzzpqrrrabbxyyyypqAzz
537 aabxyzzzpqrrrabbxyyyypqAzz
538 aaabxyzzzzpqrrrabbxyyyypqAzz
539 aaaabxyzzzzpqrrrabbxyyyypqAzz
540 abcxyzzpqrrrabbxyyyypqAzz
541 aabcxyzzzpqrrrabbxyyyypqAzz
542 aaabcxyzzzzpqrrrabbxyyyypqAzz
543 aaaabcxyzzzzpqrrrabbxyyyypqAzz
544 aaaabcxyzzzzpqrrrabbbxyyyypqAzz
545 aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
546 aaabcxyzpqrrrabbxyyyypABzz
547 aaabcxyzpqrrrabbxyyyypABBzz
548 >>>aaabxyzpqrrrabbxyyyypqAzz
549 >aaaabxyzpqrrrabbxyyyypqAzz
550 >>>>abcxyzpqrrrabbxyyyypqAzz
552 abxyzpqrrabbxyyyypqAzz
553 abxyzpqrrrrabbxyyyypqAzz
554 abxyzpqrrrabxyyyypqAzz
555 aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
556 aaaabcxyzzzzpqrrrabbbxyyypqAzz
557 aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
690 /^.+[0-9][0-9][0-9]$/
698 /^.+?[0-9][0-9][0-9]$/
706 /^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
707 abc!pqr=apquxz.ixr.zzz.ac.uk
709 !pqr=apquxz.ixr.zzz.ac.uk
710 abc!=apquxz.ixr.zzz.ac.uk
711 abc!pqr=apquxz:ixr.zzz.ac.uk
712 abc!pqr=apquxz.ixr.zzz.ac.ukk
715 Well, we need a colon: somewhere
717 No match without a colon
734 /^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
742 /^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
743 1 IN SOA non-sp1 non-sp2(
744 1 IN SOA non-sp1 non-sp2 (
746 1IN SOA non-sp1 non-sp2(
748 /^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/
758 /^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/
769 /^(?=ab(de))(abd)(e)/
772 /^(?!(ab)de|x)(abd)(f)/
778 /^[\da-f](\.[\da-f])*$/i
793 / ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/x
799 /(?x) ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/
812 /^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
815 /^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
818 /^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
880 /^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]/
881 From abcd Mon Sep 01 12:33:02 1997
883 /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
884 From abcd Mon Sep 01 12:33:02 1997
885 From abcd Mon Sep 1 12:33:02 1997
887 From abcd Sep 01 12:33:02 1997
894 the quick brown\t fox
897 foobar is foolish see?
899 /(?:(?!foo)...|^.{0,2})bar(.*)/
905 /^(\D*)(?=\d)(?!123)/
910 /^1234(?# test newlines
914 /^1234 #comment in extended re
935 /^[ab]{1,3}(ab*|b)/no_auto_possess
938 /^[ab]{1,3}?(ab*|b)/no_auto_possess
941 /^[ab]{1,3}?(ab*?|b)/no_auto_possess
944 /^[ab]{1,3}(ab*?|b)/no_auto_possess
948 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
949 \) )* # optional leading comment
951 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
952 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
954 " (?: # opening quote...
955 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
957 \\ [^\x80-\xff] # Escaped something (something != CR)
960 (?: (?: [\040\t] | \(
961 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
962 \) )* \. (?: [\040\t] | \(
963 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
965 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
966 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
968 " (?: # opening quote...
969 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
971 \\ [^\x80-\xff] # Escaped something (something != CR)
973 ) )* # further okay, if led by a period
975 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
976 \) )* @ (?: [\040\t] | \(
977 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
979 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
980 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
982 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
984 ) # initial subdomain
987 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
988 \) )* \. # if led by a period...
990 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
992 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
993 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
995 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1002 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1003 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1005 " (?: # opening quote...
1006 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
1008 \\ [^\x80-\xff] # Escaped something (something != CR)
1009 )* " # closing quote
1010 ) # one word, optionally followed by....
1012 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] | # atom and space parts, or...
1014 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1015 \) | # comments, or...
1017 " (?: # opening quote...
1018 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
1020 \\ [^\x80-\xff] # Escaped something (something != CR)
1021 )* " # closing quote
1025 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1027 (?: @ (?: [\040\t] | \(
1028 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1030 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1031 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1033 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1035 ) # initial subdomain
1038 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1039 \) )* \. # if led by a period...
1041 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1043 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1044 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1046 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
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] )* \) )*
1055 \) )* @ (?: [\040\t] | \(
1056 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1058 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1059 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1061 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1063 ) # initial subdomain
1066 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1067 \) )* \. # if led by a period...
1069 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1071 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1072 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1074 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1078 )* # further okay, if led by comma
1081 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1082 \) )* )? # optional route
1084 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1085 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1087 " (?: # opening quote...
1088 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
1090 \\ [^\x80-\xff] # Escaped something (something != CR)
1091 )* " # closing quote
1093 (?: (?: [\040\t] | \(
1094 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1095 \) )* \. (?: [\040\t] | \(
1096 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1098 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1099 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1101 " (?: # opening quote...
1102 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
1104 \\ [^\x80-\xff] # Escaped something (something != CR)
1105 )* " # closing quote
1106 ) )* # further okay, if led by a period
1108 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1109 \) )* @ (?: [\040\t] | \(
1110 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1112 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1113 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1115 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1117 ) # initial subdomain
1120 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1121 \) )* \. # if led by a period...
1123 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1125 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1126 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1128 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1134 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1135 \) )* > # trailing >
1138 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1139 \) )* # optional trailing comment
1141 Alan Other <user\@dom.ain>
1144 \"A. Other\" <user.1234\@dom.ain> (a comment)
1145 A. Other <user.1234\@dom.ain> (a comment)
1146 \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
1147 A missing angle <user\@some.where
1151 /[\040\t]* # Nab whitespace.
1154 [^\\\x80-\xff\n\015()] * # normal*
1156 (?: \\ [^\x80-\xff] |
1158 [^\\\x80-\xff\n\015()] * # normal*
1159 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1162 [^\\\x80-\xff\n\015()] * # normal*
1165 [\040\t]* )* # If comment found, allow more spaces.
1166 # optional leading comment
1169 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1170 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1174 [^\\\x80-\xff\n\015"] * # normal
1175 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1179 [\040\t]* # Nab whitespace.
1182 [^\\\x80-\xff\n\015()] * # normal*
1184 (?: \\ [^\x80-\xff] |
1186 [^\\\x80-\xff\n\015()] * # normal*
1187 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1190 [^\\\x80-\xff\n\015()] * # normal*
1193 [\040\t]* )* # If comment found, allow more spaces.
1196 [\040\t]* # Nab whitespace.
1199 [^\\\x80-\xff\n\015()] * # normal*
1201 (?: \\ [^\x80-\xff] |
1203 [^\\\x80-\xff\n\015()] * # normal*
1204 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1207 [^\\\x80-\xff\n\015()] * # normal*
1210 [\040\t]* )* # If comment found, allow more spaces.
1212 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1213 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1217 [^\\\x80-\xff\n\015"] * # normal
1218 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
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.
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
1281 [\040\t]* # Nab whitespace.
1284 [^\\\x80-\xff\n\015()] * # normal*
1286 (?: \\ [^\x80-\xff] |
1288 [^\\\x80-\xff\n\015()] * # normal*
1289 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1292 [^\\\x80-\xff\n\015()] * # normal*
1295 [\040\t]* )* # If comment found, allow more spaces.
1297 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1298 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1301 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1304 [\040\t]* # Nab whitespace.
1307 [^\\\x80-\xff\n\015()] * # normal*
1309 (?: \\ [^\x80-\xff] |
1311 [^\\\x80-\xff\n\015()] * # normal*
1312 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1315 [^\\\x80-\xff\n\015()] * # normal*
1318 [\040\t]* )* # If comment found, allow more spaces.
1319 # optional trailing comments
1324 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1325 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1329 [^\\\x80-\xff\n\015"] * # normal
1330 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1335 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # "normal" atoms and or spaces
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*
1352 [^\\\x80-\xff\n\015"] * # normal
1353 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1355 ) # "special" comment or quoted string
1356 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # more "normal"
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.
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)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1435 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1438 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1441 [\040\t]* # Nab whitespace.
1444 [^\\\x80-\xff\n\015()] * # normal*
1446 (?: \\ [^\x80-\xff] |
1448 [^\\\x80-\xff\n\015()] * # normal*
1449 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1452 [^\\\x80-\xff\n\015()] * # normal*
1455 [\040\t]* )* # If comment found, allow more spaces.
1456 # optional trailing comments
1459 [\040\t]* # Nab whitespace.
1462 [^\\\x80-\xff\n\015()] * # normal*
1464 (?: \\ [^\x80-\xff] |
1466 [^\\\x80-\xff\n\015()] * # normal*
1467 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1470 [^\\\x80-\xff\n\015()] * # normal*
1473 [\040\t]* )* # If comment found, allow more spaces.
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
1516 [\040\t]* # Nab whitespace.
1519 [^\\\x80-\xff\n\015()] * # normal*
1521 (?: \\ [^\x80-\xff] |
1523 [^\\\x80-\xff\n\015()] * # normal*
1524 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1527 [^\\\x80-\xff\n\015()] * # normal*
1530 [\040\t]* )* # If comment found, allow more spaces.
1532 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1533 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1536 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1539 [\040\t]* # Nab whitespace.
1542 [^\\\x80-\xff\n\015()] * # normal*
1544 (?: \\ [^\x80-\xff] |
1546 [^\\\x80-\xff\n\015()] * # normal*
1547 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1550 [^\\\x80-\xff\n\015()] * # normal*
1553 [\040\t]* )* # If comment found, allow more spaces.
1554 # optional trailing comments
1556 )* # additional domains
1558 [\040\t]* # Nab whitespace.
1561 [^\\\x80-\xff\n\015()] * # normal*
1563 (?: \\ [^\x80-\xff] |
1565 [^\\\x80-\xff\n\015()] * # normal*
1566 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1569 [^\\\x80-\xff\n\015()] * # normal*
1572 [\040\t]* )* # If comment found, allow more spaces.
1573 # optional trailing comments
1576 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1577 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1581 [^\\\x80-\xff\n\015"] * # normal
1582 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1586 [\040\t]* # Nab whitespace.
1589 [^\\\x80-\xff\n\015()] * # normal*
1591 (?: \\ [^\x80-\xff] |
1593 [^\\\x80-\xff\n\015()] * # normal*
1594 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1597 [^\\\x80-\xff\n\015()] * # normal*
1600 [\040\t]* )* # If comment found, allow more spaces.
1603 [\040\t]* # Nab whitespace.
1606 [^\\\x80-\xff\n\015()] * # normal*
1608 (?: \\ [^\x80-\xff] |
1610 [^\\\x80-\xff\n\015()] * # normal*
1611 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1614 [^\\\x80-\xff\n\015()] * # normal*
1617 [\040\t]* )* # If comment found, allow more spaces.
1619 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1620 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1624 [^\\\x80-\xff\n\015"] * # normal
1625 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
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.
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
1688 [\040\t]* # Nab whitespace.
1691 [^\\\x80-\xff\n\015()] * # normal*
1693 (?: \\ [^\x80-\xff] |
1695 [^\\\x80-\xff\n\015()] * # normal*
1696 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1699 [^\\\x80-\xff\n\015()] * # normal*
1702 [\040\t]* )* # If comment found, allow more spaces.
1704 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1705 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1708 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1711 [\040\t]* # Nab whitespace.
1714 [^\\\x80-\xff\n\015()] * # normal*
1716 (?: \\ [^\x80-\xff] |
1718 [^\\\x80-\xff\n\015()] * # normal*
1719 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1722 [^\\\x80-\xff\n\015()] * # normal*
1725 [\040\t]* )* # If comment found, allow more spaces.
1726 # optional trailing comments
1733 Alan Other <user\@dom.ain>
1736 \"A. Other\" <user.1234\@dom.ain> (a comment)
1737 A. Other <user.1234\@dom.ain> (a comment)
1738 \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
1739 A missing angle <user\@some.where
1743 /abc\0def\00pqr\000xyz\0000AB/
1744 abc\0def\00pqr\000xyz\0000AB
1745 abc456 abc\0def\00pqr\000xyz\0000ABCDE
1747 /abc\x0def\x00pqr\x000xyz\x0000AB/
1748 abc\x0def\x00pqr\x000xyz\x0000AB
1749 abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE
1787 /([^.]*)\.([^:]*):[T ]+(.*)/
1788 track1.title:TBlah blah blah
1790 /([^.]*)\.([^:]*):[T ]+(.*)/i
1791 track1.title:TBlah blah blah
1793 /([^.]*)\.([^:]*):[t ]+(.*)/i
1794 track1.title:TBlah blah blah
1916 /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
1937 /^([^a])([^\b])([^c]*)([^d]{3,4})/
1999 /\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/
2000 \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
2002 /P[^*]TAIRE[^*]{1,6}?LL/
2003 xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
2005 /P[^*]TAIRE[^*]{1,}?LL/
2006 xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
2013 /(\.\d\d((?=0)|\d(?=\d)))/
2023 Food is on the foo table
2026 The food is under the bar in the barn.
2029 The food is under the bar in the barn.
2031 /(.*)(\d*)/no_auto_possess
2032 I have 2 numbers: 53147
2035 I have 2 numbers: 53147
2037 /(.*?)(\d*)/no_auto_possess
2038 I have 2 numbers: 53147
2041 I have 2 numbers: 53147
2044 I have 2 numbers: 53147
2047 I have 2 numbers: 53147
2050 I have 2 numbers: 53147
2053 I have 2 numbers: 53147
2058 /^(\D*)(?=\d)(?!123)/
2086 /\d\d\/\d\d\/\d\d\d\d/
2089 /word (?:[a-zA-Z0-9]+ ){0,10}otherword/
2090 word cat dog elephant mussel cow horse canary baboon snake shark otherword
2092 word cat dog elephant mussel cow horse canary baboon snake shark
2094 /word (?:[a-zA-Z0-9]+ ){0,300}otherword/
2096 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
2181 borfle\nbib.gif\nno\n
2184 borfle\nbib.gif\nno\n
2187 borfle\nbib.gif\nno\n
2190 borfle\nbib.gif\nno\n
2245 /^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
2248 /^\d\d\d\d\d\d\d\d\d\d\d\d/
2251 /^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/
2263 /^[abcdefghijklmnopqrstuvwxy0123456789]/
2296 the \"quick\" brown fox
2297 \"the \\\"quick\\\" brown fox\"
2311 /<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
2312 <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>
2391 /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/
2394 /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
2396 /(?>(\.\d\d[1-9]?))\d+/
2402 /^((?>\w+)|(?>\s+))*$/
2403 now is the time for all good men to come to the aid of the party
2405 this is not a line with only words and spaces!
2434 /((?>[^()]+)|\([^()]*\))+/
2437 /\(((?>[^()]+)|\([^()]+\))+\)/
2441 ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
2457 /(a b(?x)c d (?-x)e f)/
2495 /(?s-i:more.*than).*million/i
2498 more \n than Million
2501 more \n than \n million
2503 /(?:(?s-i)more.*than).*million/i
2506 more \n than Million
2509 more \n than \n million
2528 /(?<=a(?i)b)(\w\w)c/
2536 /^(?(?=abc)\w{3}:|\d\d)$/
2543 /^(?(?!abc)\d\d|\w{3}:)$/
2550 /(?(?<=foo)bar|cat)/
2558 /(?(?<!foo)cat|bar)/
2629 /(?(?=[^a-z]+[a-z]) \d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} ) /x
2635 /(?i:saturday|sunday)/
2655 /^([ab](?i)[cd]|[ef])/
2666 /^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/
2683 /(?<=(?<!foo)bar)baz/
2691 # The following tests are taken from the Perl 5.005 test suite; some of them
2692 # are compatible with 5.004, but I'd rather not have to sort them out.
3026 /[a-zA-Z_][a-zA-Z0-9_]*/
3029 /^a(bc+|b[eh])g|.h$/
3032 /(bc+d$|ef*g.|h?i(j|k))/
3040 /((((((((((a))))))))))/
3043 /(((((((((a)))))))))/
3046 /multiple words of text/
3052 multiple words, yeah
3337 /[a-zA-Z_][a-zA-Z0-9_]*/i
3340 /^a(bc+|b[eh])g|.h$/i
3343 /(bc+d$|ef*g.|h?i(j|k))/i
3352 /((((((((((a))))))))))/i
3355 /(((((((((a)))))))))/i
3358 /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i
3361 /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i
3364 /multiple words of text/i
3370 MULTIPLE WORDS, YEAH
3414 /a(?:b|c|d){4,5}(.)/
3417 /a(?:b|c|d){4,5}?(.)/
3423 /a(?:b|c|d){6,7}(.)/
3426 /a(?:b|c|d){6,7}?(.)/
3429 /a(?:b|c|d){5,6}(.)/
3432 /a(?:b|c|d){5,6}?(.)/
3435 /a(?:b|c|d){5,7}(.)/
3438 /a(?:b|c|d){5,7}?(.)/
3441 /a(?:b|(c|e){1,2}?|d)+?(.)/
3453 /(?:(f)(o)(o)|(b)(a)(r))*/
3601 /(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/
3604 /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/
3605 caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
3616 /^a (?#xxx) (?#yyy) {3}c/x
3640 /((?s)^a(.))((?m)^b$)/
3735 /((?>[^()]+)|\([^()]*\))+/
3754 /(?>.*)(?<=(abcd|wxyz))/
3758 a rather long string that doesn't end with one of them
3760 /word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/
3761 word cat dog elephant mussel cow horse canary baboon snake shark otherword
3763 word cat dog elephant mussel cow horse canary baboon snake shark
3765 /word (?>[a-zA-Z0-9]+ ){0,30}otherword/
3767 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
3769 /(?<=\d{3}(?!999))foo/
3775 /(?<=(?!...999)\d{3})foo/
3781 /(?<=\d{3}(?!999)...)foo/
3787 /(?<=\d{3}...)(?<!999)foo/
3812 > \x09\x0a\x0c\x0d\x0b<
3815 > \x09\x0a\x0c\x0d\x0b<
3818 > \x09\x0a\x0c\x0d\x0b<
3821 > \x09\x0a\x0c\x0d\x0b<
3847 abc#not comment\n literal
3852 abc#not comment\n literal
3856 literal\E #more comment
3858 abc#not comment\n literal
3862 literal\E #more comment/x
3863 abc#not comment\n literal
3887 /((?x)x y z | a b c)/
3916 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3918 /(?i)reg(?:ul(?:[aä]|ae)r|ex)/
3924 /Åæåä[à -ÿÀ-ß]+/
3941 this is a line\nbreak
3942 line one\nthis is a line\nbreak in the second line
3944 /line\nbreak/firstline
3945 this is a line\nbreak
3947 line one\nthis is a line\nbreak in the second line
3949 /line\nbreak/m,firstline
3950 this is a line\nbreak
3952 line one\nthis is a line\nbreak in the second line
3986 /Content-Type\x3A[^\r\n]{6,}/
3987 Content-Type:xxxxxyyy
3989 /Content-Type\x3A[^\r\n]{6,}z/
3990 Content-Type:xxxxxyyyz
3992 /Content-Type\x3A[^a]{6,}/
3995 /Content-Type\x3A[^a]{6,}z/
3996 Content-Type:xxxyyyz
4008 /^abc/Im,newline=crlf
4061 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
4063 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4066 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
4068 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4071 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
4073 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4085 /^a.b/newline=anycrlf
4096 /^abc./gmx,newline=any
4097 abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x85abc7 JUNK
4099 /abc.$/gmx,newline=any
4100 abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc9
4135 /^a\R{1,3}b/bsr=unicode
4181 /(?m)^$/g,newline=any,aftertext
4184 /(?m)^$|^\r\n/g,newline=any,aftertext
4187 /(?m)$/g,newline=any,aftertext
4194 /(x)(?|(abc)|(xyz))(x)/
4198 /(x)(?|(abc)(pqr)|(xyz))(x)/
4202 /(?|(abc)|(xyz))(?1)/
4215 \x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a
4216 \x09\x20\xa0\x0a\x0b\x0c\x0d\x0a
4217 \x09\x20\xa0\x0a\x0b\x0c
4219 \x09\x20\xa0\x0a\x0b
4235 /\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/
4236 >XY\x0aZ\x0aA\x0bNN\x0c
4237 >\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
4246 /[\r\n]A/newline=crlf
4249 /(\r|\n)A/newline=crlf
4267 /a\R?b/I,bsr=anycrlf
4275 /a\R?b/I,bsr=unicode
4282 /a\R{2,4}b/I,bsr=anycrlf
4290 /a\R{2,4}b/I,bsr=unicode
4302 /a[]b/alt_bsux,allow_empty_class,match_unset_backref,dupnames
4306 /a[]+b/alt_bsux,allow_empty_class,match_unset_backref,dupnames
4310 /a[]*+b/alt_bsux,allow_empty_class,match_unset_backref,dupnames
4314 /a[^]b/alt_bsux,allow_empty_class,match_unset_backref,dupnames
4320 /a[^]+b/alt_bsux,allow_empty_class,match_unset_backref,dupnames
4342 /xyz/auto_callout,no_start_optimize
4348 /(*NO_START_OPT)xyz/auto_callout
4359 /^"((?(?=[a])[^"])|b)*"$/auto_callout
4433 the quick xyz brown fox
4435 thejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
4437 /(abc|def|xyz)/I,no_start_optimize
4439 the quick xyz brown fox
4441 thejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
4464 /(?:(?1)|B)(A(*F)|C)/
4470 /^(?:(?1)|B)(A(*F)|C)/
4570 /(?=abc){3}abc/aftertext
4575 /(?=abc)+abc/aftertext
4580 /(?=abc)++abc/aftertext
4603 /^(?=(?1))?[az]([abc])d/
4626 /((?(R2)a+|(?1)b))()/
4629 /(?(R)a*(?1)|((?R))b)/
4632 /(a+)/no_auto_possess
4681 /^(a$|a\r)/newline=crlf
4685 /^(a$|a\r)/m,newline=crlf
4693 /.{2,3}/newline=crlf
4701 /.{2,3}?/newline=crlf
4709 # Test simple validity check for restarts
4714 /<H((?(?!<H|F>)(.)|(?R))++)*F>/
4715 text <H more text <H texting more hexA0-"\xA0" hex above 7F-"\xBC" F> text xxxxx <H text F> text F> text2 <H text sample F> more text.
4717 /^(?>.{4})abc|^\w\w.xabcd/
4721 /^(.{4}){2}+abc|^\w\w.x\w\w\w\wabcd/
4728 # These tests show up auto-possessification
4760 '\A(?:[^\"]++|\"(?:[^\"]*+|\"\")*+\")++'
4761 NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
4763 '\A(?:[^\"]++|\"(?:[^\"]++|\"\")*+\")++'
4764 NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
4766 /abc(?=xyz)/allusedtext
4768 abcxyzpqr\=aftertext
4770 /(?<=pqr)abc(?=xyz)/allusedtext
4772 xyzpqrabcxyzpqr\=aftertext
4778 /abc(?=abcde)(?=ab)/allusedtext
4789 /(*NOTEMPTY_ATSTART)a*?b*?/aftertext
4794 XcX\=ovector=2,get=1,get=2,get=3,get=4,getall
4801 a\=ovector=2,get=1,get=2,getall
4802 aaa\=ovector=2,get=1,get=2,getall
4805 abc\=ph,copy=0,copy=1,getall
4807 /ab(?C" any text with spaces ")cde/B
4818 abcdef\=callout_capture
4820 /^a(b)c(?C{AB})def/B
4821 abcdef\=callout_capture
4823 /^(?(?C25)(?=abc)abcd|xyz)/B
4827 /^(?(?C$abc$)(?=abc)abcd|xyz)/B
4831 /^ab(?C'first')cd(?C"second")ef/
4834 /(?:a(?C`code`)){3}X/
4837 # Binary zero in callout string
4838 /"a(?C'x" 00 "z')b"/hex
4849 /^/gm,alt_circumflex
4852 /abc/use_offset_limit
4853 1234abcde\=offset_limit=100
4854 1234abcde\=offset_limit=9
4855 1234abcde\=offset_limit=4
4856 1234abcde\=offset_limit=4,offset=4
4858 1234abcde\=offset_limit=4,offset=5
4859 1234abcde\=offset_limit=3
4861 /(?<=abc)/use_offset_limit
4862 1234abc\=offset_limit=7
4864 1234abc\=offset_limit=6
4869 /()()a+/no_auto_possess
4873 /(*LIMIT_DEPTH=100)^((.)(?1)|.)$/
4874 \= Expect depth limit exceeded
4875 a[00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]
4877 /(*LIMIT_HEAP=0)^((.)(?1)|.)$/
4878 \= Expect heap limit exceeded
4879 a[00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]
4881 /(*LIMIT_HEAP=50000)^((.)(?1)|.)$/
4883 a[00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]
4885 /(02-)?[0-9]{3}-[0-9]{3}/
4901 xyzabcdef\=endanchored
4903 xyzabc\=ps,endanchored
4905 /abc|bcd/endanchored
4919 /'#comment' 0d 0a 00 '^x\' 0a 'y'/x,newline=nul,hex
4934 /(?<=abc|)/endanchored
4937 /(?<=|abc)/endanchored
4940 /(*LIMIT_MATCH=100).*(?![|H]?.*(?![|H]?););.*(?![|H]?.*(?![|H]?););\x00\x00\x00\x00\x00\x00\x00(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?![|);)?.*(![|H]?);)?.*(?![|H]?);)?.*(?![|H]?);)?.*(?![|H]););![|H]?););[|H]?);|H]?);)\x00\x00\x00
\v\x00\x00\x00
\19H]?););?![|H]?);)?.*(?![|H]?););[||H]?);)?.*(?![|H]?););[|H]?);(?![|H]?););![|H]?););[|H]?);|H]?);)?.*(?![|H]?););;[
\13\x00\x00\x00\x00\x00\x00\x00![|H]?););![|H]?););[|H]?);|H]?);)?.*(?![|H]?););/no_dotstar_anchor
4941 \= Expect limit exceeded
4942 .*(?![|H]?.*(?![|H]?););.*(?![|H]?.*(?![|H]?););\x00\x00\x00\x00\x00\x00\x00(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?![|);)?.*(![|H]?);)?.*(?![|H]?);)?.*(?![|H]?);)?.*(?![|H]););![|H]?););[|H]?);|H]?);)\x00\x00\x00
\v\x00\x00\x00
\19H]?););?![|H]?);)?.*(?![|H]?););[||H]?);)?.*(?![|H]?););[|H]?);(?![|H]?););![|H]?););[|H]?);|H]?);)?.*(?![|H]?););;[
\13\x00\x00\x00\x00\x00\x00\x00![|H]?););![|H]?););[|H]?);|H]?);)?.*(?![|H]?););
4950 /\x{0a}abc/firstline,newline=crlf