1/-- This set of tests is for features that are compatible with all versions of 2 Perl >= 5.10, in non-UTF-8 mode. It should run clean for both the 8-bit and 3 16-bit PCRE libraries. --/ 4 5/the quick brown fox/ 6 the quick brown fox 7 The quick brown FOX 8 What do you know about the quick brown fox? 9 What do you know about THE QUICK BROWN FOX? 10 11/The quick brown fox/i 12 the quick brown fox 13 The quick brown FOX 14 What do you know about the quick brown fox? 15 What do you know about THE QUICK BROWN FOX? 16 17/abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/ 18 abcd\t\n\r\f\a\e9;\$\\?caxyz 19 20/a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/ 21 abxyzpqrrrabbxyyyypqAzz 22 abxyzpqrrrabbxyyyypqAzz 23 aabxyzpqrrrabbxyyyypqAzz 24 aaabxyzpqrrrabbxyyyypqAzz 25 aaaabxyzpqrrrabbxyyyypqAzz 26 abcxyzpqrrrabbxyyyypqAzz 27 aabcxyzpqrrrabbxyyyypqAzz 28 aaabcxyzpqrrrabbxyyyypAzz 29 aaabcxyzpqrrrabbxyyyypqAzz 30 aaabcxyzpqrrrabbxyyyypqqAzz 31 aaabcxyzpqrrrabbxyyyypqqqAzz 32 aaabcxyzpqrrrabbxyyyypqqqqAzz 33 aaabcxyzpqrrrabbxyyyypqqqqqAzz 34 aaabcxyzpqrrrabbxyyyypqqqqqqAzz 35 aaaabcxyzpqrrrabbxyyyypqAzz 36 abxyzzpqrrrabbxyyyypqAzz 37 aabxyzzzpqrrrabbxyyyypqAzz 38 aaabxyzzzzpqrrrabbxyyyypqAzz 39 aaaabxyzzzzpqrrrabbxyyyypqAzz 40 abcxyzzpqrrrabbxyyyypqAzz 41 aabcxyzzzpqrrrabbxyyyypqAzz 42 aaabcxyzzzzpqrrrabbxyyyypqAzz 43 aaaabcxyzzzzpqrrrabbxyyyypqAzz 44 aaaabcxyzzzzpqrrrabbbxyyyypqAzz 45 aaaabcxyzzzzpqrrrabbbxyyyyypqAzz 46 aaabcxyzpqrrrabbxyyyypABzz 47 aaabcxyzpqrrrabbxyyyypABBzz 48 >>>aaabxyzpqrrrabbxyyyypqAzz 49 >aaaabxyzpqrrrabbxyyyypqAzz 50 >>>>abcxyzpqrrrabbxyyyypqAzz 51 *** Failers 52 abxyzpqrrabbxyyyypqAzz 53 abxyzpqrrrrabbxyyyypqAzz 54 abxyzpqrrrabxyyyypqAzz 55 aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz 56 aaaabcxyzzzzpqrrrabbbxyyypqAzz 57 aaabcxyzpqrrrabbxyyyypqqqqqqqAzz 58 59/^(abc){1,2}zz/ 60 abczz 61 abcabczz 62 *** Failers 63 zz 64 abcabcabczz 65 >>abczz 66 67/^(b+?|a){1,2}?c/ 68 bc 69 bbc 70 bbbc 71 bac 72 bbac 73 aac 74 abbbbbbbbbbbc 75 bbbbbbbbbbbac 76 *** Failers 77 aaac 78 abbbbbbbbbbbac 79 80/^(b+|a){1,2}c/ 81 bc 82 bbc 83 bbbc 84 bac 85 bbac 86 aac 87 abbbbbbbbbbbc 88 bbbbbbbbbbbac 89 *** Failers 90 aaac 91 abbbbbbbbbbbac 92 93/^(b+|a){1,2}?bc/ 94 bbc 95 96/^(b*|ba){1,2}?bc/ 97 babc 98 bbabc 99 bababc 100 *** Failers 101 bababbc 102 babababc 103 104/^(ba|b*){1,2}?bc/ 105 babc 106 bbabc 107 bababc 108 *** Failers 109 bababbc 110 babababc 111 112/^\ca\cA\c[\c{\c:/ 113 \x01\x01\e;z 114 115/^[ab\]cde]/ 116 athing 117 bthing 118 ]thing 119 cthing 120 dthing 121 ething 122 *** Failers 123 fthing 124 [thing 125 \\thing 126 127/^[]cde]/ 128 ]thing 129 cthing 130 dthing 131 ething 132 *** Failers 133 athing 134 fthing 135 136/^[^ab\]cde]/ 137 fthing 138 [thing 139 \\thing 140 *** Failers 141 athing 142 bthing 143 ]thing 144 cthing 145 dthing 146 ething 147 148/^[^]cde]/ 149 athing 150 fthing 151 *** Failers 152 ]thing 153 cthing 154 dthing 155 ething 156 157/^\�/ 158 � 159 160/^�/ 161 � 162 163/^[0-9]+$/ 164 0 165 1 166 2 167 3 168 4 169 5 170 6 171 7 172 8 173 9 174 10 175 100 176 *** Failers 177 abc 178 179/^.*nter/ 180 enter 181 inter 182 uponter 183 184/^xxx[0-9]+$/ 185 xxx0 186 xxx1234 187 *** Failers 188 xxx 189 190/^.+[0-9][0-9][0-9]$/ 191 x123 192 xx123 193 123456 194 *** Failers 195 123 196 x1234 197 198/^.+?[0-9][0-9][0-9]$/ 199 x123 200 xx123 201 123456 202 *** Failers 203 123 204 x1234 205 206/^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/ 207 abc!pqr=apquxz.ixr.zzz.ac.uk 208 *** Failers 209 !pqr=apquxz.ixr.zzz.ac.uk 210 abc!=apquxz.ixr.zzz.ac.uk 211 abc!pqr=apquxz:ixr.zzz.ac.uk 212 abc!pqr=apquxz.ixr.zzz.ac.ukk 213 214/:/ 215 Well, we need a colon: somewhere 216 *** Fail if we don't 217 218/([\da-f:]+)$/i 219 0abc 220 abc 221 fed 222 E 223 :: 224 5f03:12C0::932e 225 fed def 226 Any old stuff 227 *** Failers 228 0zzz 229 gzzz 230 fed\x20 231 Any old rubbish 232 233/^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/ 234 .1.2.3 235 A.12.123.0 236 *** Failers 237 .1.2.3333 238 1.2.3 239 1234.2.3 240 241/^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/ 242 1 IN SOA non-sp1 non-sp2( 243 1 IN SOA non-sp1 non-sp2 ( 244 *** Failers 245 1IN SOA non-sp1 non-sp2( 246 247/^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/ 248 a. 249 Z. 250 2. 251 ab-c.pq-r. 252 sxk.zzz.ac.uk. 253 x-.y-. 254 *** Failers 255 -abc.peq. 256 257/^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/ 258 *.a 259 *.b0-a 260 *.c3-b.c 261 *.c-a.b-c 262 *** Failers 263 *.0 264 *.a- 265 *.a-b.c- 266 *.c-a.0-c 267 268/^(?=ab(de))(abd)(e)/ 269 abde 270 271/^(?!(ab)de|x)(abd)(f)/ 272 abdf 273 274/^(?=(ab(cd)))(ab)/ 275 abcd 276 277/^[\da-f](\.[\da-f])*$/i 278 a.b.c.d 279 A.B.C.D 280 a.b.c.1.2.3.C 281 282/^\".*\"\s*(;.*)?$/ 283 \"1234\" 284 \"abcd\" ; 285 \"\" ; rhubarb 286 *** Failers 287 \"1234\" : things 288 289/^$/ 290 \ 291 *** Failers 292 293/ ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/x 294 ab c 295 *** Failers 296 abc 297 ab cde 298 299/(?x) ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/ 300 ab c 301 *** Failers 302 abc 303 ab cde 304 305/^ a\ b[c ]d $/x 306 a bcd 307 a b d 308 *** Failers 309 abcd 310 ab d 311 312/^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/ 313 abcdefhijklm 314 315/^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/ 316 abcdefhijklm 317 318/^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/ 319 a+ Z0+\x08\n\x1d\x12 320 321/^[.^$|()*+?{,}]+/ 322 .^\$(*+)|{?,?} 323 324/^a*\w/ 325 z 326 az 327 aaaz 328 a 329 aa 330 aaaa 331 a+ 332 aa+ 333 334/^a*?\w/ 335 z 336 az 337 aaaz 338 a 339 aa 340 aaaa 341 a+ 342 aa+ 343 344/^a+\w/ 345 az 346 aaaz 347 aa 348 aaaa 349 aa+ 350 351/^a+?\w/ 352 az 353 aaaz 354 aa 355 aaaa 356 aa+ 357 358/^\d{8}\w{2,}/ 359 1234567890 360 12345678ab 361 12345678__ 362 *** Failers 363 1234567 364 365/^[aeiou\d]{4,5}$/ 366 uoie 367 1234 368 12345 369 aaaaa 370 *** Failers 371 123456 372 373/^[aeiou\d]{4,5}?/ 374 uoie 375 1234 376 12345 377 aaaaa 378 123456 379 380/\A(abc|def)=(\1){2,3}\Z/ 381 abc=abcabc 382 def=defdefdef 383 *** Failers 384 abc=defdef 385 386/^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\11*(\3\4)\1(?#)2$/ 387 abcdefghijkcda2 388 abcdefghijkkkkcda2 389 390/(cat(a(ract|tonic)|erpillar)) \1()2(3)/ 391 cataract cataract23 392 catatonic catatonic23 393 caterpillar caterpillar23 394 395 396/^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]/ 397 From abcd Mon Sep 01 12:33:02 1997 398 399/^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/ 400 From abcd Mon Sep 01 12:33:02 1997 401 From abcd Mon Sep 1 12:33:02 1997 402 *** Failers 403 From abcd Sep 01 12:33:02 1997 404 405/^12.34/s 406 12\n34 407 12\r34 408 409/\w+(?=\t)/ 410 the quick brown\t fox 411 412/foo(?!bar)(.*)/ 413 foobar is foolish see? 414 415/(?:(?!foo)...|^.{0,2})bar(.*)/ 416 foobar crowbar etc 417 barrel 418 2barrel 419 A barrel 420 421/^(\D*)(?=\d)(?!123)/ 422 abc456 423 *** Failers 424 abc123 425 426/^1234(?# test newlines 427 inside)/ 428 1234 429 430/^1234 #comment in extended re 431 /x 432 1234 433 434/#rhubarb 435 abcd/x 436 abcd 437 438/^abcd#rhubarb/x 439 abcd 440 441/^(a)\1{2,3}(.)/ 442 aaab 443 aaaab 444 aaaaab 445 aaaaaab 446 447/(?!^)abc/ 448 the abc 449 *** Failers 450 abc 451 452/(?=^)abc/ 453 abc 454 *** Failers 455 the abc 456 457/^[ab]{1,3}(ab*|b)/ 458 aabbbbb 459 460/^[ab]{1,3}?(ab*|b)/ 461 aabbbbb 462 463/^[ab]{1,3}?(ab*?|b)/ 464 aabbbbb 465 466/^[ab]{1,3}(ab*?|b)/ 467 aabbbbb 468 469/ (?: [\040\t] | \( 470(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 471\) )* # optional leading comment 472(?: (?: 473[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 474(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 475| 476" (?: # opening quote... 477[^\\\x80-\xff\n\015"] # Anything except backslash and quote 478| # or 479\\ [^\x80-\xff] # Escaped something (something != CR) 480)* " # closing quote 481) # initial word 482(?: (?: [\040\t] | \( 483(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 484\) )* \. (?: [\040\t] | \( 485(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 486\) )* (?: 487[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 488(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 489| 490" (?: # opening quote... 491[^\\\x80-\xff\n\015"] # Anything except backslash and quote 492| # or 493\\ [^\x80-\xff] # Escaped something (something != CR) 494)* " # closing quote 495) )* # further okay, if led by a period 496(?: [\040\t] | \( 497(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 498\) )* @ (?: [\040\t] | \( 499(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 500\) )* (?: 501[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 502(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 503| \[ # [ 504(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 505\] # ] 506) # initial subdomain 507(?: # 508(?: [\040\t] | \( 509(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 510\) )* \. # if led by a period... 511(?: [\040\t] | \( 512(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 513\) )* (?: 514[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 515(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 516| \[ # [ 517(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 518\] # ] 519) # ...further okay 520)* 521# address 522| # or 523(?: 524[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 525(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 526| 527" (?: # opening quote... 528[^\\\x80-\xff\n\015"] # Anything except backslash and quote 529| # or 530\\ [^\x80-\xff] # Escaped something (something != CR) 531)* " # closing quote 532) # one word, optionally followed by.... 533(?: 534[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] | # atom and space parts, or... 535\( 536(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 537\) | # comments, or... 538 539" (?: # opening quote... 540[^\\\x80-\xff\n\015"] # Anything except backslash and quote 541| # or 542\\ [^\x80-\xff] # Escaped something (something != CR) 543)* " # closing quote 544# quoted strings 545)* 546< (?: [\040\t] | \( 547(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 548\) )* # leading < 549(?: @ (?: [\040\t] | \( 550(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 551\) )* (?: 552[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 553(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 554| \[ # [ 555(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 556\] # ] 557) # initial subdomain 558(?: # 559(?: [\040\t] | \( 560(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 561\) )* \. # if led by a period... 562(?: [\040\t] | \( 563(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 564\) )* (?: 565[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 566(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 567| \[ # [ 568(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 569\] # ] 570) # ...further okay 571)* 572 573(?: (?: [\040\t] | \( 574(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 575\) )* , (?: [\040\t] | \( 576(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 577\) )* @ (?: [\040\t] | \( 578(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 579\) )* (?: 580[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 581(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 582| \[ # [ 583(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 584\] # ] 585) # initial subdomain 586(?: # 587(?: [\040\t] | \( 588(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 589\) )* \. # if led by a period... 590(?: [\040\t] | \( 591(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 592\) )* (?: 593[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 594(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 595| \[ # [ 596(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 597\] # ] 598) # ...further okay 599)* 600)* # further okay, if led by comma 601: # closing colon 602(?: [\040\t] | \( 603(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 604\) )* )? # optional route 605(?: 606[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 607(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 608| 609" (?: # opening quote... 610[^\\\x80-\xff\n\015"] # Anything except backslash and quote 611| # or 612\\ [^\x80-\xff] # Escaped something (something != CR) 613)* " # closing quote 614) # initial word 615(?: (?: [\040\t] | \( 616(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 617\) )* \. (?: [\040\t] | \( 618(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 619\) )* (?: 620[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 621(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 622| 623" (?: # opening quote... 624[^\\\x80-\xff\n\015"] # Anything except backslash and quote 625| # or 626\\ [^\x80-\xff] # Escaped something (something != CR) 627)* " # closing quote 628) )* # further okay, if led by a period 629(?: [\040\t] | \( 630(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 631\) )* @ (?: [\040\t] | \( 632(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 633\) )* (?: 634[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 635(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 636| \[ # [ 637(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 638\] # ] 639) # initial subdomain 640(?: # 641(?: [\040\t] | \( 642(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 643\) )* \. # if led by a period... 644(?: [\040\t] | \( 645(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 646\) )* (?: 647[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 648(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 649| \[ # [ 650(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 651\] # ] 652) # ...further okay 653)* 654# address spec 655(?: [\040\t] | \( 656(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 657\) )* > # trailing > 658# name and address 659) (?: [\040\t] | \( 660(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 661\) )* # optional trailing comment 662/x 663 Alan Other <user\@dom.ain> 664 <user\@dom.ain> 665 user\@dom.ain 666 \"A. Other\" <user.1234\@dom.ain> (a comment) 667 A. Other <user.1234\@dom.ain> (a comment) 668 \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay 669 A missing angle <user\@some.where 670 *** Failers 671 The quick brown fox 672 673/[\040\t]* # Nab whitespace. 674(?: 675\( # ( 676[^\\\x80-\xff\n\015()] * # normal* 677(?: # ( 678(?: \\ [^\x80-\xff] | 679\( # ( 680[^\\\x80-\xff\n\015()] * # normal* 681(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 682\) # ) 683) # special 684[^\\\x80-\xff\n\015()] * # normal* 685)* # )* 686\) # ) 687[\040\t]* )* # If comment found, allow more spaces. 688# optional leading comment 689(?: 690(?: 691[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 692(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 693# Atom 694| # or 695" # " 696[^\\\x80-\xff\n\015"] * # normal 697(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* 698" # " 699# Quoted string 700) 701[\040\t]* # Nab whitespace. 702(?: 703\( # ( 704[^\\\x80-\xff\n\015()] * # normal* 705(?: # ( 706(?: \\ [^\x80-\xff] | 707\( # ( 708[^\\\x80-\xff\n\015()] * # normal* 709(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 710\) # ) 711) # special 712[^\\\x80-\xff\n\015()] * # normal* 713)* # )* 714\) # ) 715[\040\t]* )* # If comment found, allow more spaces. 716(?: 717\. 718[\040\t]* # Nab whitespace. 719(?: 720\( # ( 721[^\\\x80-\xff\n\015()] * # normal* 722(?: # ( 723(?: \\ [^\x80-\xff] | 724\( # ( 725[^\\\x80-\xff\n\015()] * # normal* 726(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 727\) # ) 728) # special 729[^\\\x80-\xff\n\015()] * # normal* 730)* # )* 731\) # ) 732[\040\t]* )* # If comment found, allow more spaces. 733(?: 734[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 735(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 736# Atom 737| # or 738" # " 739[^\\\x80-\xff\n\015"] * # normal 740(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* 741" # " 742# Quoted string 743) 744[\040\t]* # Nab whitespace. 745(?: 746\( # ( 747[^\\\x80-\xff\n\015()] * # normal* 748(?: # ( 749(?: \\ [^\x80-\xff] | 750\( # ( 751[^\\\x80-\xff\n\015()] * # normal* 752(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 753\) # ) 754) # special 755[^\\\x80-\xff\n\015()] * # normal* 756)* # )* 757\) # ) 758[\040\t]* )* # If comment found, allow more spaces. 759# additional words 760)* 761@ 762[\040\t]* # Nab whitespace. 763(?: 764\( # ( 765[^\\\x80-\xff\n\015()] * # normal* 766(?: # ( 767(?: \\ [^\x80-\xff] | 768\( # ( 769[^\\\x80-\xff\n\015()] * # normal* 770(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 771\) # ) 772) # special 773[^\\\x80-\xff\n\015()] * # normal* 774)* # )* 775\) # ) 776[\040\t]* )* # If comment found, allow more spaces. 777(?: 778[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 779(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 780| 781\[ # [ 782(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 783\] # ] 784) 785[\040\t]* # Nab whitespace. 786(?: 787\( # ( 788[^\\\x80-\xff\n\015()] * # normal* 789(?: # ( 790(?: \\ [^\x80-\xff] | 791\( # ( 792[^\\\x80-\xff\n\015()] * # normal* 793(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 794\) # ) 795) # special 796[^\\\x80-\xff\n\015()] * # normal* 797)* # )* 798\) # ) 799[\040\t]* )* # If comment found, allow more spaces. 800# optional trailing comments 801(?: 802\. 803[\040\t]* # Nab whitespace. 804(?: 805\( # ( 806[^\\\x80-\xff\n\015()] * # normal* 807(?: # ( 808(?: \\ [^\x80-\xff] | 809\( # ( 810[^\\\x80-\xff\n\015()] * # normal* 811(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 812\) # ) 813) # special 814[^\\\x80-\xff\n\015()] * # normal* 815)* # )* 816\) # ) 817[\040\t]* )* # If comment found, allow more spaces. 818(?: 819[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 820(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 821| 822\[ # [ 823(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 824\] # ] 825) 826[\040\t]* # Nab whitespace. 827(?: 828\( # ( 829[^\\\x80-\xff\n\015()] * # normal* 830(?: # ( 831(?: \\ [^\x80-\xff] | 832\( # ( 833[^\\\x80-\xff\n\015()] * # normal* 834(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 835\) # ) 836) # special 837[^\\\x80-\xff\n\015()] * # normal* 838)* # )* 839\) # ) 840[\040\t]* )* # If comment found, allow more spaces. 841# optional trailing comments 842)* 843# address 844| # or 845(?: 846[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 847(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 848# Atom 849| # or 850" # " 851[^\\\x80-\xff\n\015"] * # normal 852(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* 853" # " 854# Quoted string 855) 856# leading word 857[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # "normal" atoms and or spaces 858(?: 859(?: 860\( # ( 861[^\\\x80-\xff\n\015()] * # normal* 862(?: # ( 863(?: \\ [^\x80-\xff] | 864\( # ( 865[^\\\x80-\xff\n\015()] * # normal* 866(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 867\) # ) 868) # special 869[^\\\x80-\xff\n\015()] * # normal* 870)* # )* 871\) # ) 872| 873" # " 874[^\\\x80-\xff\n\015"] * # normal 875(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* 876" # " 877) # "special" comment or quoted string 878[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # more "normal" 879)* 880< 881[\040\t]* # Nab whitespace. 882(?: 883\( # ( 884[^\\\x80-\xff\n\015()] * # normal* 885(?: # ( 886(?: \\ [^\x80-\xff] | 887\( # ( 888[^\\\x80-\xff\n\015()] * # normal* 889(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 890\) # ) 891) # special 892[^\\\x80-\xff\n\015()] * # normal* 893)* # )* 894\) # ) 895[\040\t]* )* # If comment found, allow more spaces. 896# < 897(?: 898@ 899[\040\t]* # Nab whitespace. 900(?: 901\( # ( 902[^\\\x80-\xff\n\015()] * # normal* 903(?: # ( 904(?: \\ [^\x80-\xff] | 905\( # ( 906[^\\\x80-\xff\n\015()] * # normal* 907(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 908\) # ) 909) # special 910[^\\\x80-\xff\n\015()] * # normal* 911)* # )* 912\) # ) 913[\040\t]* )* # If comment found, allow more spaces. 914(?: 915[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 916(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 917| 918\[ # [ 919(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 920\] # ] 921) 922[\040\t]* # Nab whitespace. 923(?: 924\( # ( 925[^\\\x80-\xff\n\015()] * # normal* 926(?: # ( 927(?: \\ [^\x80-\xff] | 928\( # ( 929[^\\\x80-\xff\n\015()] * # normal* 930(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 931\) # ) 932) # special 933[^\\\x80-\xff\n\015()] * # normal* 934)* # )* 935\) # ) 936[\040\t]* )* # If comment found, allow more spaces. 937# optional trailing comments 938(?: 939\. 940[\040\t]* # Nab whitespace. 941(?: 942\( # ( 943[^\\\x80-\xff\n\015()] * # normal* 944(?: # ( 945(?: \\ [^\x80-\xff] | 946\( # ( 947[^\\\x80-\xff\n\015()] * # normal* 948(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 949\) # ) 950) # special 951[^\\\x80-\xff\n\015()] * # normal* 952)* # )* 953\) # ) 954[\040\t]* )* # If comment found, allow more spaces. 955(?: 956[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 957(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 958| 959\[ # [ 960(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 961\] # ] 962) 963[\040\t]* # Nab whitespace. 964(?: 965\( # ( 966[^\\\x80-\xff\n\015()] * # normal* 967(?: # ( 968(?: \\ [^\x80-\xff] | 969\( # ( 970[^\\\x80-\xff\n\015()] * # normal* 971(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 972\) # ) 973) # special 974[^\\\x80-\xff\n\015()] * # normal* 975)* # )* 976\) # ) 977[\040\t]* )* # If comment found, allow more spaces. 978# optional trailing comments 979)* 980(?: , 981[\040\t]* # Nab whitespace. 982(?: 983\( # ( 984[^\\\x80-\xff\n\015()] * # normal* 985(?: # ( 986(?: \\ [^\x80-\xff] | 987\( # ( 988[^\\\x80-\xff\n\015()] * # normal* 989(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 990\) # ) 991) # special 992[^\\\x80-\xff\n\015()] * # normal* 993)* # )* 994\) # ) 995[\040\t]* )* # If comment found, allow more spaces. 996@ 997[\040\t]* # Nab whitespace. 998(?: 999\( # ( 1000[^\\\x80-\xff\n\015()] * # normal* 1001(?: # ( 1002(?: \\ [^\x80-\xff] | 1003\( # ( 1004[^\\\x80-\xff\n\015()] * # normal* 1005(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1006\) # ) 1007) # special 1008[^\\\x80-\xff\n\015()] * # normal* 1009)* # )* 1010\) # ) 1011[\040\t]* )* # If comment found, allow more spaces. 1012(?: 1013[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1014(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1015| 1016\[ # [ 1017(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 1018\] # ] 1019) 1020[\040\t]* # Nab whitespace. 1021(?: 1022\( # ( 1023[^\\\x80-\xff\n\015()] * # normal* 1024(?: # ( 1025(?: \\ [^\x80-\xff] | 1026\( # ( 1027[^\\\x80-\xff\n\015()] * # normal* 1028(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1029\) # ) 1030) # special 1031[^\\\x80-\xff\n\015()] * # normal* 1032)* # )* 1033\) # ) 1034[\040\t]* )* # If comment found, allow more spaces. 1035# optional trailing comments 1036(?: 1037\. 1038[\040\t]* # Nab whitespace. 1039(?: 1040\( # ( 1041[^\\\x80-\xff\n\015()] * # normal* 1042(?: # ( 1043(?: \\ [^\x80-\xff] | 1044\( # ( 1045[^\\\x80-\xff\n\015()] * # normal* 1046(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1047\) # ) 1048) # special 1049[^\\\x80-\xff\n\015()] * # normal* 1050)* # )* 1051\) # ) 1052[\040\t]* )* # If comment found, allow more spaces. 1053(?: 1054[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1055(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1056| 1057\[ # [ 1058(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 1059\] # ] 1060) 1061[\040\t]* # Nab whitespace. 1062(?: 1063\( # ( 1064[^\\\x80-\xff\n\015()] * # normal* 1065(?: # ( 1066(?: \\ [^\x80-\xff] | 1067\( # ( 1068[^\\\x80-\xff\n\015()] * # normal* 1069(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1070\) # ) 1071) # special 1072[^\\\x80-\xff\n\015()] * # normal* 1073)* # )* 1074\) # ) 1075[\040\t]* )* # If comment found, allow more spaces. 1076# optional trailing comments 1077)* 1078)* # additional domains 1079: 1080[\040\t]* # Nab whitespace. 1081(?: 1082\( # ( 1083[^\\\x80-\xff\n\015()] * # normal* 1084(?: # ( 1085(?: \\ [^\x80-\xff] | 1086\( # ( 1087[^\\\x80-\xff\n\015()] * # normal* 1088(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1089\) # ) 1090) # special 1091[^\\\x80-\xff\n\015()] * # normal* 1092)* # )* 1093\) # ) 1094[\040\t]* )* # If comment found, allow more spaces. 1095# optional trailing comments 1096)? # optional route 1097(?: 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 1100# Atom 1101| # or 1102" # " 1103[^\\\x80-\xff\n\015"] * # normal 1104(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* 1105" # " 1106# Quoted string 1107) 1108[\040\t]* # Nab whitespace. 1109(?: 1110\( # ( 1111[^\\\x80-\xff\n\015()] * # normal* 1112(?: # ( 1113(?: \\ [^\x80-\xff] | 1114\( # ( 1115[^\\\x80-\xff\n\015()] * # normal* 1116(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1117\) # ) 1118) # special 1119[^\\\x80-\xff\n\015()] * # normal* 1120)* # )* 1121\) # ) 1122[\040\t]* )* # If comment found, allow more spaces. 1123(?: 1124\. 1125[\040\t]* # Nab whitespace. 1126(?: 1127\( # ( 1128[^\\\x80-\xff\n\015()] * # normal* 1129(?: # ( 1130(?: \\ [^\x80-\xff] | 1131\( # ( 1132[^\\\x80-\xff\n\015()] * # normal* 1133(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1134\) # ) 1135) # special 1136[^\\\x80-\xff\n\015()] * # normal* 1137)* # )* 1138\) # ) 1139[\040\t]* )* # If comment found, allow more spaces. 1140(?: 1141[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1142(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1143# Atom 1144| # or 1145" # " 1146[^\\\x80-\xff\n\015"] * # normal 1147(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* 1148" # " 1149# Quoted string 1150) 1151[\040\t]* # Nab whitespace. 1152(?: 1153\( # ( 1154[^\\\x80-\xff\n\015()] * # normal* 1155(?: # ( 1156(?: \\ [^\x80-\xff] | 1157\( # ( 1158[^\\\x80-\xff\n\015()] * # normal* 1159(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1160\) # ) 1161) # special 1162[^\\\x80-\xff\n\015()] * # normal* 1163)* # )* 1164\) # ) 1165[\040\t]* )* # If comment found, allow more spaces. 1166# additional words 1167)* 1168@ 1169[\040\t]* # Nab whitespace. 1170(?: 1171\( # ( 1172[^\\\x80-\xff\n\015()] * # normal* 1173(?: # ( 1174(?: \\ [^\x80-\xff] | 1175\( # ( 1176[^\\\x80-\xff\n\015()] * # normal* 1177(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1178\) # ) 1179) # special 1180[^\\\x80-\xff\n\015()] * # normal* 1181)* # )* 1182\) # ) 1183[\040\t]* )* # If comment found, allow more spaces. 1184(?: 1185[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1186(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1187| 1188\[ # [ 1189(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 1190\] # ] 1191) 1192[\040\t]* # Nab whitespace. 1193(?: 1194\( # ( 1195[^\\\x80-\xff\n\015()] * # normal* 1196(?: # ( 1197(?: \\ [^\x80-\xff] | 1198\( # ( 1199[^\\\x80-\xff\n\015()] * # normal* 1200(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1201\) # ) 1202) # special 1203[^\\\x80-\xff\n\015()] * # normal* 1204)* # )* 1205\) # ) 1206[\040\t]* )* # If comment found, allow more spaces. 1207# optional trailing comments 1208(?: 1209\. 1210[\040\t]* # Nab whitespace. 1211(?: 1212\( # ( 1213[^\\\x80-\xff\n\015()] * # normal* 1214(?: # ( 1215(?: \\ [^\x80-\xff] | 1216\( # ( 1217[^\\\x80-\xff\n\015()] * # normal* 1218(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1219\) # ) 1220) # special 1221[^\\\x80-\xff\n\015()] * # normal* 1222)* # )* 1223\) # ) 1224[\040\t]* )* # If comment found, allow more spaces. 1225(?: 1226[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1227(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1228| 1229\[ # [ 1230(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 1231\] # ] 1232) 1233[\040\t]* # Nab whitespace. 1234(?: 1235\( # ( 1236[^\\\x80-\xff\n\015()] * # normal* 1237(?: # ( 1238(?: \\ [^\x80-\xff] | 1239\( # ( 1240[^\\\x80-\xff\n\015()] * # normal* 1241(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1242\) # ) 1243) # special 1244[^\\\x80-\xff\n\015()] * # normal* 1245)* # )* 1246\) # ) 1247[\040\t]* )* # If comment found, allow more spaces. 1248# optional trailing comments 1249)* 1250# address spec 1251> # > 1252# name and address 1253) 1254/x 1255 Alan Other <user\@dom.ain> 1256 <user\@dom.ain> 1257 user\@dom.ain 1258 \"A. Other\" <user.1234\@dom.ain> (a comment) 1259 A. Other <user.1234\@dom.ain> (a comment) 1260 \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay 1261 A missing angle <user\@some.where 1262 *** Failers 1263 The quick brown fox 1264 1265/abc\0def\00pqr\000xyz\0000AB/ 1266 abc\0def\00pqr\000xyz\0000AB 1267 abc456 abc\0def\00pqr\000xyz\0000ABCDE 1268 1269/abc\x0def\x00pqr\x000xyz\x0000AB/ 1270 abc\x0def\x00pqr\x000xyz\x0000AB 1271 abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE 1272 1273/^[\000-\037]/ 1274 \0A 1275 \01B 1276 \037C 1277 1278/\0*/ 1279 \0\0\0\0 1280 1281/A\x0{2,3}Z/ 1282 The A\x0\x0Z 1283 An A\0\x0\0Z 1284 *** Failers 1285 A\0Z 1286 A\0\x0\0\x0Z 1287 1288/^(cow|)\1(bell)/ 1289 cowcowbell 1290 bell 1291 *** Failers 1292 cowbell 1293 1294/^\s/ 1295 \040abc 1296 \x0cabc 1297 \nabc 1298 \rabc 1299 \tabc 1300 *** Failers 1301 abc 1302 1303/^a b 1304 c/x 1305 abc 1306 1307/^(a|)\1*b/ 1308 ab 1309 aaaab 1310 b 1311 *** Failers 1312 acb 1313 1314/^(a|)\1+b/ 1315 aab 1316 aaaab 1317 b 1318 *** Failers 1319 ab 1320 1321/^(a|)\1?b/ 1322 ab 1323 aab 1324 b 1325 *** Failers 1326 acb 1327 1328/^(a|)\1{2}b/ 1329 aaab 1330 b 1331 *** Failers 1332 ab 1333 aab 1334 aaaab 1335 1336/^(a|)\1{2,3}b/ 1337 aaab 1338 aaaab 1339 b 1340 *** Failers 1341 ab 1342 aab 1343 aaaaab 1344 1345/ab{1,3}bc/ 1346 abbbbc 1347 abbbc 1348 abbc 1349 *** Failers 1350 abc 1351 abbbbbc 1352 1353/([^.]*)\.([^:]*):[T ]+(.*)/ 1354 track1.title:TBlah blah blah 1355 1356/([^.]*)\.([^:]*):[T ]+(.*)/i 1357 track1.title:TBlah blah blah 1358 1359/([^.]*)\.([^:]*):[t ]+(.*)/i 1360 track1.title:TBlah blah blah 1361 1362/^[W-c]+$/ 1363 WXY_^abc 1364 *** Failers 1365 wxy 1366 1367/^[W-c]+$/i 1368 WXY_^abc 1369 wxy_^ABC 1370 1371/^[\x3f-\x5F]+$/i 1372 WXY_^abc 1373 wxy_^ABC 1374 1375/^abc$/m 1376 abc 1377 qqq\nabc 1378 abc\nzzz 1379 qqq\nabc\nzzz 1380 1381/^abc$/ 1382 abc 1383 *** Failers 1384 qqq\nabc 1385 abc\nzzz 1386 qqq\nabc\nzzz 1387 1388/\Aabc\Z/m 1389 abc 1390 abc\n 1391 *** Failers 1392 qqq\nabc 1393 abc\nzzz 1394 qqq\nabc\nzzz 1395 1396/\A(.)*\Z/s 1397 abc\ndef 1398 1399/\A(.)*\Z/m 1400 *** Failers 1401 abc\ndef 1402 1403/(?:b)|(?::+)/ 1404 b::c 1405 c::b 1406 1407/[-az]+/ 1408 az- 1409 *** Failers 1410 b 1411 1412/[az-]+/ 1413 za- 1414 *** Failers 1415 b 1416 1417/[a\-z]+/ 1418 a-z 1419 *** Failers 1420 b 1421 1422/[a-z]+/ 1423 abcdxyz 1424 1425/[\d-]+/ 1426 12-34 1427 *** Failers 1428 aaa 1429 1430/[\d-z]+/ 1431 12-34z 1432 *** Failers 1433 aaa 1434 1435/\x5c/ 1436 \\ 1437 1438/\x20Z/ 1439 the Zoo 1440 *** Failers 1441 Zulu 1442 1443/(abc)\1/i 1444 abcabc 1445 ABCabc 1446 abcABC 1447 1448/ab{3cd/ 1449 ab{3cd 1450 1451/ab{3,cd/ 1452 ab{3,cd 1453 1454/ab{3,4a}cd/ 1455 ab{3,4a}cd 1456 1457/{4,5a}bc/ 1458 {4,5a}bc 1459 1460/abc$/ 1461 abc 1462 abc\n 1463 *** Failers 1464 abc\ndef 1465 1466/(abc)\123/ 1467 abc\x53 1468 1469/(abc)\223/ 1470 abc\x93 1471 1472/(abc)\323/ 1473 abc\xd3 1474 1475/(abc)\100/ 1476 abc\x40 1477 abc\100 1478 1479/(abc)\1000/ 1480 abc\x400 1481 abc\x40\x30 1482 abc\1000 1483 abc\100\x30 1484 abc\100\060 1485 abc\100\60 1486 1487/abc\81/ 1488 abc\081 1489 abc\0\x38\x31 1490 1491/abc\91/ 1492 abc\091 1493 abc\0\x39\x31 1494 1495/(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\12\123/ 1496 abcdefghijkllS 1497 1498/(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/ 1499 abcdefghijk\12S 1500 1501/ab\idef/ 1502 abidef 1503 1504/a{0}bc/ 1505 bc 1506 1507/(a|(bc)){0,0}?xyz/ 1508 xyz 1509 1510/abc[\10]de/ 1511 abc\010de 1512 1513/abc[\1]de/ 1514 abc\1de 1515 1516/(abc)[\1]de/ 1517 abc\1de 1518 1519/(?s)a.b/ 1520 a\nb 1521 1522/^([^a])([^\b])([^c]*)([^d]{3,4})/ 1523 baNOTccccd 1524 baNOTcccd 1525 baNOTccd 1526 bacccd 1527 *** Failers 1528 anything 1529 b\bc 1530 baccd 1531 1532/[^a]/ 1533 Abc 1534 1535/[^a]/i 1536 Abc 1537 1538/[^a]+/ 1539 AAAaAbc 1540 1541/[^a]+/i 1542 AAAaAbc 1543 1544/[^a]+/ 1545 bbb\nccc 1546 1547/[^k]$/ 1548 abc 1549 *** Failers 1550 abk 1551 1552/[^k]{2,3}$/ 1553 abc 1554 kbc 1555 kabc 1556 *** Failers 1557 abk 1558 akb 1559 akk 1560 1561/^\d{8,}\@.+[^k]$/ 1562 12345678\@a.b.c.d 1563 123456789\@x.y.z 1564 *** Failers 1565 12345678\@x.y.uk 1566 1234567\@a.b.c.d 1567 1568/(a)\1{8,}/ 1569 aaaaaaaaa 1570 aaaaaaaaaa 1571 *** Failers 1572 aaaaaaa 1573 1574/[^a]/ 1575 aaaabcd 1576 aaAabcd 1577 1578/[^a]/i 1579 aaaabcd 1580 aaAabcd 1581 1582/[^az]/ 1583 aaaabcd 1584 aaAabcd 1585 1586/[^az]/i 1587 aaaabcd 1588 aaAabcd 1589 1590/\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/ 1591 \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 1592 1593/P[^*]TAIRE[^*]{1,6}?LL/ 1594 xxxxxxxxxxxPSTAIREISLLxxxxxxxxx 1595 1596/P[^*]TAIRE[^*]{1,}?LL/ 1597 xxxxxxxxxxxPSTAIREISLLxxxxxxxxx 1598 1599/(\.\d\d[1-9]?)\d+/ 1600 1.230003938 1601 1.875000282 1602 1.235 1603 1604/(\.\d\d((?=0)|\d(?=\d)))/ 1605 1.230003938 1606 1.875000282 1607 *** Failers 1608 1.235 1609 1610/a(?)b/ 1611 ab 1612 1613/\b(foo)\s+(\w+)/i 1614 Food is on the foo table 1615 1616/foo(.*)bar/ 1617 The food is under the bar in the barn. 1618 1619/foo(.*?)bar/ 1620 The food is under the bar in the barn. 1621 1622/(.*)(\d*)/ 1623 I have 2 numbers: 53147 1624 1625/(.*)(\d+)/ 1626 I have 2 numbers: 53147 1627 1628/(.*?)(\d*)/ 1629 I have 2 numbers: 53147 1630 1631/(.*?)(\d+)/ 1632 I have 2 numbers: 53147 1633 1634/(.*)(\d+)$/ 1635 I have 2 numbers: 53147 1636 1637/(.*?)(\d+)$/ 1638 I have 2 numbers: 53147 1639 1640/(.*)\b(\d+)$/ 1641 I have 2 numbers: 53147 1642 1643/(.*\D)(\d+)$/ 1644 I have 2 numbers: 53147 1645 1646/^\D*(?!123)/ 1647 ABC123 1648 1649/^(\D*)(?=\d)(?!123)/ 1650 ABC445 1651 *** Failers 1652 ABC123 1653 1654/^[W-]46]/ 1655 W46]789 1656 -46]789 1657 *** Failers 1658 Wall 1659 Zebra 1660 42 1661 [abcd] 1662 ]abcd[ 1663 1664/^[W-\]46]/ 1665 W46]789 1666 Wall 1667 Zebra 1668 Xylophone 1669 42 1670 [abcd] 1671 ]abcd[ 1672 \\backslash 1673 *** Failers 1674 -46]789 1675 well 1676 1677/\d\d\/\d\d\/\d\d\d\d/ 1678 01/01/2000 1679 1680/word (?:[a-zA-Z0-9]+ ){0,10}otherword/ 1681 word cat dog elephant mussel cow horse canary baboon snake shark otherword 1682 word cat dog elephant mussel cow horse canary baboon snake shark 1683 1684/word (?:[a-zA-Z0-9]+ ){0,300}otherword/ 1685 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 1686 1687/^(a){0,0}/ 1688 bcd 1689 abc 1690 aab 1691 1692/^(a){0,1}/ 1693 bcd 1694 abc 1695 aab 1696 1697/^(a){0,2}/ 1698 bcd 1699 abc 1700 aab 1701 1702/^(a){0,3}/ 1703 bcd 1704 abc 1705 aab 1706 aaa 1707 1708/^(a){0,}/ 1709 bcd 1710 abc 1711 aab 1712 aaa 1713 aaaaaaaa 1714 1715/^(a){1,1}/ 1716 bcd 1717 abc 1718 aab 1719 1720/^(a){1,2}/ 1721 bcd 1722 abc 1723 aab 1724 1725/^(a){1,3}/ 1726 bcd 1727 abc 1728 aab 1729 aaa 1730 1731/^(a){1,}/ 1732 bcd 1733 abc 1734 aab 1735 aaa 1736 aaaaaaaa 1737 1738/.*\.gif/ 1739 borfle\nbib.gif\nno 1740 1741/.{0,}\.gif/ 1742 borfle\nbib.gif\nno 1743 1744/.*\.gif/m 1745 borfle\nbib.gif\nno 1746 1747/.*\.gif/s 1748 borfle\nbib.gif\nno 1749 1750/.*\.gif/ms 1751 borfle\nbib.gif\nno 1752 1753/.*$/ 1754 borfle\nbib.gif\nno 1755 1756/.*$/m 1757 borfle\nbib.gif\nno 1758 1759/.*$/s 1760 borfle\nbib.gif\nno 1761 1762/.*$/ms 1763 borfle\nbib.gif\nno 1764 1765/.*$/ 1766 borfle\nbib.gif\nno\n 1767 1768/.*$/m 1769 borfle\nbib.gif\nno\n 1770 1771/.*$/s 1772 borfle\nbib.gif\nno\n 1773 1774/.*$/ms 1775 borfle\nbib.gif\nno\n 1776 1777/(.*X|^B)/ 1778 abcde\n1234Xyz 1779 BarFoo 1780 *** Failers 1781 abcde\nBar 1782 1783/(.*X|^B)/m 1784 abcde\n1234Xyz 1785 BarFoo 1786 abcde\nBar 1787 1788/(.*X|^B)/s 1789 abcde\n1234Xyz 1790 BarFoo 1791 *** Failers 1792 abcde\nBar 1793 1794/(.*X|^B)/ms 1795 abcde\n1234Xyz 1796 BarFoo 1797 abcde\nBar 1798 1799/(?s)(.*X|^B)/ 1800 abcde\n1234Xyz 1801 BarFoo 1802 *** Failers 1803 abcde\nBar 1804 1805/(?s:.*X|^B)/ 1806 abcde\n1234Xyz 1807 BarFoo 1808 *** Failers 1809 abcde\nBar 1810 1811/^.*B/ 1812 **** Failers 1813 abc\nB 1814 1815/(?s)^.*B/ 1816 abc\nB 1817 1818/(?m)^.*B/ 1819 abc\nB 1820 1821/(?ms)^.*B/ 1822 abc\nB 1823 1824/(?ms)^B/ 1825 abc\nB 1826 1827/(?s)B$/ 1828 B\n 1829 1830/^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/ 1831 123456654321 1832 1833/^\d\d\d\d\d\d\d\d\d\d\d\d/ 1834 123456654321 1835 1836/^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/ 1837 123456654321 1838 1839/^[abc]{12}/ 1840 abcabcabcabc 1841 1842/^[a-c]{12}/ 1843 abcabcabcabc 1844 1845/^(a|b|c){12}/ 1846 abcabcabcabc 1847 1848/^[abcdefghijklmnopqrstuvwxy0123456789]/ 1849 n 1850 *** Failers 1851 z 1852 1853/abcde{0,0}/ 1854 abcd 1855 *** Failers 1856 abce 1857 1858/ab[cd]{0,0}e/ 1859 abe 1860 *** Failers 1861 abcde 1862 1863/ab(c){0,0}d/ 1864 abd 1865 *** Failers 1866 abcd 1867 1868/a(b*)/ 1869 a 1870 ab 1871 abbbb 1872 *** Failers 1873 bbbbb 1874 1875/ab\d{0}e/ 1876 abe 1877 *** Failers 1878 ab1e 1879 1880/"([^\\"]+|\\.)*"/ 1881 the \"quick\" brown fox 1882 \"the \\\"quick\\\" brown fox\" 1883 1884/.*?/g+ 1885 abc 1886 1887/\b/g+ 1888 abc 1889 1890/\b/+g 1891 abc 1892 1893//g 1894 abc 1895 1896/<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 1897 <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> 1898 1899/a[^a]b/ 1900 acb 1901 a\nb 1902 1903/a.b/ 1904 acb 1905 *** Failers 1906 a\nb 1907 1908/a[^a]b/s 1909 acb 1910 a\nb 1911 1912/a.b/s 1913 acb 1914 a\nb 1915 1916/^(b+?|a){1,2}?c/ 1917 bac 1918 bbac 1919 bbbac 1920 bbbbac 1921 bbbbbac 1922 1923/^(b+|a){1,2}?c/ 1924 bac 1925 bbac 1926 bbbac 1927 bbbbac 1928 bbbbbac 1929 1930/(?!\A)x/m 1931 x\nb\n 1932 a\bx\n 1933 1934/\x0{ab}/ 1935 \0{ab} 1936 1937/(A|B)*?CD/ 1938 CD 1939 1940/(A|B)*CD/ 1941 CD 1942 1943/(AB)*?\1/ 1944 ABABAB 1945 1946/(AB)*\1/ 1947 ABABAB 1948 1949/(?<!bar)foo/ 1950 foo 1951 catfood 1952 arfootle 1953 rfoosh 1954 *** Failers 1955 barfoo 1956 towbarfoo 1957 1958/\w{3}(?<!bar)foo/ 1959 catfood 1960 *** Failers 1961 foo 1962 barfoo 1963 towbarfoo 1964 1965/(?<=(foo)a)bar/ 1966 fooabar 1967 *** Failers 1968 bar 1969 foobbar 1970 1971/\Aabc\z/m 1972 abc 1973 *** Failers 1974 abc\n 1975 qqq\nabc 1976 abc\nzzz 1977 qqq\nabc\nzzz 1978 1979"(?>.*/)foo" 1980 /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/ 1981 1982"(?>.*/)foo" 1983 /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo 1984 1985/(?>(\.\d\d[1-9]?))\d+/ 1986 1.230003938 1987 1.875000282 1988 *** Failers 1989 1.235 1990 1991/^((?>\w+)|(?>\s+))*$/ 1992 now is the time for all good men to come to the aid of the party 1993 *** Failers 1994 this is not a line with only words and spaces! 1995 1996/(\d+)(\w)/ 1997 12345a 1998 12345+ 1999 2000/((?>\d+))(\w)/ 2001 12345a 2002 *** Failers 2003 12345+ 2004 2005/(?>a+)b/ 2006 aaab 2007 2008/((?>a+)b)/ 2009 aaab 2010 2011/(?>(a+))b/ 2012 aaab 2013 2014/(?>b)+/ 2015 aaabbbccc 2016 2017/(?>a+|b+|c+)*c/ 2018 aaabbbbccccd 2019 2020/((?>[^()]+)|\([^()]*\))+/ 2021 ((abc(ade)ufh()()x 2022 2023/\(((?>[^()]+)|\([^()]+\))+\)/ 2024 (abc) 2025 (abc(def)xyz) 2026 *** Failers 2027 ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2028 2029/a(?-i)b/i 2030 ab 2031 Ab 2032 *** Failers 2033 aB 2034 AB 2035 2036/(a (?x)b c)d e/ 2037 a bcd e 2038 *** Failers 2039 a b cd e 2040 abcd e 2041 a bcde 2042 2043/(a b(?x)c d (?-x)e f)/ 2044 a bcde f 2045 *** Failers 2046 abcdef 2047 2048/(a(?i)b)c/ 2049 abc 2050 aBc 2051 *** Failers 2052 abC 2053 aBC 2054 Abc 2055 ABc 2056 ABC 2057 AbC 2058 2059/a(?i:b)c/ 2060 abc 2061 aBc 2062 *** Failers 2063 ABC 2064 abC 2065 aBC 2066 2067/a(?i:b)*c/ 2068 aBc 2069 aBBc 2070 *** Failers 2071 aBC 2072 aBBC 2073 2074/a(?=b(?i)c)\w\wd/ 2075 abcd 2076 abCd 2077 *** Failers 2078 aBCd 2079 abcD 2080 2081/(?s-i:more.*than).*million/i 2082 more than million 2083 more than MILLION 2084 more \n than Million 2085 *** Failers 2086 MORE THAN MILLION 2087 more \n than \n million 2088 2089/(?:(?s-i)more.*than).*million/i 2090 more than million 2091 more than MILLION 2092 more \n than Million 2093 *** Failers 2094 MORE THAN MILLION 2095 more \n than \n million 2096 2097/(?>a(?i)b+)+c/ 2098 abc 2099 aBbc 2100 aBBc 2101 *** Failers 2102 Abc 2103 abAb 2104 abbC 2105 2106/(?=a(?i)b)\w\wc/ 2107 abc 2108 aBc 2109 *** Failers 2110 Ab 2111 abC 2112 aBC 2113 2114/(?<=a(?i)b)(\w\w)c/ 2115 abxxc 2116 aBxxc 2117 *** Failers 2118 Abxxc 2119 ABxxc 2120 abxxC 2121 2122/(?:(a)|b)(?(1)A|B)/ 2123 aA 2124 bB 2125 *** Failers 2126 aB 2127 bA 2128 2129/^(a)?(?(1)a|b)+$/ 2130 aa 2131 b 2132 bb 2133 *** Failers 2134 ab 2135 2136/^(?(?=abc)\w{3}:|\d\d)$/ 2137 abc: 2138 12 2139 *** Failers 2140 123 2141 xyz 2142 2143/^(?(?!abc)\d\d|\w{3}:)$/ 2144 abc: 2145 12 2146 *** Failers 2147 123 2148 xyz 2149 2150/(?(?<=foo)bar|cat)/ 2151 foobar 2152 cat 2153 fcat 2154 focat 2155 *** Failers 2156 foocat 2157 2158/(?(?<!foo)cat|bar)/ 2159 foobar 2160 cat 2161 fcat 2162 focat 2163 *** Failers 2164 foocat 2165 2166/( \( )? [^()]+ (?(1) \) |) /x 2167 abcd 2168 (abcd) 2169 the quick (abcd) fox 2170 (abcd 2171 2172/( \( )? [^()]+ (?(1) \) ) /x 2173 abcd 2174 (abcd) 2175 the quick (abcd) fox 2176 (abcd 2177 2178/^(?(2)a|(1)(2))+$/ 2179 12 2180 12a 2181 12aa 2182 *** Failers 2183 1234 2184 2185/((?i)blah)\s+\1/ 2186 blah blah 2187 BLAH BLAH 2188 Blah Blah 2189 blaH blaH 2190 *** Failers 2191 blah BLAH 2192 Blah blah 2193 blaH blah 2194 2195/((?i)blah)\s+(?i:\1)/ 2196 blah blah 2197 BLAH BLAH 2198 Blah Blah 2199 blaH blaH 2200 blah BLAH 2201 Blah blah 2202 blaH blah 2203 2204/(?>a*)*/ 2205 a 2206 aa 2207 aaaa 2208 2209/(abc|)+/ 2210 abc 2211 abcabc 2212 abcabcabc 2213 xyz 2214 2215/([a]*)*/ 2216 a 2217 aaaaa 2218 2219/([ab]*)*/ 2220 a 2221 b 2222 ababab 2223 aaaabcde 2224 bbbb 2225 2226/([^a]*)*/ 2227 b 2228 bbbb 2229 aaa 2230 2231/([^ab]*)*/ 2232 cccc 2233 abab 2234 2235/([a]*?)*/ 2236 a 2237 aaaa 2238 2239/([ab]*?)*/ 2240 a 2241 b 2242 abab 2243 baba 2244 2245/([^a]*?)*/ 2246 b 2247 bbbb 2248 aaa 2249 2250/([^ab]*?)*/ 2251 c 2252 cccc 2253 baba 2254 2255/(?>a*)*/ 2256 a 2257 aaabcde 2258 2259/((?>a*))*/ 2260 aaaaa 2261 aabbaa 2262 2263/((?>a*?))*/ 2264 aaaaa 2265 aabbaa 2266 2267/(?(?=[^a-z]+[a-z]) \d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} ) /x 2268 12-sep-98 2269 12-09-98 2270 *** Failers 2271 sep-12-98 2272 2273/(?<=(foo))bar\1/ 2274 foobarfoo 2275 foobarfootling 2276 *** Failers 2277 foobar 2278 barfoo 2279 2280/(?i:saturday|sunday)/ 2281 saturday 2282 sunday 2283 Saturday 2284 Sunday 2285 SATURDAY 2286 SUNDAY 2287 SunDay 2288 2289/(a(?i)bc|BB)x/ 2290 abcx 2291 aBCx 2292 bbx 2293 BBx 2294 *** Failers 2295 abcX 2296 aBCX 2297 bbX 2298 BBX 2299 2300/^([ab](?i)[cd]|[ef])/ 2301 ac 2302 aC 2303 bD 2304 elephant 2305 Europe 2306 frog 2307 France 2308 *** Failers 2309 Africa 2310 2311/^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/ 2312 ab 2313 aBd 2314 xy 2315 xY 2316 zebra 2317 Zambesi 2318 *** Failers 2319 aCD 2320 XY 2321 2322/(?<=foo\n)^bar/m 2323 foo\nbar 2324 *** Failers 2325 bar 2326 baz\nbar 2327 2328/(?<=(?<!foo)bar)baz/ 2329 barbaz 2330 barbarbaz 2331 koobarbaz 2332 *** Failers 2333 baz 2334 foobarbaz 2335 2336/The cases of aaaa and aaaaaa are missed out below because Perl does things/ 2337/differently. We know that odd, and maybe incorrect, things happen with/ 2338/recursive references in Perl, as far as 5.11.3 - see some stuff in test #2./ 2339 2340/^(a\1?){4}$/ 2341 a 2342 aa 2343 aaa 2344 aaaaa 2345 aaaaaaa 2346 aaaaaaaa 2347 aaaaaaaaa 2348 aaaaaaaaaa 2349 aaaaaaaaaaa 2350 aaaaaaaaaaaa 2351 aaaaaaaaaaaaa 2352 aaaaaaaaaaaaaa 2353 aaaaaaaaaaaaaaa 2354 aaaaaaaaaaaaaaaa 2355 2356/^(a\1?)(a\1?)(a\2?)(a\3?)$/ 2357 a 2358 aa 2359 aaa 2360 aaaa 2361 aaaaa 2362 aaaaaa 2363 aaaaaaa 2364 aaaaaaaa 2365 aaaaaaaaa 2366 aaaaaaaaaa 2367 aaaaaaaaaaa 2368 aaaaaaaaaaaa 2369 aaaaaaaaaaaaa 2370 aaaaaaaaaaaaaa 2371 aaaaaaaaaaaaaaa 2372 aaaaaaaaaaaaaaaa 2373 2374/The following tests are taken from the Perl 5.005 test suite; some of them/ 2375/are compatible with 5.004, but I'd rather not have to sort them out./ 2376 2377/abc/ 2378 abc 2379 xabcy 2380 ababc 2381 *** Failers 2382 xbc 2383 axc 2384 abx 2385 2386/ab*c/ 2387 abc 2388 2389/ab*bc/ 2390 abc 2391 abbc 2392 abbbbc 2393 2394/.{1}/ 2395 abbbbc 2396 2397/.{3,4}/ 2398 abbbbc 2399 2400/ab{0,}bc/ 2401 abbbbc 2402 2403/ab+bc/ 2404 abbc 2405 *** Failers 2406 abc 2407 abq 2408 2409/ab{1,}bc/ 2410 2411/ab+bc/ 2412 abbbbc 2413 2414/ab{1,}bc/ 2415 abbbbc 2416 2417/ab{1,3}bc/ 2418 abbbbc 2419 2420/ab{3,4}bc/ 2421 abbbbc 2422 2423/ab{4,5}bc/ 2424 *** Failers 2425 abq 2426 abbbbc 2427 2428/ab?bc/ 2429 abbc 2430 abc 2431 2432/ab{0,1}bc/ 2433 abc 2434 2435/ab?bc/ 2436 2437/ab?c/ 2438 abc 2439 2440/ab{0,1}c/ 2441 abc 2442 2443/^abc$/ 2444 abc 2445 *** Failers 2446 abbbbc 2447 abcc 2448 2449/^abc/ 2450 abcc 2451 2452/^abc$/ 2453 2454/abc$/ 2455 aabc 2456 *** Failers 2457 aabc 2458 aabcd 2459 2460/^/ 2461 abc 2462 2463/$/ 2464 abc 2465 2466/a.c/ 2467 abc 2468 axc 2469 2470/a.*c/ 2471 axyzc 2472 2473/a[bc]d/ 2474 abd 2475 *** Failers 2476 axyzd 2477 abc 2478 2479/a[b-d]e/ 2480 ace 2481 2482/a[b-d]/ 2483 aac 2484 2485/a[-b]/ 2486 a- 2487 2488/a[b-]/ 2489 a- 2490 2491/a]/ 2492 a] 2493 2494/a[]]b/ 2495 a]b 2496 2497/a[^bc]d/ 2498 aed 2499 *** Failers 2500 abd 2501 abd 2502 2503/a[^-b]c/ 2504 adc 2505 2506/a[^]b]c/ 2507 adc 2508 *** Failers 2509 a-c 2510 a]c 2511 2512/\ba\b/ 2513 a- 2514 -a 2515 -a- 2516 2517/\by\b/ 2518 *** Failers 2519 xy 2520 yz 2521 xyz 2522 2523/\Ba\B/ 2524 *** Failers 2525 a- 2526 -a 2527 -a- 2528 2529/\By\b/ 2530 xy 2531 2532/\by\B/ 2533 yz 2534 2535/\By\B/ 2536 xyz 2537 2538/\w/ 2539 a 2540 2541/\W/ 2542 - 2543 *** Failers 2544 - 2545 a 2546 2547/a\sb/ 2548 a b 2549 2550/a\Sb/ 2551 a-b 2552 *** Failers 2553 a-b 2554 a b 2555 2556/\d/ 2557 1 2558 2559/\D/ 2560 - 2561 *** Failers 2562 - 2563 1 2564 2565/[\w]/ 2566 a 2567 2568/[\W]/ 2569 - 2570 *** Failers 2571 - 2572 a 2573 2574/a[\s]b/ 2575 a b 2576 2577/a[\S]b/ 2578 a-b 2579 *** Failers 2580 a-b 2581 a b 2582 2583/[\d]/ 2584 1 2585 2586/[\D]/ 2587 - 2588 *** Failers 2589 - 2590 1 2591 2592/ab|cd/ 2593 abc 2594 abcd 2595 2596/()ef/ 2597 def 2598 2599/$b/ 2600 2601/a\(b/ 2602 a(b 2603 2604/a\(*b/ 2605 ab 2606 a((b 2607 2608/a\\b/ 2609 a\b 2610 2611/((a))/ 2612 abc 2613 2614/(a)b(c)/ 2615 abc 2616 2617/a+b+c/ 2618 aabbabc 2619 2620/a{1,}b{1,}c/ 2621 aabbabc 2622 2623/a.+?c/ 2624 abcabc 2625 2626/(a+|b)*/ 2627 ab 2628 2629/(a+|b){0,}/ 2630 ab 2631 2632/(a+|b)+/ 2633 ab 2634 2635/(a+|b){1,}/ 2636 ab 2637 2638/(a+|b)?/ 2639 ab 2640 2641/(a+|b){0,1}/ 2642 ab 2643 2644/[^ab]*/ 2645 cde 2646 2647/abc/ 2648 *** Failers 2649 b 2650 2651 2652/a*/ 2653 2654 2655/([abc])*d/ 2656 abbbcd 2657 2658/([abc])*bcd/ 2659 abcd 2660 2661/a|b|c|d|e/ 2662 e 2663 2664/(a|b|c|d|e)f/ 2665 ef 2666 2667/abcd*efg/ 2668 abcdefg 2669 2670/ab*/ 2671 xabyabbbz 2672 xayabbbz 2673 2674/(ab|cd)e/ 2675 abcde 2676 2677/[abhgefdc]ij/ 2678 hij 2679 2680/^(ab|cd)e/ 2681 2682/(abc|)ef/ 2683 abcdef 2684 2685/(a|b)c*d/ 2686 abcd 2687 2688/(ab|ab*)bc/ 2689 abc 2690 2691/a([bc]*)c*/ 2692 abc 2693 2694/a([bc]*)(c*d)/ 2695 abcd 2696 2697/a([bc]+)(c*d)/ 2698 abcd 2699 2700/a([bc]*)(c+d)/ 2701 abcd 2702 2703/a[bcd]*dcdcde/ 2704 adcdcde 2705 2706/a[bcd]+dcdcde/ 2707 *** Failers 2708 abcde 2709 adcdcde 2710 2711/(ab|a)b*c/ 2712 abc 2713 2714/((a)(b)c)(d)/ 2715 abcd 2716 2717/[a-zA-Z_][a-zA-Z0-9_]*/ 2718 alpha 2719 2720/^a(bc+|b[eh])g|.h$/ 2721 abh 2722 2723/(bc+d$|ef*g.|h?i(j|k))/ 2724 effgz 2725 ij 2726 reffgz 2727 *** Failers 2728 effg 2729 bcdd 2730 2731/((((((((((a))))))))))/ 2732 a 2733 2734/((((((((((a))))))))))\10/ 2735 aa 2736 2737/(((((((((a)))))))))/ 2738 a 2739 2740/multiple words of text/ 2741 *** Failers 2742 aa 2743 uh-uh 2744 2745/multiple words/ 2746 multiple words, yeah 2747 2748/(.*)c(.*)/ 2749 abcde 2750 2751/\((.*), (.*)\)/ 2752 (a, b) 2753 2754/[k]/ 2755 2756/abcd/ 2757 abcd 2758 2759/a(bc)d/ 2760 abcd 2761 2762/a[-]?c/ 2763 ac 2764 2765/(abc)\1/ 2766 abcabc 2767 2768/([a-c]*)\1/ 2769 abcabc 2770 2771/(a)|\1/ 2772 a 2773 *** Failers 2774 ab 2775 x 2776 2777/(([a-c])b*?\2)*/ 2778 ababbbcbc 2779 2780/(([a-c])b*?\2){3}/ 2781 ababbbcbc 2782 2783/((\3|b)\2(a)x)+/ 2784 aaaxabaxbaaxbbax 2785 2786/((\3|b)\2(a)){2,}/ 2787 bbaababbabaaaaabbaaaabba 2788 2789/abc/i 2790 ABC 2791 XABCY 2792 ABABC 2793 *** Failers 2794 aaxabxbaxbbx 2795 XBC 2796 AXC 2797 ABX 2798 2799/ab*c/i 2800 ABC 2801 2802/ab*bc/i 2803 ABC 2804 ABBC 2805 2806/ab*?bc/i 2807 ABBBBC 2808 2809/ab{0,}?bc/i 2810 ABBBBC 2811 2812/ab+?bc/i 2813 ABBC 2814 2815/ab+bc/i 2816 *** Failers 2817 ABC 2818 ABQ 2819 2820/ab{1,}bc/i 2821 2822/ab+bc/i 2823 ABBBBC 2824 2825/ab{1,}?bc/i 2826 ABBBBC 2827 2828/ab{1,3}?bc/i 2829 ABBBBC 2830 2831/ab{3,4}?bc/i 2832 ABBBBC 2833 2834/ab{4,5}?bc/i 2835 *** Failers 2836 ABQ 2837 ABBBBC 2838 2839/ab??bc/i 2840 ABBC 2841 ABC 2842 2843/ab{0,1}?bc/i 2844 ABC 2845 2846/ab??bc/i 2847 2848/ab??c/i 2849 ABC 2850 2851/ab{0,1}?c/i 2852 ABC 2853 2854/^abc$/i 2855 ABC 2856 *** Failers 2857 ABBBBC 2858 ABCC 2859 2860/^abc/i 2861 ABCC 2862 2863/^abc$/i 2864 2865/abc$/i 2866 AABC 2867 2868/^/i 2869 ABC 2870 2871/$/i 2872 ABC 2873 2874/a.c/i 2875 ABC 2876 AXC 2877 2878/a.*?c/i 2879 AXYZC 2880 2881/a.*c/i 2882 *** Failers 2883 AABC 2884 AXYZD 2885 2886/a[bc]d/i 2887 ABD 2888 2889/a[b-d]e/i 2890 ACE 2891 *** Failers 2892 ABC 2893 ABD 2894 2895/a[b-d]/i 2896 AAC 2897 2898/a[-b]/i 2899 A- 2900 2901/a[b-]/i 2902 A- 2903 2904/a]/i 2905 A] 2906 2907/a[]]b/i 2908 A]B 2909 2910/a[^bc]d/i 2911 AED 2912 2913/a[^-b]c/i 2914 ADC 2915 *** Failers 2916 ABD 2917 A-C 2918 2919/a[^]b]c/i 2920 ADC 2921 2922/ab|cd/i 2923 ABC 2924 ABCD 2925 2926/()ef/i 2927 DEF 2928 2929/$b/i 2930 *** Failers 2931 A]C 2932 B 2933 2934/a\(b/i 2935 A(B 2936 2937/a\(*b/i 2938 AB 2939 A((B 2940 2941/a\\b/i 2942 A\B 2943 2944/((a))/i 2945 ABC 2946 2947/(a)b(c)/i 2948 ABC 2949 2950/a+b+c/i 2951 AABBABC 2952 2953/a{1,}b{1,}c/i 2954 AABBABC 2955 2956/a.+?c/i 2957 ABCABC 2958 2959/a.*?c/i 2960 ABCABC 2961 2962/a.{0,5}?c/i 2963 ABCABC 2964 2965/(a+|b)*/i 2966 AB 2967 2968/(a+|b){0,}/i 2969 AB 2970 2971/(a+|b)+/i 2972 AB 2973 2974/(a+|b){1,}/i 2975 AB 2976 2977/(a+|b)?/i 2978 AB 2979 2980/(a+|b){0,1}/i 2981 AB 2982 2983/(a+|b){0,1}?/i 2984 AB 2985 2986/[^ab]*/i 2987 CDE 2988 2989/abc/i 2990 2991/a*/i 2992 2993 2994/([abc])*d/i 2995 ABBBCD 2996 2997/([abc])*bcd/i 2998 ABCD 2999 3000/a|b|c|d|e/i 3001 E 3002 3003/(a|b|c|d|e)f/i 3004 EF 3005 3006/abcd*efg/i 3007 ABCDEFG 3008 3009/ab*/i 3010 XABYABBBZ 3011 XAYABBBZ 3012 3013/(ab|cd)e/i 3014 ABCDE 3015 3016/[abhgefdc]ij/i 3017 HIJ 3018 3019/^(ab|cd)e/i 3020 ABCDE 3021 3022/(abc|)ef/i 3023 ABCDEF 3024 3025/(a|b)c*d/i 3026 ABCD 3027 3028/(ab|ab*)bc/i 3029 ABC 3030 3031/a([bc]*)c*/i 3032 ABC 3033 3034/a([bc]*)(c*d)/i 3035 ABCD 3036 3037/a([bc]+)(c*d)/i 3038 ABCD 3039 3040/a([bc]*)(c+d)/i 3041 ABCD 3042 3043/a[bcd]*dcdcde/i 3044 ADCDCDE 3045 3046/a[bcd]+dcdcde/i 3047 3048/(ab|a)b*c/i 3049 ABC 3050 3051/((a)(b)c)(d)/i 3052 ABCD 3053 3054/[a-zA-Z_][a-zA-Z0-9_]*/i 3055 ALPHA 3056 3057/^a(bc+|b[eh])g|.h$/i 3058 ABH 3059 3060/(bc+d$|ef*g.|h?i(j|k))/i 3061 EFFGZ 3062 IJ 3063 REFFGZ 3064 *** Failers 3065 ADCDCDE 3066 EFFG 3067 BCDD 3068 3069/((((((((((a))))))))))/i 3070 A 3071 3072/((((((((((a))))))))))\10/i 3073 AA 3074 3075/(((((((((a)))))))))/i 3076 A 3077 3078/(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i 3079 A 3080 3081/(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i 3082 C 3083 3084/multiple words of text/i 3085 *** Failers 3086 AA 3087 UH-UH 3088 3089/multiple words/i 3090 MULTIPLE WORDS, YEAH 3091 3092/(.*)c(.*)/i 3093 ABCDE 3094 3095/\((.*), (.*)\)/i 3096 (A, B) 3097 3098/[k]/i 3099 3100/abcd/i 3101 ABCD 3102 3103/a(bc)d/i 3104 ABCD 3105 3106/a[-]?c/i 3107 AC 3108 3109/(abc)\1/i 3110 ABCABC 3111 3112/([a-c]*)\1/i 3113 ABCABC 3114 3115/a(?!b)./ 3116 abad 3117 3118/a(?=d)./ 3119 abad 3120 3121/a(?=c|d)./ 3122 abad 3123 3124/a(?:b|c|d)(.)/ 3125 ace 3126 3127/a(?:b|c|d)*(.)/ 3128 ace 3129 3130/a(?:b|c|d)+?(.)/ 3131 ace 3132 acdbcdbe 3133 3134/a(?:b|c|d)+(.)/ 3135 acdbcdbe 3136 3137/a(?:b|c|d){2}(.)/ 3138 acdbcdbe 3139 3140/a(?:b|c|d){4,5}(.)/ 3141 acdbcdbe 3142 3143/a(?:b|c|d){4,5}?(.)/ 3144 acdbcdbe 3145 3146/((foo)|(bar))*/ 3147 foobar 3148 3149/a(?:b|c|d){6,7}(.)/ 3150 acdbcdbe 3151 3152/a(?:b|c|d){6,7}?(.)/ 3153 acdbcdbe 3154 3155/a(?:b|c|d){5,6}(.)/ 3156 acdbcdbe 3157 3158/a(?:b|c|d){5,6}?(.)/ 3159 acdbcdbe 3160 3161/a(?:b|c|d){5,7}(.)/ 3162 acdbcdbe 3163 3164/a(?:b|c|d){5,7}?(.)/ 3165 acdbcdbe 3166 3167/a(?:b|(c|e){1,2}?|d)+?(.)/ 3168 ace 3169 3170/^(.+)?B/ 3171 AB 3172 3173/^([^a-z])|(\^)$/ 3174 . 3175 3176/^[<>]&/ 3177 <&OUT 3178 3179/^(a\1?){4}$/ 3180 aaaaaaaaaa 3181 *** Failers 3182 AB 3183 aaaaaaaaa 3184 aaaaaaaaaaa 3185 3186/^(a(?(1)\1)){4}$/ 3187 aaaaaaaaaa 3188 *** Failers 3189 aaaaaaaaa 3190 aaaaaaaaaaa 3191 3192/(?:(f)(o)(o)|(b)(a)(r))*/ 3193 foobar 3194 3195/(?<=a)b/ 3196 ab 3197 *** Failers 3198 cb 3199 b 3200 3201/(?<!c)b/ 3202 ab 3203 b 3204 b 3205 3206/(?:..)*a/ 3207 aba 3208 3209/(?:..)*?a/ 3210 aba 3211 3212/^(?:b|a(?=(.)))*\1/ 3213 abc 3214 3215/^(){3,5}/ 3216 abc 3217 3218/^(a+)*ax/ 3219 aax 3220 3221/^((a|b)+)*ax/ 3222 aax 3223 3224/^((a|bc)+)*ax/ 3225 aax 3226 3227/(a|x)*ab/ 3228 cab 3229 3230/(a)*ab/ 3231 cab 3232 3233/(?:(?i)a)b/ 3234 ab 3235 3236/((?i)a)b/ 3237 ab 3238 3239/(?:(?i)a)b/ 3240 Ab 3241 3242/((?i)a)b/ 3243 Ab 3244 3245/(?:(?i)a)b/ 3246 *** Failers 3247 cb 3248 aB 3249 3250/((?i)a)b/ 3251 3252/(?i:a)b/ 3253 ab 3254 3255/((?i:a))b/ 3256 ab 3257 3258/(?i:a)b/ 3259 Ab 3260 3261/((?i:a))b/ 3262 Ab 3263 3264/(?i:a)b/ 3265 *** Failers 3266 aB 3267 aB 3268 3269/((?i:a))b/ 3270 3271/(?:(?-i)a)b/i 3272 ab 3273 3274/((?-i)a)b/i 3275 ab 3276 3277/(?:(?-i)a)b/i 3278 aB 3279 3280/((?-i)a)b/i 3281 aB 3282 3283/(?:(?-i)a)b/i 3284 *** Failers 3285 aB 3286 Ab 3287 3288/((?-i)a)b/i 3289 3290/(?:(?-i)a)b/i 3291 aB 3292 3293/((?-i)a)b/i 3294 aB 3295 3296/(?:(?-i)a)b/i 3297 *** Failers 3298 Ab 3299 AB 3300 3301/((?-i)a)b/i 3302 3303/(?-i:a)b/i 3304 ab 3305 3306/((?-i:a))b/i 3307 ab 3308 3309/(?-i:a)b/i 3310 aB 3311 3312/((?-i:a))b/i 3313 aB 3314 3315/(?-i:a)b/i 3316 *** Failers 3317 AB 3318 Ab 3319 3320/((?-i:a))b/i 3321 3322/(?-i:a)b/i 3323 aB 3324 3325/((?-i:a))b/i 3326 aB 3327 3328/(?-i:a)b/i 3329 *** Failers 3330 Ab 3331 AB 3332 3333/((?-i:a))b/i 3334 3335/((?-i:a.))b/i 3336 *** Failers 3337 AB 3338 a\nB 3339 3340/((?s-i:a.))b/i 3341 a\nB 3342 3343/(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/ 3344 cabbbb 3345 3346/(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/ 3347 caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 3348 3349/(ab)\d\1/i 3350 Ab4ab 3351 ab4Ab 3352 3353/foo\w*\d{4}baz/ 3354 foobar1234baz 3355 3356/x(~~)*(?:(?:F)?)?/ 3357 x~~ 3358 3359/^a(?#xxx){3}c/ 3360 aaac 3361 3362/^a (?#xxx) (?#yyy) {3}c/x 3363 aaac 3364 3365/(?<![cd])b/ 3366 *** Failers 3367 B\nB 3368 dbcb 3369 3370/(?<![cd])[ab]/ 3371 dbaacb 3372 3373/(?<!(c|d))b/ 3374 3375/(?<!(c|d))[ab]/ 3376 dbaacb 3377 3378/(?<!cd)[ab]/ 3379 cdaccb 3380 3381/^(?:a?b?)*$/ 3382 \ 3383 a 3384 ab 3385 aaa 3386 *** Failers 3387 dbcb 3388 a-- 3389 aa-- 3390 3391/((?s)^a(.))((?m)^b$)/ 3392 a\nb\nc\n 3393 3394/((?m)^b$)/ 3395 a\nb\nc\n 3396 3397/(?m)^b/ 3398 a\nb\n 3399 3400/(?m)^(b)/ 3401 a\nb\n 3402 3403/((?m)^b)/ 3404 a\nb\n 3405 3406/\n((?m)^b)/ 3407 a\nb\n 3408 3409/((?s).)c(?!.)/ 3410 a\nb\nc\n 3411 a\nb\nc\n 3412 3413/((?s)b.)c(?!.)/ 3414 a\nb\nc\n 3415 a\nb\nc\n 3416 3417/^b/ 3418 3419/()^b/ 3420 *** Failers 3421 a\nb\nc\n 3422 a\nb\nc\n 3423 3424/((?m)^b)/ 3425 a\nb\nc\n 3426 3427/(x)?(?(1)a|b)/ 3428 *** Failers 3429 a 3430 a 3431 3432/(x)?(?(1)b|a)/ 3433 a 3434 3435/()?(?(1)b|a)/ 3436 a 3437 3438/()(?(1)b|a)/ 3439 3440/()?(?(1)a|b)/ 3441 a 3442 3443/^(\()?blah(?(1)(\)))$/ 3444 (blah) 3445 blah 3446 *** Failers 3447 a 3448 blah) 3449 (blah 3450 3451/^(\(+)?blah(?(1)(\)))$/ 3452 (blah) 3453 blah 3454 *** Failers 3455 blah) 3456 (blah 3457 3458/(?(?!a)a|b)/ 3459 3460/(?(?!a)b|a)/ 3461 a 3462 3463/(?(?=a)b|a)/ 3464 *** Failers 3465 a 3466 a 3467 3468/(?(?=a)a|b)/ 3469 a 3470 3471/(?=(a+?))(\1ab)/ 3472 aaab 3473 3474/^(?=(a+?))\1ab/ 3475 3476/(\w+:)+/ 3477 one: 3478 3479/$(?<=^(a))/ 3480 a 3481 3482/(?=(a+?))(\1ab)/ 3483 aaab 3484 3485/^(?=(a+?))\1ab/ 3486 *** Failers 3487 aaab 3488 aaab 3489 3490/([\w:]+::)?(\w+)$/ 3491 abcd 3492 xy:z:::abcd 3493 3494/^[^bcd]*(c+)/ 3495 aexycd 3496 3497/(a*)b+/ 3498 caab 3499 3500/([\w:]+::)?(\w+)$/ 3501 abcd 3502 xy:z:::abcd 3503 *** Failers 3504 abcd: 3505 abcd: 3506 3507/^[^bcd]*(c+)/ 3508 aexycd 3509 3510/(>a+)ab/ 3511 3512/(?>a+)b/ 3513 aaab 3514 3515/([[:]+)/ 3516 a:[b]: 3517 3518/([[=]+)/ 3519 a=[b]= 3520 3521/([[.]+)/ 3522 a.[b]. 3523 3524/((?>a+)b)/ 3525 aaab 3526 3527/(?>(a+))b/ 3528 aaab 3529 3530/((?>[^()]+)|\([^()]*\))+/ 3531 ((abc(ade)ufh()()x 3532 3533/a\Z/ 3534 *** Failers 3535 aaab 3536 a\nb\n 3537 3538/b\Z/ 3539 a\nb\n 3540 3541/b\z/ 3542 3543/b\Z/ 3544 a\nb 3545 3546/b\z/ 3547 a\nb 3548 *** Failers 3549 3550/^(?>(?(1)\.|())[^\W_](?>[a-z0-9-]*[^\W_])?)+$/ 3551 a 3552 abc 3553 a-b 3554 0-9 3555 a.b 3556 5.6.7 3557 the.quick.brown.fox 3558 a100.b200.300c 3559 12-ab.1245 3560 *** Failers 3561 \ 3562 .a 3563 -a 3564 a- 3565 a. 3566 a_b 3567 a.- 3568 a.. 3569 ab..bc 3570 the.quick.brown.fox- 3571 the.quick.brown.fox. 3572 the.quick.brown.fox_ 3573 the.quick.brown.fox+ 3574 3575/(?>.*)(?<=(abcd|wxyz))/ 3576 alphabetabcd 3577 endingwxyz 3578 *** Failers 3579 a rather long string that doesn't end with one of them 3580 3581/word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/ 3582 word cat dog elephant mussel cow horse canary baboon snake shark otherword 3583 word cat dog elephant mussel cow horse canary baboon snake shark 3584 3585/word (?>[a-zA-Z0-9]+ ){0,30}otherword/ 3586 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 3587 3588/(?<=\d{3}(?!999))foo/ 3589 999foo 3590 123999foo 3591 *** Failers 3592 123abcfoo 3593 3594/(?<=(?!...999)\d{3})foo/ 3595 999foo 3596 123999foo 3597 *** Failers 3598 123abcfoo 3599 3600/(?<=\d{3}(?!999)...)foo/ 3601 123abcfoo 3602 123456foo 3603 *** Failers 3604 123999foo 3605 3606/(?<=\d{3}...)(?<!999)foo/ 3607 123abcfoo 3608 123456foo 3609 *** Failers 3610 123999foo 3611 3612/<a[\s]+href[\s]*=[\s]* # find <a href= 3613 ([\"\'])? # find single or double quote 3614 (?(1) (.*?)\1 | ([^\s]+)) # if quote found, match up to next matching 3615 # quote, otherwise match up to next space 3616/isx 3617 <a href=abcd xyz 3618 <a href=\"abcd xyz pqr\" cats 3619 <a href=\'abcd xyz pqr\' cats 3620 3621/<a\s+href\s*=\s* # find <a href= 3622 (["'])? # find single or double quote 3623 (?(1) (.*?)\1 | (\S+)) # if quote found, match up to next matching 3624 # quote, otherwise match up to next space 3625/isx 3626 <a href=abcd xyz 3627 <a href=\"abcd xyz pqr\" cats 3628 <a href = \'abcd xyz pqr\' cats 3629 3630/<a\s+href(?>\s*)=(?>\s*) # find <a href= 3631 (["'])? # find single or double quote 3632 (?(1) (.*?)\1 | (\S+)) # if quote found, match up to next matching 3633 # quote, otherwise match up to next space 3634/isx 3635 <a href=abcd xyz 3636 <a href=\"abcd xyz pqr\" cats 3637 <a href = \'abcd xyz pqr\' cats 3638 3639/((Z)+|A)*/ 3640 ZABCDEFG 3641 3642/(Z()|A)*/ 3643 ZABCDEFG 3644 3645/(Z(())|A)*/ 3646 ZABCDEFG 3647 3648/((?>Z)+|A)*/ 3649 ZABCDEFG 3650 3651/((?>)+|A)*/ 3652 ZABCDEFG 3653 3654/a*/g 3655 abbab 3656 3657/^[a-\d]/ 3658 abcde 3659 -things 3660 0digit 3661 *** Failers 3662 bcdef 3663 3664/^[\d-a]/ 3665 abcde 3666 -things 3667 0digit 3668 *** Failers 3669 bcdef 3670 3671/[[:space:]]+/ 3672 > \x09\x0a\x0c\x0d\x0b< 3673 3674/[[:blank:]]+/ 3675 > \x09\x0a\x0c\x0d\x0b< 3676 3677/[\s]+/ 3678 > \x09\x0a\x0c\x0d\x0b< 3679 3680/\s+/ 3681 > \x09\x0a\x0c\x0d\x0b< 3682 3683/ab/x 3684 ab 3685 3686/(?!\A)x/m 3687 a\nxb\n 3688 3689/(?!^)x/m 3690 a\nxb\n 3691 3692/abc\Qabc\Eabc/ 3693 abcabcabc 3694 3695/abc\Q(*+|\Eabc/ 3696 abc(*+|abc 3697 3698/ abc\Q abc\Eabc/x 3699 abc abcabc 3700 *** Failers 3701 abcabcabc 3702 3703/abc#comment 3704 \Q#not comment 3705 literal\E/x 3706 abc#not comment\n literal 3707 3708/abc#comment 3709 \Q#not comment 3710 literal/x 3711 abc#not comment\n literal 3712 3713/abc#comment 3714 \Q#not comment 3715 literal\E #more comment 3716 /x 3717 abc#not comment\n literal 3718 3719/abc#comment 3720 \Q#not comment 3721 literal\E #more comment/x 3722 abc#not comment\n literal 3723 3724/\Qabc\$xyz\E/ 3725 abc\\\$xyz 3726 3727/\Qabc\E\$\Qxyz\E/ 3728 abc\$xyz 3729 3730/\Gabc/ 3731 abc 3732 *** Failers 3733 xyzabc 3734 3735/\Gabc./g 3736 abc1abc2xyzabc3 3737 3738/abc./g 3739 abc1abc2xyzabc3 3740 3741/a(?x: b c )d/ 3742 XabcdY 3743 *** Failers 3744 Xa b c d Y 3745 3746/((?x)x y z | a b c)/ 3747 XabcY 3748 AxyzB 3749 3750/(?i)AB(?-i)C/ 3751 XabCY 3752 *** Failers 3753 XabcY 3754 3755/((?i)AB(?-i)C|D)E/ 3756 abCE 3757 DE 3758 *** Failers 3759 abcE 3760 abCe 3761 dE 3762 De 3763 3764/(.*)\d+\1/ 3765 abc123abc 3766 abc123bc 3767 3768/(.*)\d+\1/s 3769 abc123abc 3770 abc123bc 3771 3772/((.*))\d+\1/ 3773 abc123abc 3774 abc123bc 3775 3776/-- This tests for an IPv6 address in the form where it can have up to --/ 3777/-- eight components, one and only one of which is empty. This must be --/ 3778/-- an internal component. --/ 3779 3780/^(?!:) # colon disallowed at start 3781 (?: # start of item 3782 (?: [0-9a-f]{1,4} | # 1-4 hex digits or 3783 (?(1)0 | () ) ) # if null previously matched, fail; else null 3784 : # followed by colon 3785 ){1,7} # end item; 1-7 of them required 3786 [0-9a-f]{1,4} $ # final hex number at end of string 3787 (?(1)|.) # check that there was an empty component 3788 /xi 3789 a123::a123 3790 a123:b342::abcd 3791 a123:b342::324e:abcd 3792 a123:ddde:b342::324e:abcd 3793 a123:ddde:b342::324e:dcba:abcd 3794 a123:ddde:9999:b342::324e:dcba:abcd 3795 *** Failers 3796 1:2:3:4:5:6:7:8 3797 a123:bce:ddde:9999:b342::324e:dcba:abcd 3798 a123::9999:b342::324e:dcba:abcd 3799 abcde:2:3:4:5:6:7:8 3800 ::1 3801 abcd:fee0:123:: 3802 :1 3803 1: 3804 3805/[z\Qa-d]\E]/ 3806 z 3807 a 3808 - 3809 d 3810 ] 3811 *** Failers 3812 b 3813 3814/[\z\C]/ 3815 z 3816 C 3817 3818/\M/ 3819 M 3820 3821/(a+)*b/ 3822 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3823 3824/(?i)reg(?:ul(?:[a�]|ae)r|ex)/ 3825 REGular 3826 regulaer 3827 Regex 3828 regul�r 3829 3830/����[�-��-�]+/ 3831 ����� 3832 ����� 3833 ����� 3834 ����� 3835 3836/(?<=Z)X./ 3837 \x84XAZXB 3838 3839/ab cd (?x) de fg/ 3840 ab cd defg 3841 3842/ab cd(?x) de fg/ 3843 ab cddefg 3844 ** Failers 3845 abcddefg 3846 3847/(?<![^f]oo)(bar)/ 3848 foobarX 3849 ** Failers 3850 boobarX 3851 3852/(?<![^f])X/ 3853 offX 3854 ** Failers 3855 onyX 3856 3857/(?<=[^f])X/ 3858 onyX 3859 ** Failers 3860 offX 3861 3862/^/mg 3863 a\nb\nc\n 3864 \ 3865 3866/(?<=C\n)^/mg 3867 A\nC\nC\n 3868 3869/(?:(?(1)a|b)(X))+/ 3870 bXaX 3871 3872/(?:(?(1)\1a|b)(X|Y))+/ 3873 bXXaYYaY 3874 bXYaXXaX 3875 3876/()()()()()()()()()(?:(?(10)\10a|b)(X|Y))+/ 3877 bXXaYYaY 3878 3879/[[,abc,]+]/ 3880 abc] 3881 a,b] 3882 [a,b,c] 3883 3884/(?-x: )/x 3885 A\x20B 3886 3887"(?x)(?-x: \s*#\s*)" 3888 A # B 3889 ** Failers 3890 # 3891 3892"(?x-is)(?:(?-ixs) \s*#\s*) include" 3893 A #include 3894 ** Failers 3895 A#include 3896 A #Include 3897 3898/a*b*\w/ 3899 aaabbbb 3900 aaaa 3901 a 3902 3903/a*b?\w/ 3904 aaabbbb 3905 aaaa 3906 a 3907 3908/a*b{0,4}\w/ 3909 aaabbbb 3910 aaaa 3911 a 3912 3913/a*b{0,}\w/ 3914 aaabbbb 3915 aaaa 3916 a 3917 3918/a*\d*\w/ 3919 0a 3920 a 3921 3922/a*b *\w/x 3923 a 3924 3925/a*b#comment 3926 *\w/x 3927 a 3928 3929/a* b *\w/x 3930 a 3931 3932/^\w+=.*(\\\n.*)*/ 3933 abc=xyz\\\npqr 3934 3935/(?=(\w+))\1:/ 3936 abcd: 3937 3938/^(?=(\w+))\1:/ 3939 abcd: 3940 3941/^\Eabc/ 3942 abc 3943 3944/^[\Eabc]/ 3945 a 3946 ** Failers 3947 E 3948 3949/^[a-\Ec]/ 3950 b 3951 ** Failers 3952 - 3953 E 3954 3955/^[a\E\E-\Ec]/ 3956 b 3957 ** Failers 3958 - 3959 E 3960 3961/^[\E\Qa\E-\Qz\E]+/ 3962 b 3963 ** Failers 3964 - 3965 3966/^[a\Q]bc\E]/ 3967 a 3968 ] 3969 c 3970 3971/^[a-\Q\E]/ 3972 a 3973 - 3974 3975/^(a()*)*/ 3976 aaaa 3977 3978/^(?:a(?:(?:))*)*/ 3979 aaaa 3980 3981/^(a()+)+/ 3982 aaaa 3983 3984/^(?:a(?:(?:))+)+/ 3985 aaaa 3986 3987/(a){0,3}(?(1)b|(c|))*D/ 3988 abbD 3989 ccccD 3990 D 3991 3992/(a|)*\d/ 3993 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3994 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 3995 3996/(?>a|)*\d/ 3997 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3998 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 3999 4000/(?:a|)*\d/ 4001 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4002 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 4003 4004/\Z/g 4005 abc\n 4006 4007/^(?s)(?>.*)(?<!\n)/ 4008 abc 4009 abc\n 4010 4011/^(?![^\n]*\n\z)/ 4012 abc 4013 abc\n 4014 4015/\z(?<!\n)/ 4016 abc 4017 abc\n 4018 4019/(.*(.)?)*/ 4020 abcd 4021 4022/( (A | (?(1)0|) )* )/x 4023 abcd 4024 4025/( ( (?(1)0|) )* )/x 4026 abcd 4027 4028/( (?(1)0|)* )/x 4029 abcd 4030 4031/[[:abcd:xyz]]/ 4032 a] 4033 :] 4034 4035/[abc[:x\]pqr]/ 4036 a 4037 [ 4038 : 4039 ] 4040 p 4041 4042/.*[op][xyz]/ 4043 fooabcfoo 4044 4045/(?(?=.*b)b|^)/ 4046 adc 4047 abc 4048 4049/(?(?=^.*b)b|^)/ 4050 adc 4051 abc 4052 4053/(?(?=.*b)b|^)*/ 4054 adc 4055 abc 4056 4057/(?(?=.*b)b|^)+/ 4058 adc 4059 abc 4060 4061/(?(?=b).*b|^d)/ 4062 abc 4063 4064/(?(?=.*b).*b|^d)/ 4065 abc 4066 4067/^%((?(?=[a])[^%])|b)*%$/ 4068 %ab% 4069 4070/(?i)a(?-i)b|c/ 4071 XabX 4072 XAbX 4073 CcC 4074 ** Failers 4075 XABX 4076 4077/[\x00-\xff\s]+/ 4078 \x0a\x0b\x0c\x0d 4079 4080/^\c/ 4081 ? 4082 4083/(abc)\1/i 4084 abc 4085 4086/(abc)\1/ 4087 abc 4088 4089/[^a]*/i 4090 12abc 4091 12ABC 4092 4093/[^a]*+/i 4094 12abc 4095 12ABC 4096 4097/[^a]*?X/i 4098 ** Failers 4099 12abc 4100 12ABC 4101 4102/[^a]+?X/i 4103 ** Failers 4104 12abc 4105 12ABC 4106 4107/[^a]?X/i 4108 12aXbcX 4109 12AXBCX 4110 BCX 4111 4112/[^a]??X/i 4113 12aXbcX 4114 12AXBCX 4115 BCX 4116 4117/[^a]?+X/i 4118 12aXbcX 4119 12AXBCX 4120 BCX 4121 4122/[^a]{2,3}/i 4123 abcdef 4124 ABCDEF 4125 4126/[^a]{2,3}?/i 4127 abcdef 4128 ABCDEF 4129 4130/[^a]{2,3}+/i 4131 abcdef 4132 ABCDEF 4133 4134/((a|)+)+Z/ 4135 Z 4136 4137/(a)b|(a)c/ 4138 ac 4139 4140/(?>(a))b|(a)c/ 4141 ac 4142 4143/(?=(a))ab|(a)c/ 4144 ac 4145 4146/((?>(a))b|(a)c)/ 4147 ac 4148 4149/((?>(a))b|(a)c)++/ 4150 ac 4151 4152/(?:(?>(a))b|(a)c)++/ 4153 ac 4154 4155/(?=(?>(a))b|(a)c)(..)/ 4156 ac 4157 4158/(?>(?>(a))b|(a)c)/ 4159 ac 4160 4161/(?:(?>([ab])))+a=/+ 4162 =ba= 4163 4164/(?>([ab]))+a=/+ 4165 =ba= 4166 4167/((?>(a+)b)+(aabab))/ 4168 aaaabaaabaabab 4169 4170/(?>a+|ab)+?c/ 4171 aabc 4172 4173/(?>a+|ab)+c/ 4174 aabc 4175 4176/(?:a+|ab)+c/ 4177 aabc 4178 4179/(?(?=(a))a)/ 4180 a 4181 4182/(?(?=(a))a)(b)/ 4183 ab 4184 4185/^(?:a|ab)++c/ 4186 aaaabc 4187 4188/^(?>a|ab)++c/ 4189 aaaabc 4190 4191/^(?:a|ab)+c/ 4192 aaaabc 4193 4194/(?=abc){3}abc/+ 4195 abcabcabc 4196 ** Failers 4197 xyz 4198 4199/(?=abc)+abc/+ 4200 abcabcabc 4201 ** Failers 4202 xyz 4203 4204/(?=abc)++abc/+ 4205 abcabcabc 4206 ** Failers 4207 xyz 4208 4209/(?=abc){0}xyz/ 4210 xyz 4211 4212/(?=abc){1}xyz/ 4213 ** Failers 4214 xyz 4215 4216/(?=(a))?./ 4217 ab 4218 bc 4219 4220/(?=(a))??./ 4221 ab 4222 bc 4223 4224/^(?=(a)){0}b(?1)/ 4225 backgammon 4226 4227/^(?=(?1))?[az]([abc])d/ 4228 abd 4229 zcdxx 4230 4231/^(?!a){0}\w+/ 4232 aaaaa 4233 4234/(?<=(abc))?xyz/ 4235 abcxyz 4236 pqrxyz 4237 4238/^[\g<a>]+/ 4239 ggg<<<aaa>>> 4240 ** Failers 4241 \\ga 4242 4243/^[\ga]+/ 4244 gggagagaxyz 4245 4246/^[:a[:digit:]]+/ 4247 aaaa444:::Z 4248 4249/^[:a[:digit:]:b]+/ 4250 aaaa444:::bbbZ 4251 4252/[:a]xxx[b:]/ 4253 :xxx: 4254 4255/(?<=a{2})b/i 4256 xaabc 4257 ** Failers 4258 xabc 4259 4260/(?<!a{2})b/i 4261 xabc 4262 ** Failers 4263 xaabc 4264 4265/(?<=a\h)c/ 4266 xa c 4267 4268/(?<=[^a]{2})b/ 4269 axxbc 4270 aAAbc 4271 ** Failers 4272 xaabc 4273 4274/(?<=[^a]{2})b/i 4275 axxbc 4276 ** Failers 4277 aAAbc 4278 xaabc 4279 4280/(?<=a\H)c/ 4281 abc 4282 4283/(?<=a\V)c/ 4284 abc 4285 4286/(?<=a\v)c/ 4287 a\nc 4288 4289/(?(?=c)c|d)++Y/ 4290 XcccddYX 4291 4292/(?(?=c)c|d)*+Y/ 4293 XcccddYX 4294 4295/^(a{2,3}){2,}+a/ 4296 aaaaaaa 4297 ** Failers 4298 aaaaaa 4299 aaaaaaaaa 4300 4301/^(a{2,3})++a/ 4302 ** Failers 4303 aaaaaa 4304 4305/^(a{2,3})*+a/ 4306 ** Failers 4307 aaaaaa 4308 4309/ab\Cde/ 4310 abXde 4311 4312/(?<=ab\Cde)X/ 4313 abZdeX 4314 4315/a[\CD]b/ 4316 aCb 4317 aDb 4318 4319/a[\C-X]b/ 4320 aJb 4321 4322/\H\h\V\v/ 4323 X X\x0a 4324 X\x09X\x0b 4325 ** Failers 4326 \xa0 X\x0a 4327 4328/\H*\h+\V?\v{3,4}/ 4329 \x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a 4330 \x09\x20\xa0\x0a\x0b\x0c\x0d\x0a 4331 \x09\x20\xa0\x0a\x0b\x0c 4332 ** Failers 4333 \x09\x20\xa0\x0a\x0b 4334 4335/\H{3,4}/ 4336 XY ABCDE 4337 XY PQR ST 4338 4339/.\h{3,4}./ 4340 XY AB PQRS 4341 4342/\h*X\h?\H+Y\H?Z/ 4343 >XNNNYZ 4344 > X NYQZ 4345 ** Failers 4346 >XYZ 4347 > X NY Z 4348 4349/\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/ 4350 >XY\x0aZ\x0aA\x0bNN\x0c 4351 >\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c 4352 4353/(foo)\Kbar/ 4354 foobar 4355 4356/(foo)(\Kbar|baz)/ 4357 foobar 4358 foobaz 4359 4360/(foo\Kbar)baz/ 4361 foobarbaz 4362 4363/abc\K|def\K/g+ 4364 Xabcdefghi 4365 4366/ab\Kc|de\Kf/g+ 4367 Xabcdefghi 4368 4369/(?=C)/g+ 4370 ABCDECBA 4371 4372/^abc\K/+ 4373 abcdef 4374 ** Failers 4375 defabcxyz 4376 4377/^(a(b))\1\g1\g{1}\g-1\g{-1}\g{-02}Z/ 4378 ababababbbabZXXXX 4379 4380/(?<A>tom|bon)-\g{A}/ 4381 tom-tom 4382 bon-bon 4383 4384/(^(a|b\g{-1}))/ 4385 bacxxx 4386 4387/(?|(abc)|(xyz))\1/ 4388 abcabc 4389 xyzxyz 4390 ** Failers 4391 abcxyz 4392 xyzabc 4393 4394/(?|(abc)|(xyz))(?1)/ 4395 abcabc 4396 xyzabc 4397 ** Failers 4398 xyzxyz 4399 4400/^X(?5)(a)(?|(b)|(q))(c)(d)(Y)/ 4401 XYabcdY 4402 4403/^X(?7)(a)(?|(b|(r)(s))|(q))(c)(d)(Y)/ 4404 XYabcdY 4405 4406/^X(?7)(a)(?|(b|(?|(r)|(t))(s))|(q))(c)(d)(Y)/ 4407 XYabcdY 4408 4409/(?'abc'\w+):\k<abc>{2}/ 4410 a:aaxyz 4411 ab:ababxyz 4412 ** Failers 4413 a:axyz 4414 ab:abxyz 4415 4416/(?'abc'\w+):\g{abc}{2}/ 4417 a:aaxyz 4418 ab:ababxyz 4419 ** Failers 4420 a:axyz 4421 ab:abxyz 4422 4423/^(?<ab>a)? (?(<ab>)b|c) (?('ab')d|e)/x 4424 abd 4425 ce 4426 4427/^(a.)\g-1Z/ 4428 aXaXZ 4429 4430/^(a.)\g{-1}Z/ 4431 aXaXZ 4432 4433/^(?(DEFINE) (?<A> a) (?<B> b) ) (?&A) (?&B) /x 4434 abcd 4435 4436/(?<NAME>(?&NAME_PAT))\s+(?<ADDR>(?&ADDRESS_PAT)) 4437 (?(DEFINE) 4438 (?<NAME_PAT>[a-z]+) 4439 (?<ADDRESS_PAT>\d+) 4440 )/x 4441 metcalfe 33 4442 4443/(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))\b(?&byte)(\.(?&byte)){3}/ 4444 1.2.3.4 4445 131.111.10.206 4446 10.0.0.0 4447 ** Failers 4448 10.6 4449 455.3.4.5 4450 4451/\b(?&byte)(\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))/ 4452 1.2.3.4 4453 131.111.10.206 4454 10.0.0.0 4455 ** Failers 4456 10.6 4457 455.3.4.5 4458 4459/^(\w++|\s++)*$/ 4460 now is the time for all good men to come to the aid of the party 4461 *** Failers 4462 this is not a line with only words and spaces! 4463 4464/(\d++)(\w)/ 4465 12345a 4466 *** Failers 4467 12345+ 4468 4469/a++b/ 4470 aaab 4471 4472/(a++b)/ 4473 aaab 4474 4475/(a++)b/ 4476 aaab 4477 4478/([^()]++|\([^()]*\))+/ 4479 ((abc(ade)ufh()()x 4480 4481/\(([^()]++|\([^()]+\))+\)/ 4482 (abc) 4483 (abc(def)xyz) 4484 *** Failers 4485 ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4486 4487/^([^()]|\((?1)*\))*$/ 4488 abc 4489 a(b)c 4490 a(b(c))d 4491 *** Failers) 4492 a(b(c)d 4493 4494/^>abc>([^()]|\((?1)*\))*<xyz<$/ 4495 >abc>123<xyz< 4496 >abc>1(2)3<xyz< 4497 >abc>(1(2)3)<xyz< 4498 4499/^(?:((.)(?1)\2|)|((.)(?3)\4|.))$/i 4500 1221 4501 Satanoscillatemymetallicsonatas 4502 AmanaplanacanalPanama 4503 AblewasIereIsawElba 4504 *** Failers 4505 Thequickbrownfox 4506 4507/^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/ 4508 12 4509 (((2+2)*-3)-7) 4510 -12 4511 *** Failers 4512 ((2+2)*-3)-7) 4513 4514/^(x(y|(?1){2})z)/ 4515 xyz 4516 xxyzxyzz 4517 *** Failers 4518 xxyzz 4519 xxyzxyzxyzz 4520 4521/((< (?: (?(R) \d++ | [^<>]*+) | (?2)) * >))/x 4522 <> 4523 <abcd> 4524 <abc <123> hij> 4525 <abc <def> hij> 4526 <abc<>def> 4527 <abc<> 4528 *** Failers 4529 <abc 4530 4531/^a+(*FAIL)/ 4532 aaaaaa 4533 4534/a+b?c+(*FAIL)/ 4535 aaabccc 4536 4537/a+b?(*PRUNE)c+(*FAIL)/ 4538 aaabccc 4539 4540/a+b?(*COMMIT)c+(*FAIL)/ 4541 aaabccc 4542 4543/a+b?(*SKIP)c+(*FAIL)/ 4544 aaabcccaaabccc 4545 4546/^(?:aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/ 4547 aaaxxxxxx 4548 aaa++++++ 4549 bbbxxxxx 4550 bbb+++++ 4551 cccxxxx 4552 ccc++++ 4553 dddddddd 4554 4555/^(aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/ 4556 aaaxxxxxx 4557 aaa++++++ 4558 bbbxxxxx 4559 bbb+++++ 4560 cccxxxx 4561 ccc++++ 4562 dddddddd 4563 4564/a+b?(*THEN)c+(*FAIL)/ 4565 aaabccc 4566 4567/(A (A|B(*ACCEPT)|C) D)(E)/x 4568 AB 4569 ABX 4570 AADE 4571 ACDE 4572 ** Failers 4573 AD 4574 4575/^\W*+(?:((.)\W*+(?1)\W*+\2|)|((.)\W*+(?3)\W*+\4|\W*+.\W*+))\W*+$/i 4576 1221 4577 Satan, oscillate my metallic sonatas! 4578 A man, a plan, a canal: Panama! 4579 Able was I ere I saw Elba. 4580 *** Failers 4581 The quick brown fox 4582 4583/^((.)(?1)\2|.)$/ 4584 a 4585 aba 4586 aabaa 4587 abcdcba 4588 pqaabaaqp 4589 ablewasiereisawelba 4590 rhubarb 4591 the quick brown fox 4592 4593/(a)(?<=b(?1))/ 4594 baz 4595 ** Failers 4596 caz 4597 4598/(?<=b(?1))(a)/ 4599 zbaaz 4600 ** Failers 4601 aaa 4602 4603/(?<X>a)(?<=b(?&X))/ 4604 baz 4605 4606/^(?|(abc)|(def))\1/ 4607 abcabc 4608 defdef 4609 ** Failers 4610 abcdef 4611 defabc 4612 4613/^(?|(abc)|(def))(?1)/ 4614 abcabc 4615 defabc 4616 ** Failers 4617 defdef 4618 abcdef 4619 4620/(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) |b(?<quote> (?<apostrophe>')|(?<realquote>")) ) (?('quote')[a-z]+|[0-9]+)/xJ 4621 a\"aaaaa 4622 b\"aaaaa 4623 ** Failers 4624 b\"11111 4625 4626/(?:(?1)|B)(A(*F)|C)/ 4627 ABCD 4628 CCD 4629 ** Failers 4630 CAD 4631 4632/^(?:(?1)|B)(A(*F)|C)/ 4633 CCD 4634 BCD 4635 ** Failers 4636 ABCD 4637 CAD 4638 BAD 4639 4640/(?:(?1)|B)(A(*ACCEPT)XX|C)D/ 4641 AAD 4642 ACD 4643 BAD 4644 BCD 4645 BAX 4646 ** Failers 4647 ACX 4648 ABC 4649 4650/(?(DEFINE)(A))B(?1)C/ 4651 BAC 4652 4653/(?(DEFINE)((A)\2))B(?1)C/ 4654 BAAC 4655 4656/(?<pn> \( ( [^()]++ | (?&pn) )* \) )/x 4657 (ab(cd)ef) 4658 4659/^(?!a(*SKIP)b)/ 4660 ac 4661 4662/^(?=a(*SKIP)b|ac)/ 4663 ** Failers 4664 ac 4665 4666/^(?=a(*THEN)b|ac)/ 4667 ac 4668 4669/^(?=a(*PRUNE)b)/ 4670 ab 4671 ** Failers 4672 ac 4673 4674/^(?=a(*ACCEPT)b)/ 4675 ac 4676 4677/^(?(?!a(*SKIP)b))/ 4678 ac 4679 4680/(?>a\Kb)/ 4681 ab 4682 4683/((?>a\Kb))/ 4684 ab 4685 4686/(a\Kb)/ 4687 ab 4688 4689/^a\Kcz|ac/ 4690 ac 4691 4692/(?>a\Kbz|ab)/ 4693 ab 4694 4695/^(?&t)(?(DEFINE)(?<t>a\Kb))$/ 4696 ab 4697 4698/^([^()]|\((?1)*\))*$/ 4699 a(b)c 4700 a(b(c)d)e 4701 4702/(?P<L1>(?P<L2>0)(?P>L1)|(?P>L2))/ 4703 0 4704 00 4705 0000 4706 4707/(?P<L1>(?P<L2>0)|(?P>L2)(?P>L1))/ 4708 0 4709 00 4710 0000 4711 4712/--- This one does fail, as expected, in Perl. It needs the complex item at the 4713 end of the pattern. A single letter instead of (B|D) makes it not fail, 4714 which I think is a Perl bug. --- / 4715 4716/A(*COMMIT)(B|D)/ 4717 ACABX 4718 4719/--- Check the use of names for failure ---/ 4720 4721/^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K 4722 ** Failers 4723 AC 4724 CB 4725 4726/--- Force no study, otherwise mark is not seen. The studied version is in 4727 test 2 because it isn't Perl-compatible. ---/ 4728 4729/(*MARK:A)(*SKIP:B)(C|X)/KSS 4730 C 4731 D 4732 4733/^(A(*THEN:A)B|C(*THEN:B)D)/K 4734 ** Failers 4735 CB 4736 4737/^(?:A(*THEN:A)B|C(*THEN:B)D)/K 4738 CB 4739 4740/^(?>A(*THEN:A)B|C(*THEN:B)D)/K 4741 CB 4742 4743/--- This should succeed, as the skip causes bump to offset 1 (the mark). Note 4744that we have to have something complicated such as (B|Z) at the end because, 4745for Perl, a simple character somehow causes an unwanted optimization to mess 4746with the handling of backtracking verbs. ---/ 4747 4748/A(*MARK:A)A+(*SKIP:A)(B|Z) | AC/xK 4749 AAAC 4750 4751/--- Test skipping over a non-matching mark. ---/ 4752 4753/A(*MARK:A)A+(*MARK:B)(*SKIP:A)(B|Z) | AC/xK 4754 AAAC 4755 4756/--- Check shorthand for MARK ---/ 4757 4758/A(*:A)A+(*SKIP:A)(B|Z) | AC/xK 4759 AAAC 4760 4761/--- Don't loop! Force no study, otherwise mark is not seen. ---/ 4762 4763/(*:A)A+(*SKIP:A)(B|Z)/KSS 4764 AAAC 4765 4766/--- This should succeed, as a non-existent skip name disables the skip ---/ 4767 4768/A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/xK 4769 AAAC 4770 4771/A(*MARK:A)A+(*SKIP:B)(B|Z) | AC(*:B)/xK 4772 AAAC 4773 4774/--- COMMIT at the start of a pattern should act like an anchor. Again, 4775however, we need the complication for Perl. ---/ 4776 4777/(*COMMIT)(A|P)(B|P)(C|P)/ 4778 ABCDEFG 4779 ** Failers 4780 DEFGABC 4781 4782/--- COMMIT inside an atomic group can't stop backtracking over the group. ---/ 4783 4784/(\w+)(?>b(*COMMIT))\w{2}/ 4785 abbb 4786 4787/(\w+)b(*COMMIT)\w{2}/ 4788 abbb 4789 4790/--- Check opening parens in comment when seeking forward reference. ---/ 4791 4792/(?&t)(?#()(?(DEFINE)(?<t>a))/ 4793 bac 4794 4795/--- COMMIT should override THEN ---/ 4796 4797/(?>(*COMMIT)(?>yes|no)(*THEN)(*F))?/ 4798 yes 4799 4800/(?>(*COMMIT)(yes|no)(*THEN)(*F))?/ 4801 yes 4802 4803/b?(*SKIP)c/ 4804 bc 4805 abc 4806 4807/(*SKIP)bc/ 4808 a 4809 4810/(*SKIP)b/ 4811 a 4812 4813/(?P<abn>(?P=abn)xxx|)+/ 4814 xxx 4815 4816/(?i:([^b]))(?1)/ 4817 aa 4818 aA 4819 ** Failers 4820 ab 4821 aB 4822 Ba 4823 ba 4824 4825/^(?&t)*+(?(DEFINE)(?<t>a))\w$/ 4826 aaaaaaX 4827 ** Failers 4828 aaaaaa 4829 4830/^(?&t)*(?(DEFINE)(?<t>a))\w$/ 4831 aaaaaaX 4832 aaaaaa 4833 4834/^(a)*+(\w)/ 4835 aaaaX 4836 YZ 4837 ** Failers 4838 aaaa 4839 4840/^(?:a)*+(\w)/ 4841 aaaaX 4842 YZ 4843 ** Failers 4844 aaaa 4845 4846/^(a)++(\w)/ 4847 aaaaX 4848 ** Failers 4849 aaaa 4850 YZ 4851 4852/^(?:a)++(\w)/ 4853 aaaaX 4854 ** Failers 4855 aaaa 4856 YZ 4857 4858/^(a)?+(\w)/ 4859 aaaaX 4860 YZ 4861 4862/^(?:a)?+(\w)/ 4863 aaaaX 4864 YZ 4865 4866/^(a){2,}+(\w)/ 4867 aaaaX 4868 ** Failers 4869 aaa 4870 YZ 4871 4872/^(?:a){2,}+(\w)/ 4873 aaaaX 4874 ** Failers 4875 aaa 4876 YZ 4877 4878/(a|)*(?1)b/ 4879 b 4880 ab 4881 aab 4882 4883/(a)++(?1)b/ 4884 ** Failers 4885 ab 4886 aab 4887 4888/(a)*+(?1)b/ 4889 ** Failers 4890 ab 4891 aab 4892 4893/(?1)(?:(b)){0}/ 4894 b 4895 4896/(foo ( \( ((?:(?> [^()]+ )|(?2))*) \) ) )/x 4897 foo(bar(baz)+baz(bop)) 4898 4899/(A (A|B(*ACCEPT)|C) D)(E)/x 4900 AB 4901 4902/\A.*?(?:a|b(*THEN)c)/ 4903 ba 4904 4905/\A.*?(?:a|bc)/ 4906 ba 4907 4908/\A.*?(a|b(*THEN)c)/ 4909 ba 4910 4911/\A.*?(a|bc)/ 4912 ba 4913 4914/\A.*?(?:a|b(*THEN)c)++/ 4915 ba 4916 4917/\A.*?(?:a|bc)++/ 4918 ba 4919 4920/\A.*?(a|b(*THEN)c)++/ 4921 ba 4922 4923/\A.*?(a|bc)++/ 4924 ba 4925 4926/\A.*?(?:a|b(*THEN)c|d)/ 4927 ba 4928 4929/\A.*?(?:a|bc|d)/ 4930 ba 4931 4932/(?:(b))++/ 4933 beetle 4934 4935/(?(?=(a(*ACCEPT)z))a)/ 4936 a 4937 4938/^(a)(?1)+ab/ 4939 aaaab 4940 4941/^(a)(?1)++ab/ 4942 aaaab 4943 4944/^(?=a(*:M))aZ/K 4945 aZbc 4946 4947/^(?!(*:M)b)aZ/K 4948 aZbc 4949 4950/(?(DEFINE)(a))?b(?1)/ 4951 backgammon 4952 4953/^\N+/ 4954 abc\ndef 4955 4956/^\N{1,}/ 4957 abc\ndef 4958 4959/(?(R)a+|(?R)b)/ 4960 aaaabcde 4961 4962/(?(R)a+|((?R))b)/ 4963 aaaabcde 4964 4965/((?(R)a+|(?1)b))/ 4966 aaaabcde 4967 4968/((?(R1)a+|(?1)b))/ 4969 aaaabcde 4970 4971/a(*:any 4972name)/K 4973 abc 4974 4975/(?>(?&t)c|(?&t))(?(DEFINE)(?<t>a|b(*PRUNE)c))/ 4976 a 4977 ba 4978 bba 4979 4980/--- Checking revised (*THEN) handling ---/ 4981 4982/--- Capture ---/ 4983 4984/^.*? (a(*THEN)b) c/x 4985 aabc 4986 4987/^.*? (a(*THEN)b|(*F)) c/x 4988 aabc 4989 4990/^.*? ( (a(*THEN)b) | (*F) ) c/x 4991 aabc 4992 4993/^.*? ( (a(*THEN)b) ) c/x 4994 aabc 4995 4996/--- Non-capture ---/ 4997 4998/^.*? (?:a(*THEN)b) c/x 4999 aabc 5000 5001/^.*? (?:a(*THEN)b|(*F)) c/x 5002 aabc 5003 5004/^.*? (?: (?:a(*THEN)b) | (*F) ) c/x 5005 aabc 5006 5007/^.*? (?: (?:a(*THEN)b) ) c/x 5008 aabc 5009 5010/--- Atomic ---/ 5011 5012/^.*? (?>a(*THEN)b) c/x 5013 aabc 5014 5015/^.*? (?>a(*THEN)b|(*F)) c/x 5016 aabc 5017 5018/^.*? (?> (?>a(*THEN)b) | (*F) ) c/x 5019 aabc 5020 5021/^.*? (?> (?>a(*THEN)b) ) c/x 5022 aabc 5023 5024/--- Possessive capture ---/ 5025 5026/^.*? (a(*THEN)b)++ c/x 5027 aabc 5028 5029/^.*? (a(*THEN)b|(*F))++ c/x 5030 aabc 5031 5032/^.*? ( (a(*THEN)b)++ | (*F) )++ c/x 5033 aabc 5034 5035/^.*? ( (a(*THEN)b)++ )++ c/x 5036 aabc 5037 5038/--- Possessive non-capture ---/ 5039 5040/^.*? (?:a(*THEN)b)++ c/x 5041 aabc 5042 5043/^.*? (?:a(*THEN)b|(*F))++ c/x 5044 aabc 5045 5046/^.*? (?: (?:a(*THEN)b)++ | (*F) )++ c/x 5047 aabc 5048 5049/^.*? (?: (?:a(*THEN)b)++ )++ c/x 5050 aabc 5051 5052/--- Condition assertion ---/ 5053 5054/^(?(?=a(*THEN)b)ab|ac)/ 5055 ac 5056 5057/--- Condition ---/ 5058 5059/^.*?(?(?=a)a|b(*THEN)c)/ 5060 ba 5061 5062/^.*?(?:(?(?=a)a|b(*THEN)c)|d)/ 5063 ba 5064 5065/^.*?(?(?=a)a(*THEN)b|c)/ 5066 ac 5067 5068/--- Assertion ---/ 5069 5070/^.*(?=a(*THEN)b)/ 5071 aabc 5072 5073/------------------------------/ 5074 5075/(?>a(*:m))/imsxSK 5076 a 5077 5078/(?>(a)(*:m))/imsxSK 5079 a 5080 5081/(?<=a(*ACCEPT)b)c/ 5082 xacd 5083 5084/(?<=(a(*ACCEPT)b))c/ 5085 xacd 5086 5087/(?<=(a(*COMMIT)b))c/ 5088 xabcd 5089 ** Failers 5090 xacd 5091 5092/(?<!a(*FAIL)b)c/ 5093 xcd 5094 acd 5095 5096/(?<=a(*:N)b)c/K 5097 xabcd 5098 5099/(?<=a(*PRUNE)b)c/ 5100 xabcd 5101 5102/(?<=a(*SKIP)b)c/ 5103 xabcd 5104 5105/(?<=a(*THEN)b)c/ 5106 xabcd 5107 5108/(a)(?2){2}(.)/ 5109 abcd 5110 5111/(*MARK:A)(*PRUNE:B)(C|X)/KS 5112 C 5113 D 5114 5115/(*MARK:A)(*PRUNE:B)(C|X)/KSS 5116 C 5117 D 5118 5119/(*MARK:A)(*THEN:B)(C|X)/KS 5120 C 5121 D 5122 5123/(*MARK:A)(*THEN:B)(C|X)/KSY 5124 C 5125 D 5126 5127/(*MARK:A)(*THEN:B)(C|X)/KSS 5128 C 5129 D 5130 5131/--- This should fail, as the skip causes a bump to offset 3 (the skip) ---/ 5132 5133/A(*MARK:A)A+(*SKIP)(B|Z) | AC/xK 5134 AAAC 5135 5136/--- Same --/ 5137 5138/A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xK 5139 AAAC 5140 5141/A(*:A)A+(*SKIP)(B|Z) | AC/xK 5142 AAAC 5143 5144/--- This should fail, as a null name is the same as no name ---/ 5145 5146/A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xK 5147 AAAC 5148 5149/--- A check on what happens after hitting a mark and them bumping along to 5150something that does not even start. Perl reports tags after the failures here, 5151though it does not when the individual letters are made into something 5152more complicated. ---/ 5153 5154/A(*:A)B|XX(*:B)Y/K 5155 AABC 5156 XXYZ 5157 ** Failers 5158 XAQQ 5159 XAQQXZZ 5160 AXQQQ 5161 AXXQQQ 5162 5163/^(A(*THEN:A)B|C(*THEN:B)D)/K 5164 AB 5165 CD 5166 ** Failers 5167 AC 5168 CB 5169 5170/^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K 5171 AB 5172 CD 5173 ** Failers 5174 AC 5175 CB 5176 5177/--- An empty name does not pass back an empty string. It is the same as if no 5178name were given. ---/ 5179 5180/^(A(*PRUNE:)B|C(*PRUNE:B)D)/K 5181 AB 5182 CD 5183 5184/--- PRUNE goes to next bumpalong; COMMIT does not. ---/ 5185 5186/A(*PRUNE:A)B/K 5187 ACAB 5188 5189/--- Mark names can be duplicated ---/ 5190 5191/A(*:A)B|X(*:A)Y/K 5192 AABC 5193 XXYZ 5194 5195/b(*:m)f|a(*:n)w/K 5196 aw 5197 ** Failers 5198 abc 5199 5200/b(*:m)f|aw/K 5201 abaw 5202 ** Failers 5203 abc 5204 abax 5205 5206/A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xK 5207 AAAC 5208 5209/a(*PRUNE:X)bc|qq/KY 5210 ** Failers 5211 axy 5212 5213/a(*THEN:X)bc|qq/KY 5214 ** Failers 5215 axy 5216 5217/(?=a(*MARK:A)b)..x/K 5218 abxy 5219 ** Failers 5220 abpq 5221 5222/(?=a(*MARK:A)b)..(*:Y)x/K 5223 abxy 5224 ** Failers 5225 abpq 5226 5227/(?=a(*PRUNE:A)b)..x/K 5228 abxy 5229 ** Failers 5230 abpq 5231 5232/(?=a(*PRUNE:A)b)..(*:Y)x/K 5233 abxy 5234 ** Failers 5235 abpq 5236 5237/(?=a(*THEN:A)b)..x/K 5238 abxy 5239 ** Failers 5240 abpq 5241 5242/(?=a(*THEN:A)b)..(*:Y)x/K 5243 abxy 5244 ** Failers 5245 abpq 5246 5247/(another)?(\1?)test/ 5248 hello world test 5249 5250/(another)?(\1+)test/ 5251 hello world test 5252 5253/(a(*COMMIT)b){0}a(?1)|aac/ 5254 aac 5255 5256/(?!a(*COMMIT)b)ac|cd/ 5257 ac 5258 5259/((?:a?)*)*c/ 5260 aac 5261 5262/((?>a?)*)*c/ 5263 aac 5264 5265/(?>.*?a)(?<=ba)/ 5266 aba 5267 5268/(?:.*?a)(?<=ba)/ 5269 aba 5270 5271/.*?a(*PRUNE)b/ 5272 aab 5273 5274/.*?a(*PRUNE)b/s 5275 aab 5276 5277/^a(*PRUNE)b/s 5278 aab 5279 5280/.*?a(*SKIP)b/ 5281 aab 5282 5283/(?>.*?a)b/s 5284 aab 5285 5286/(?>.*?a)b/ 5287 aab 5288 5289/(?>^a)b/s 5290 aab 5291 5292/(?>.*?)(?<=(abcd)|(wxyz))/ 5293 alphabetabcd 5294 endingwxyz 5295 5296/(?>.*)(?<=(abcd)|(wxyz))/ 5297 alphabetabcd 5298 endingwxyz 5299 5300"(?>.*)foo" 5301 abcdfooxyz 5302 5303"(?>.*?)foo" 5304 abcdfooxyz 5305 5306/-- End of testinput1 --/ 5307