1 /-- This set of tests is for features that are compatible with all versions of 2 Perl 5, in non-UTF-8 mode. --/ 3 4 /the quick brown fox/ 5 the quick brown fox 6 0: the quick brown fox 7 The quick brown FOX 8 No match 9 What do you know about the quick brown fox? 10 0: the quick brown fox 11 What do you know about THE QUICK BROWN FOX? 12 No match 13 14 /The quick brown fox/i 15 the quick brown fox 16 0: the quick brown fox 17 The quick brown FOX 18 0: The quick brown FOX 19 What do you know about the quick brown fox? 20 0: the quick brown fox 21 What do you know about THE QUICK BROWN FOX? 22 0: THE QUICK BROWN FOX 23 24 /abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/ 25 abcd\t\n\r\f\a\e9;\$\\?caxyz 26 0: abcd\x09\x0a\x0d\x0c\x07\x1b9;$\?caxyz 27 28 /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/ 29 abxyzpqrrrabbxyyyypqAzz 30 0: abxyzpqrrrabbxyyyypqAzz 31 abxyzpqrrrabbxyyyypqAzz 32 0: abxyzpqrrrabbxyyyypqAzz 33 aabxyzpqrrrabbxyyyypqAzz 34 0: aabxyzpqrrrabbxyyyypqAzz 35 aaabxyzpqrrrabbxyyyypqAzz 36 0: aaabxyzpqrrrabbxyyyypqAzz 37 aaaabxyzpqrrrabbxyyyypqAzz 38 0: aaaabxyzpqrrrabbxyyyypqAzz 39 abcxyzpqrrrabbxyyyypqAzz 40 0: abcxyzpqrrrabbxyyyypqAzz 41 aabcxyzpqrrrabbxyyyypqAzz 42 0: aabcxyzpqrrrabbxyyyypqAzz 43 aaabcxyzpqrrrabbxyyyypAzz 44 0: aaabcxyzpqrrrabbxyyyypAzz 45 aaabcxyzpqrrrabbxyyyypqAzz 46 0: aaabcxyzpqrrrabbxyyyypqAzz 47 aaabcxyzpqrrrabbxyyyypqqAzz 48 0: aaabcxyzpqrrrabbxyyyypqqAzz 49 aaabcxyzpqrrrabbxyyyypqqqAzz 50 0: aaabcxyzpqrrrabbxyyyypqqqAzz 51 aaabcxyzpqrrrabbxyyyypqqqqAzz 52 0: aaabcxyzpqrrrabbxyyyypqqqqAzz 53 aaabcxyzpqrrrabbxyyyypqqqqqAzz 54 0: aaabcxyzpqrrrabbxyyyypqqqqqAzz 55 aaabcxyzpqrrrabbxyyyypqqqqqqAzz 56 0: aaabcxyzpqrrrabbxyyyypqqqqqqAzz 57 aaaabcxyzpqrrrabbxyyyypqAzz 58 0: aaaabcxyzpqrrrabbxyyyypqAzz 59 abxyzzpqrrrabbxyyyypqAzz 60 0: abxyzzpqrrrabbxyyyypqAzz 61 aabxyzzzpqrrrabbxyyyypqAzz 62 0: aabxyzzzpqrrrabbxyyyypqAzz 63 aaabxyzzzzpqrrrabbxyyyypqAzz 64 0: aaabxyzzzzpqrrrabbxyyyypqAzz 65 aaaabxyzzzzpqrrrabbxyyyypqAzz 66 0: aaaabxyzzzzpqrrrabbxyyyypqAzz 67 abcxyzzpqrrrabbxyyyypqAzz 68 0: abcxyzzpqrrrabbxyyyypqAzz 69 aabcxyzzzpqrrrabbxyyyypqAzz 70 0: aabcxyzzzpqrrrabbxyyyypqAzz 71 aaabcxyzzzzpqrrrabbxyyyypqAzz 72 0: aaabcxyzzzzpqrrrabbxyyyypqAzz 73 aaaabcxyzzzzpqrrrabbxyyyypqAzz 74 0: aaaabcxyzzzzpqrrrabbxyyyypqAzz 75 aaaabcxyzzzzpqrrrabbbxyyyypqAzz 76 0: aaaabcxyzzzzpqrrrabbbxyyyypqAzz 77 aaaabcxyzzzzpqrrrabbbxyyyyypqAzz 78 0: aaaabcxyzzzzpqrrrabbbxyyyyypqAzz 79 aaabcxyzpqrrrabbxyyyypABzz 80 0: aaabcxyzpqrrrabbxyyyypABzz 81 aaabcxyzpqrrrabbxyyyypABBzz 82 0: aaabcxyzpqrrrabbxyyyypABBzz 83 >>>aaabxyzpqrrrabbxyyyypqAzz 84 0: aaabxyzpqrrrabbxyyyypqAzz 85 >aaaabxyzpqrrrabbxyyyypqAzz 86 0: aaaabxyzpqrrrabbxyyyypqAzz 87 >>>>abcxyzpqrrrabbxyyyypqAzz 88 0: abcxyzpqrrrabbxyyyypqAzz 89 *** Failers 90 No match 91 abxyzpqrrabbxyyyypqAzz 92 No match 93 abxyzpqrrrrabbxyyyypqAzz 94 No match 95 abxyzpqrrrabxyyyypqAzz 96 No match 97 aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz 98 No match 99 aaaabcxyzzzzpqrrrabbbxyyypqAzz 100 No match 101 aaabcxyzpqrrrabbxyyyypqqqqqqqAzz 102 No match 103 104 /^(abc){1,2}zz/ 105 abczz 106 0: abczz 107 1: abc 108 abcabczz 109 0: abcabczz 110 1: abc 111 *** Failers 112 No match 113 zz 114 No match 115 abcabcabczz 116 No match 117 >>abczz 118 No match 119 120 /^(b+?|a){1,2}?c/ 121 bc 122 0: bc 123 1: b 124 bbc 125 0: bbc 126 1: b 127 bbbc 128 0: bbbc 129 1: bb 130 bac 131 0: bac 132 1: a 133 bbac 134 0: bbac 135 1: a 136 aac 137 0: aac 138 1: a 139 abbbbbbbbbbbc 140 0: abbbbbbbbbbbc 141 1: bbbbbbbbbbb 142 bbbbbbbbbbbac 143 0: bbbbbbbbbbbac 144 1: a 145 *** Failers 146 No match 147 aaac 148 No match 149 abbbbbbbbbbbac 150 No match 151 152 /^(b+|a){1,2}c/ 153 bc 154 0: bc 155 1: b 156 bbc 157 0: bbc 158 1: bb 159 bbbc 160 0: bbbc 161 1: bbb 162 bac 163 0: bac 164 1: a 165 bbac 166 0: bbac 167 1: a 168 aac 169 0: aac 170 1: a 171 abbbbbbbbbbbc 172 0: abbbbbbbbbbbc 173 1: bbbbbbbbbbb 174 bbbbbbbbbbbac 175 0: bbbbbbbbbbbac 176 1: a 177 *** Failers 178 No match 179 aaac 180 No match 181 abbbbbbbbbbbac 182 No match 183 184 /^(b+|a){1,2}?bc/ 185 bbc 186 0: bbc 187 1: b 188 189 /^(b*|ba){1,2}?bc/ 190 babc 191 0: babc 192 1: ba 193 bbabc 194 0: bbabc 195 1: ba 196 bababc 197 0: bababc 198 1: ba 199 *** Failers 200 No match 201 bababbc 202 No match 203 babababc 204 No match 205 206 /^(ba|b*){1,2}?bc/ 207 babc 208 0: babc 209 1: ba 210 bbabc 211 0: bbabc 212 1: ba 213 bababc 214 0: bababc 215 1: ba 216 *** Failers 217 No match 218 bababbc 219 No match 220 babababc 221 No match 222 223 /^\ca\cA\c[\c{\c:/ 224 \x01\x01\e;z 225 0: \x01\x01\x1b;z 226 227 /^[ab\]cde]/ 228 athing 229 0: a 230 bthing 231 0: b 232 ]thing 233 0: ] 234 cthing 235 0: c 236 dthing 237 0: d 238 ething 239 0: e 240 *** Failers 241 No match 242 fthing 243 No match 244 [thing 245 No match 246 \\thing 247 No match 248 249 /^[]cde]/ 250 ]thing 251 0: ] 252 cthing 253 0: c 254 dthing 255 0: d 256 ething 257 0: e 258 *** Failers 259 No match 260 athing 261 No match 262 fthing 263 No match 264 265 /^[^ab\]cde]/ 266 fthing 267 0: f 268 [thing 269 0: [ 270 \\thing 271 0: \ 272 *** Failers 273 0: * 274 athing 275 No match 276 bthing 277 No match 278 ]thing 279 No match 280 cthing 281 No match 282 dthing 283 No match 284 ething 285 No match 286 287 /^[^]cde]/ 288 athing 289 0: a 290 fthing 291 0: f 292 *** Failers 293 0: * 294 ]thing 295 No match 296 cthing 297 No match 298 dthing 299 No match 300 ething 301 No match 302 303 /^\/ 304 305 0: \x81 306 307 /^/ 308 309 0: \xff 310 311 /^[0-9]+$/ 312 0 313 0: 0 314 1 315 0: 1 316 2 317 0: 2 318 3 319 0: 3 320 4 321 0: 4 322 5 323 0: 5 324 6 325 0: 6 326 7 327 0: 7 328 8 329 0: 8 330 9 331 0: 9 332 10 333 0: 10 334 100 335 0: 100 336 *** Failers 337 No match 338 abc 339 No match 340 341 /^.*nter/ 342 enter 343 0: enter 344 inter 345 0: inter 346 uponter 347 0: uponter 348 349 /^xxx[0-9]+$/ 350 xxx0 351 0: xxx0 352 xxx1234 353 0: xxx1234 354 *** Failers 355 No match 356 xxx 357 No match 358 359 /^.+[0-9][0-9][0-9]$/ 360 x123 361 0: x123 362 xx123 363 0: xx123 364 123456 365 0: 123456 366 *** Failers 367 No match 368 123 369 No match 370 x1234 371 0: x1234 372 373 /^.+?[0-9][0-9][0-9]$/ 374 x123 375 0: x123 376 xx123 377 0: xx123 378 123456 379 0: 123456 380 *** Failers 381 No match 382 123 383 No match 384 x1234 385 0: x1234 386 387 /^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/ 388 abc!pqr=apquxz.ixr.zzz.ac.uk 389 0: abc!pqr=apquxz.ixr.zzz.ac.uk 390 1: abc 391 2: pqr 392 *** Failers 393 No match 394 !pqr=apquxz.ixr.zzz.ac.uk 395 No match 396 abc!=apquxz.ixr.zzz.ac.uk 397 No match 398 abc!pqr=apquxz:ixr.zzz.ac.uk 399 No match 400 abc!pqr=apquxz.ixr.zzz.ac.ukk 401 No match 402 403 /:/ 404 Well, we need a colon: somewhere 405 0: : 406 *** Fail if we don't 407 No match 408 409 /([\da-f:]+)$/i 410 0abc 411 0: 0abc 412 1: 0abc 413 abc 414 0: abc 415 1: abc 416 fed 417 0: fed 418 1: fed 419 E 420 0: E 421 1: E 422 :: 423 0: :: 424 1: :: 425 5f03:12C0::932e 426 0: 5f03:12C0::932e 427 1: 5f03:12C0::932e 428 fed def 429 0: def 430 1: def 431 Any old stuff 432 0: ff 433 1: ff 434 *** Failers 435 No match 436 0zzz 437 No match 438 gzzz 439 No match 440 fed\x20 441 No match 442 Any old rubbish 443 No match 444 445 /^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/ 446 .1.2.3 447 0: .1.2.3 448 1: 1 449 2: 2 450 3: 3 451 A.12.123.0 452 0: A.12.123.0 453 1: 12 454 2: 123 455 3: 0 456 *** Failers 457 No match 458 .1.2.3333 459 No match 460 1.2.3 461 No match 462 1234.2.3 463 No match 464 465 /^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/ 466 1 IN SOA non-sp1 non-sp2( 467 0: 1 IN SOA non-sp1 non-sp2( 468 1: 1 469 2: non-sp1 470 3: non-sp2 471 1 IN SOA non-sp1 non-sp2 ( 472 0: 1 IN SOA non-sp1 non-sp2 ( 473 1: 1 474 2: non-sp1 475 3: non-sp2 476 *** Failers 477 No match 478 1IN SOA non-sp1 non-sp2( 479 No match 480 481 /^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/ 482 a. 483 0: a. 484 Z. 485 0: Z. 486 2. 487 0: 2. 488 ab-c.pq-r. 489 0: ab-c.pq-r. 490 1: .pq-r 491 sxk.zzz.ac.uk. 492 0: sxk.zzz.ac.uk. 493 1: .uk 494 x-.y-. 495 0: x-.y-. 496 1: .y- 497 *** Failers 498 No match 499 -abc.peq. 500 No match 501 502 /^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/ 503 *.a 504 0: *.a 505 *.b0-a 506 0: *.b0-a 507 1: 0-a 508 *.c3-b.c 509 0: *.c3-b.c 510 1: 3-b 511 2: .c 512 *.c-a.b-c 513 0: *.c-a.b-c 514 1: -a 515 2: .b-c 516 3: -c 517 *** Failers 518 No match 519 *.0 520 No match 521 *.a- 522 No match 523 *.a-b.c- 524 No match 525 *.c-a.0-c 526 No match 527 528 /^(?=ab(de))(abd)(e)/ 529 abde 530 0: abde 531 1: de 532 2: abd 533 3: e 534 535 /^(?!(ab)de|x)(abd)(f)/ 536 abdf 537 0: abdf 538 1: <unset> 539 2: abd 540 3: f 541 542 /^(?=(ab(cd)))(ab)/ 543 abcd 544 0: ab 545 1: abcd 546 2: cd 547 3: ab 548 549 /^[\da-f](\.[\da-f])*$/i 550 a.b.c.d 551 0: a.b.c.d 552 1: .d 553 A.B.C.D 554 0: A.B.C.D 555 1: .D 556 a.b.c.1.2.3.C 557 0: a.b.c.1.2.3.C 558 1: .C 559 560 /^\".*\"\s*(;.*)?$/ 561 \"1234\" 562 0: "1234" 563 \"abcd\" ; 564 0: "abcd" ; 565 1: ; 566 \"\" ; rhubarb 567 0: "" ; rhubarb 568 1: ; rhubarb 569 *** Failers 570 No match 571 \"1234\" : things 572 No match 573 574 /^$/ 575 \ 576 0: 577 *** Failers 578 No match 579 580 / ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/x 581 ab c 582 0: ab c 583 *** Failers 584 No match 585 abc 586 No match 587 ab cde 588 No match 589 590 /(?x) ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/ 591 ab c 592 0: ab c 593 *** Failers 594 No match 595 abc 596 No match 597 ab cde 598 No match 599 600 /^ a\ b[c ]d $/x 601 a bcd 602 0: a bcd 603 a b d 604 0: a b d 605 *** Failers 606 No match 607 abcd 608 No match 609 ab d 610 No match 611 612 /^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/ 613 abcdefhijklm 614 0: abcdefhijklm 615 1: abc 616 2: bc 617 3: c 618 4: def 619 5: ef 620 6: f 621 7: hij 622 8: ij 623 9: j 624 10: klm 625 11: lm 626 12: m 627 628 /^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/ 629 abcdefhijklm 630 0: abcdefhijklm 631 1: bc 632 2: c 633 3: ef 634 4: f 635 5: ij 636 6: j 637 7: lm 638 8: m 639 640 /^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/ 641 a+ Z0+\x08\n\x1d\x12 642 0: a+ Z0+\x08\x0a\x1d\x12 643 644 /^[.^$|()*+?{,}]+/ 645 .^\$(*+)|{?,?} 646 0: .^$(*+)|{?,?} 647 648 /^a*\w/ 649 z 650 0: z 651 az 652 0: az 653 aaaz 654 0: aaaz 655 a 656 0: a 657 aa 658 0: aa 659 aaaa 660 0: aaaa 661 a+ 662 0: a 663 aa+ 664 0: aa 665 666 /^a*?\w/ 667 z 668 0: z 669 az 670 0: a 671 aaaz 672 0: a 673 a 674 0: a 675 aa 676 0: a 677 aaaa 678 0: a 679 a+ 680 0: a 681 aa+ 682 0: a 683 684 /^a+\w/ 685 az 686 0: az 687 aaaz 688 0: aaaz 689 aa 690 0: aa 691 aaaa 692 0: aaaa 693 aa+ 694 0: aa 695 696 /^a+?\w/ 697 az 698 0: az 699 aaaz 700 0: aa 701 aa 702 0: aa 703 aaaa 704 0: aa 705 aa+ 706 0: aa 707 708 /^\d{8}\w{2,}/ 709 1234567890 710 0: 1234567890 711 12345678ab 712 0: 12345678ab 713 12345678__ 714 0: 12345678__ 715 *** Failers 716 No match 717 1234567 718 No match 719 720 /^[aeiou\d]{4,5}$/ 721 uoie 722 0: uoie 723 1234 724 0: 1234 725 12345 726 0: 12345 727 aaaaa 728 0: aaaaa 729 *** Failers 730 No match 731 123456 732 No match 733 734 /^[aeiou\d]{4,5}?/ 735 uoie 736 0: uoie 737 1234 738 0: 1234 739 12345 740 0: 1234 741 aaaaa 742 0: aaaa 743 123456 744 0: 1234 745 746 /\A(abc|def)=(\1){2,3}\Z/ 747 abc=abcabc 748 0: abc=abcabc 749 1: abc 750 2: abc 751 def=defdefdef 752 0: def=defdefdef 753 1: def 754 2: def 755 *** Failers 756 No match 757 abc=defdef 758 No match 759 760 /^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\11*(\3\4)\1(?#)2$/ 761 abcdefghijkcda2 762 0: abcdefghijkcda2 763 1: a 764 2: b 765 3: c 766 4: d 767 5: e 768 6: f 769 7: g 770 8: h 771 9: i 772 10: j 773 11: k 774 12: cd 775 abcdefghijkkkkcda2 776 0: abcdefghijkkkkcda2 777 1: a 778 2: b 779 3: c 780 4: d 781 5: e 782 6: f 783 7: g 784 8: h 785 9: i 786 10: j 787 11: k 788 12: cd 789 790 /(cat(a(ract|tonic)|erpillar)) \1()2(3)/ 791 cataract cataract23 792 0: cataract cataract23 793 1: cataract 794 2: aract 795 3: ract 796 4: 797 5: 3 798 catatonic catatonic23 799 0: catatonic catatonic23 800 1: catatonic 801 2: atonic 802 3: tonic 803 4: 804 5: 3 805 caterpillar caterpillar23 806 0: caterpillar caterpillar23 807 1: caterpillar 808 2: erpillar 809 3: <unset> 810 4: 811 5: 3 812 813 814 /^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]/ 815 From abcd Mon Sep 01 12:33:02 1997 816 0: From abcd Mon Sep 01 12:33 817 1: abcd 818 819 /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/ 820 From abcd Mon Sep 01 12:33:02 1997 821 0: From abcd Mon Sep 01 12:33 822 1: Sep 823 From abcd Mon Sep 1 12:33:02 1997 824 0: From abcd Mon Sep 1 12:33 825 1: Sep 826 *** Failers 827 No match 828 From abcd Sep 01 12:33:02 1997 829 No match 830 831 /^12.34/s 832 12\n34 833 0: 12\x0a34 834 12\r34 835 0: 12\x0d34 836 837 /\w+(?=\t)/ 838 the quick brown\t fox 839 0: brown 840 841 /foo(?!bar)(.*)/ 842 foobar is foolish see? 843 0: foolish see? 844 1: lish see? 845 846 /(?:(?!foo)...|^.{0,2})bar(.*)/ 847 foobar crowbar etc 848 0: rowbar etc 849 1: etc 850 barrel 851 0: barrel 852 1: rel 853 2barrel 854 0: 2barrel 855 1: rel 856 A barrel 857 0: A barrel 858 1: rel 859 860 /^(\D*)(?=\d)(?!123)/ 861 abc456 862 0: abc 863 1: abc 864 *** Failers 865 No match 866 abc123 867 No match 868 869 /^1234(?# test newlines 870 inside)/ 871 1234 872 0: 1234 873 874 /^1234 #comment in extended re 875 /x 876 1234 877 0: 1234 878 879 /#rhubarb 880 abcd/x 881 abcd 882 0: abcd 883 884 /^abcd#rhubarb/x 885 abcd 886 0: abcd 887 888 /^(a)\1{2,3}(.)/ 889 aaab 890 0: aaab 891 1: a 892 2: b 893 aaaab 894 0: aaaab 895 1: a 896 2: b 897 aaaaab 898 0: aaaaa 899 1: a 900 2: a 901 aaaaaab 902 0: aaaaa 903 1: a 904 2: a 905 906 /(?!^)abc/ 907 the abc 908 0: abc 909 *** Failers 910 No match 911 abc 912 No match 913 914 /(?=^)abc/ 915 abc 916 0: abc 917 *** Failers 918 No match 919 the abc 920 No match 921 922 /^[ab]{1,3}(ab*|b)/ 923 aabbbbb 924 0: aabb 925 1: b 926 927 /^[ab]{1,3}?(ab*|b)/ 928 aabbbbb 929 0: aabbbbb 930 1: abbbbb 931 932 /^[ab]{1,3}?(ab*?|b)/ 933 aabbbbb 934 0: aa 935 1: a 936 937 /^[ab]{1,3}(ab*?|b)/ 938 aabbbbb 939 0: aabb 940 1: b 941 942 / (?: [\040\t] | \( 943 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 944 \) )* # optional leading comment 945 (?: (?: 946 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 947 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 948 | 949 " (?: # opening quote... 950 [^\\\x80-\xff\n\015"] # Anything except backslash and quote 951 | # or 952 \\ [^\x80-\xff] # Escaped something (something != CR) 953 )* " # closing quote 954 ) # initial word 955 (?: (?: [\040\t] | \( 956 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 957 \) )* \. (?: [\040\t] | \( 958 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 959 \) )* (?: 960 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 961 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 962 | 963 " (?: # opening quote... 964 [^\\\x80-\xff\n\015"] # Anything except backslash and quote 965 | # or 966 \\ [^\x80-\xff] # Escaped something (something != CR) 967 )* " # closing quote 968 ) )* # further okay, if led by a period 969 (?: [\040\t] | \( 970 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 971 \) )* @ (?: [\040\t] | \( 972 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 973 \) )* (?: 974 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 975 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 976 | \[ # [ 977 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 978 \] # ] 979 ) # initial subdomain 980 (?: # 981 (?: [\040\t] | \( 982 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 983 \) )* \. # if led by a period... 984 (?: [\040\t] | \( 985 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 986 \) )* (?: 987 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 988 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 989 | \[ # [ 990 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 991 \] # ] 992 ) # ...further okay 993 )* 994 # address 995 | # or 996 (?: 997 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 998 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 999 | 1000 " (?: # opening quote... 1001 [^\\\x80-\xff\n\015"] # Anything except backslash and quote 1002 | # or 1003 \\ [^\x80-\xff] # Escaped something (something != CR) 1004 )* " # closing quote 1005 ) # one word, optionally followed by.... 1006 (?: 1007 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] | # atom and space parts, or... 1008 \( 1009 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1010 \) | # comments, or... 1011 1012 " (?: # opening quote... 1013 [^\\\x80-\xff\n\015"] # Anything except backslash and quote 1014 | # or 1015 \\ [^\x80-\xff] # Escaped something (something != CR) 1016 )* " # closing quote 1017 # quoted strings 1018 )* 1019 < (?: [\040\t] | \( 1020 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1021 \) )* # leading < 1022 (?: @ (?: [\040\t] | \( 1023 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1024 \) )* (?: 1025 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1026 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1027 | \[ # [ 1028 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 1029 \] # ] 1030 ) # initial subdomain 1031 (?: # 1032 (?: [\040\t] | \( 1033 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1034 \) )* \. # if led by a period... 1035 (?: [\040\t] | \( 1036 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1037 \) )* (?: 1038 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1039 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1040 | \[ # [ 1041 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 1042 \] # ] 1043 ) # ...further okay 1044 )* 1045 1046 (?: (?: [\040\t] | \( 1047 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1048 \) )* , (?: [\040\t] | \( 1049 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1050 \) )* @ (?: [\040\t] | \( 1051 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1052 \) )* (?: 1053 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1054 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1055 | \[ # [ 1056 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 1057 \] # ] 1058 ) # initial subdomain 1059 (?: # 1060 (?: [\040\t] | \( 1061 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1062 \) )* \. # if led by a period... 1063 (?: [\040\t] | \( 1064 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1065 \) )* (?: 1066 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1067 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1068 | \[ # [ 1069 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 1070 \] # ] 1071 ) # ...further okay 1072 )* 1073 )* # further okay, if led by comma 1074 : # closing colon 1075 (?: [\040\t] | \( 1076 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1077 \) )* )? # optional route 1078 (?: 1079 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1080 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1081 | 1082 " (?: # opening quote... 1083 [^\\\x80-\xff\n\015"] # Anything except backslash and quote 1084 | # or 1085 \\ [^\x80-\xff] # Escaped something (something != CR) 1086 )* " # closing quote 1087 ) # initial word 1088 (?: (?: [\040\t] | \( 1089 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1090 \) )* \. (?: [\040\t] | \( 1091 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1092 \) )* (?: 1093 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1094 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1095 | 1096 " (?: # opening quote... 1097 [^\\\x80-\xff\n\015"] # Anything except backslash and quote 1098 | # or 1099 \\ [^\x80-\xff] # Escaped something (something != CR) 1100 )* " # closing quote 1101 ) )* # further okay, if led by a period 1102 (?: [\040\t] | \( 1103 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1104 \) )* @ (?: [\040\t] | \( 1105 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1106 \) )* (?: 1107 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1108 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1109 | \[ # [ 1110 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 1111 \] # ] 1112 ) # initial subdomain 1113 (?: # 1114 (?: [\040\t] | \( 1115 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1116 \) )* \. # if led by a period... 1117 (?: [\040\t] | \( 1118 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1119 \) )* (?: 1120 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1121 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1122 | \[ # [ 1123 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 1124 \] # ] 1125 ) # ...further okay 1126 )* 1127 # address spec 1128 (?: [\040\t] | \( 1129 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1130 \) )* > # trailing > 1131 # name and address 1132 ) (?: [\040\t] | \( 1133 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1134 \) )* # optional trailing comment 1135 /x 1136 Alan Other <user\@dom.ain> 1137 0: Alan Other <user (a] dom.ain> 1138 <user\@dom.ain> 1139 0: user (a] dom.ain 1140 user\@dom.ain 1141 0: user (a] dom.ain 1142 \"A. Other\" <user.1234\@dom.ain> (a comment) 1143 0: "A. Other" <user.1234 (a] dom.ain> (a comment) 1144 A. Other <user.1234\@dom.ain> (a comment) 1145 0: Other <user.1234 (a] dom.ain> (a comment) 1146 \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay 1147 0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay 1148 A missing angle <user\@some.where 1149 0: user (a] some.where 1150 *** Failers 1151 No match 1152 The quick brown fox 1153 No match 1154 1155 /[\040\t]* # Nab whitespace. 1156 (?: 1157 \( # ( 1158 [^\\\x80-\xff\n\015()] * # normal* 1159 (?: # ( 1160 (?: \\ [^\x80-\xff] | 1161 \( # ( 1162 [^\\\x80-\xff\n\015()] * # normal* 1163 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1164 \) # ) 1165 ) # special 1166 [^\\\x80-\xff\n\015()] * # normal* 1167 )* # )* 1168 \) # ) 1169 [\040\t]* )* # If comment found, allow more spaces. 1170 # optional leading comment 1171 (?: 1172 (?: 1173 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1174 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1175 # Atom 1176 | # or 1177 " # " 1178 [^\\\x80-\xff\n\015"] * # normal 1179 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* 1180 " # " 1181 # Quoted string 1182 ) 1183 [\040\t]* # Nab whitespace. 1184 (?: 1185 \( # ( 1186 [^\\\x80-\xff\n\015()] * # normal* 1187 (?: # ( 1188 (?: \\ [^\x80-\xff] | 1189 \( # ( 1190 [^\\\x80-\xff\n\015()] * # normal* 1191 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1192 \) # ) 1193 ) # special 1194 [^\\\x80-\xff\n\015()] * # normal* 1195 )* # )* 1196 \) # ) 1197 [\040\t]* )* # If comment found, allow more spaces. 1198 (?: 1199 \. 1200 [\040\t]* # Nab whitespace. 1201 (?: 1202 \( # ( 1203 [^\\\x80-\xff\n\015()] * # normal* 1204 (?: # ( 1205 (?: \\ [^\x80-\xff] | 1206 \( # ( 1207 [^\\\x80-\xff\n\015()] * # normal* 1208 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1209 \) # ) 1210 ) # special 1211 [^\\\x80-\xff\n\015()] * # normal* 1212 )* # )* 1213 \) # ) 1214 [\040\t]* )* # If comment found, allow more spaces. 1215 (?: 1216 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1217 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1218 # Atom 1219 | # or 1220 " # " 1221 [^\\\x80-\xff\n\015"] * # normal 1222 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* 1223 " # " 1224 # Quoted string 1225 ) 1226 [\040\t]* # Nab whitespace. 1227 (?: 1228 \( # ( 1229 [^\\\x80-\xff\n\015()] * # normal* 1230 (?: # ( 1231 (?: \\ [^\x80-\xff] | 1232 \( # ( 1233 [^\\\x80-\xff\n\015()] * # normal* 1234 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1235 \) # ) 1236 ) # special 1237 [^\\\x80-\xff\n\015()] * # normal* 1238 )* # )* 1239 \) # ) 1240 [\040\t]* )* # If comment found, allow more spaces. 1241 # additional words 1242 )* 1243 @ 1244 [\040\t]* # Nab whitespace. 1245 (?: 1246 \( # ( 1247 [^\\\x80-\xff\n\015()] * # normal* 1248 (?: # ( 1249 (?: \\ [^\x80-\xff] | 1250 \( # ( 1251 [^\\\x80-\xff\n\015()] * # normal* 1252 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1253 \) # ) 1254 ) # special 1255 [^\\\x80-\xff\n\015()] * # normal* 1256 )* # )* 1257 \) # ) 1258 [\040\t]* )* # If comment found, allow more spaces. 1259 (?: 1260 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1261 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1262 | 1263 \[ # [ 1264 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 1265 \] # ] 1266 ) 1267 [\040\t]* # Nab whitespace. 1268 (?: 1269 \( # ( 1270 [^\\\x80-\xff\n\015()] * # normal* 1271 (?: # ( 1272 (?: \\ [^\x80-\xff] | 1273 \( # ( 1274 [^\\\x80-\xff\n\015()] * # normal* 1275 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1276 \) # ) 1277 ) # special 1278 [^\\\x80-\xff\n\015()] * # normal* 1279 )* # )* 1280 \) # ) 1281 [\040\t]* )* # If comment found, allow more spaces. 1282 # optional trailing comments 1283 (?: 1284 \. 1285 [\040\t]* # Nab whitespace. 1286 (?: 1287 \( # ( 1288 [^\\\x80-\xff\n\015()] * # normal* 1289 (?: # ( 1290 (?: \\ [^\x80-\xff] | 1291 \( # ( 1292 [^\\\x80-\xff\n\015()] * # normal* 1293 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1294 \) # ) 1295 ) # special 1296 [^\\\x80-\xff\n\015()] * # normal* 1297 )* # )* 1298 \) # ) 1299 [\040\t]* )* # If comment found, allow more spaces. 1300 (?: 1301 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1302 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1303 | 1304 \[ # [ 1305 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 1306 \] # ] 1307 ) 1308 [\040\t]* # Nab whitespace. 1309 (?: 1310 \( # ( 1311 [^\\\x80-\xff\n\015()] * # normal* 1312 (?: # ( 1313 (?: \\ [^\x80-\xff] | 1314 \( # ( 1315 [^\\\x80-\xff\n\015()] * # normal* 1316 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1317 \) # ) 1318 ) # special 1319 [^\\\x80-\xff\n\015()] * # normal* 1320 )* # )* 1321 \) # ) 1322 [\040\t]* )* # If comment found, allow more spaces. 1323 # optional trailing comments 1324 )* 1325 # address 1326 | # or 1327 (?: 1328 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1329 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1330 # Atom 1331 | # or 1332 " # " 1333 [^\\\x80-\xff\n\015"] * # normal 1334 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* 1335 " # " 1336 # Quoted string 1337 ) 1338 # leading word 1339 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # "normal" atoms and or spaces 1340 (?: 1341 (?: 1342 \( # ( 1343 [^\\\x80-\xff\n\015()] * # normal* 1344 (?: # ( 1345 (?: \\ [^\x80-\xff] | 1346 \( # ( 1347 [^\\\x80-\xff\n\015()] * # normal* 1348 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1349 \) # ) 1350 ) # special 1351 [^\\\x80-\xff\n\015()] * # normal* 1352 )* # )* 1353 \) # ) 1354 | 1355 " # " 1356 [^\\\x80-\xff\n\015"] * # normal 1357 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* 1358 " # " 1359 ) # "special" comment or quoted string 1360 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # more "normal" 1361 )* 1362 < 1363 [\040\t]* # Nab whitespace. 1364 (?: 1365 \( # ( 1366 [^\\\x80-\xff\n\015()] * # normal* 1367 (?: # ( 1368 (?: \\ [^\x80-\xff] | 1369 \( # ( 1370 [^\\\x80-\xff\n\015()] * # normal* 1371 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1372 \) # ) 1373 ) # special 1374 [^\\\x80-\xff\n\015()] * # normal* 1375 )* # )* 1376 \) # ) 1377 [\040\t]* )* # If comment found, allow more spaces. 1378 # < 1379 (?: 1380 @ 1381 [\040\t]* # Nab whitespace. 1382 (?: 1383 \( # ( 1384 [^\\\x80-\xff\n\015()] * # normal* 1385 (?: # ( 1386 (?: \\ [^\x80-\xff] | 1387 \( # ( 1388 [^\\\x80-\xff\n\015()] * # normal* 1389 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1390 \) # ) 1391 ) # special 1392 [^\\\x80-\xff\n\015()] * # normal* 1393 )* # )* 1394 \) # ) 1395 [\040\t]* )* # If comment found, allow more spaces. 1396 (?: 1397 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1398 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1399 | 1400 \[ # [ 1401 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 1402 \] # ] 1403 ) 1404 [\040\t]* # Nab whitespace. 1405 (?: 1406 \( # ( 1407 [^\\\x80-\xff\n\015()] * # normal* 1408 (?: # ( 1409 (?: \\ [^\x80-\xff] | 1410 \( # ( 1411 [^\\\x80-\xff\n\015()] * # normal* 1412 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1413 \) # ) 1414 ) # special 1415 [^\\\x80-\xff\n\015()] * # normal* 1416 )* # )* 1417 \) # ) 1418 [\040\t]* )* # If comment found, allow more spaces. 1419 # optional trailing comments 1420 (?: 1421 \. 1422 [\040\t]* # Nab whitespace. 1423 (?: 1424 \( # ( 1425 [^\\\x80-\xff\n\015()] * # normal* 1426 (?: # ( 1427 (?: \\ [^\x80-\xff] | 1428 \( # ( 1429 [^\\\x80-\xff\n\015()] * # normal* 1430 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1431 \) # ) 1432 ) # special 1433 [^\\\x80-\xff\n\015()] * # normal* 1434 )* # )* 1435 \) # ) 1436 [\040\t]* )* # If comment found, allow more spaces. 1437 (?: 1438 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1439 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1440 | 1441 \[ # [ 1442 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 1443 \] # ] 1444 ) 1445 [\040\t]* # Nab whitespace. 1446 (?: 1447 \( # ( 1448 [^\\\x80-\xff\n\015()] * # normal* 1449 (?: # ( 1450 (?: \\ [^\x80-\xff] | 1451 \( # ( 1452 [^\\\x80-\xff\n\015()] * # normal* 1453 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1454 \) # ) 1455 ) # special 1456 [^\\\x80-\xff\n\015()] * # normal* 1457 )* # )* 1458 \) # ) 1459 [\040\t]* )* # If comment found, allow more spaces. 1460 # optional trailing comments 1461 )* 1462 (?: , 1463 [\040\t]* # Nab whitespace. 1464 (?: 1465 \( # ( 1466 [^\\\x80-\xff\n\015()] * # normal* 1467 (?: # ( 1468 (?: \\ [^\x80-\xff] | 1469 \( # ( 1470 [^\\\x80-\xff\n\015()] * # normal* 1471 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1472 \) # ) 1473 ) # special 1474 [^\\\x80-\xff\n\015()] * # normal* 1475 )* # )* 1476 \) # ) 1477 [\040\t]* )* # If comment found, allow more spaces. 1478 @ 1479 [\040\t]* # Nab whitespace. 1480 (?: 1481 \( # ( 1482 [^\\\x80-\xff\n\015()] * # normal* 1483 (?: # ( 1484 (?: \\ [^\x80-\xff] | 1485 \( # ( 1486 [^\\\x80-\xff\n\015()] * # normal* 1487 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1488 \) # ) 1489 ) # special 1490 [^\\\x80-\xff\n\015()] * # normal* 1491 )* # )* 1492 \) # ) 1493 [\040\t]* )* # If comment found, allow more spaces. 1494 (?: 1495 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1496 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1497 | 1498 \[ # [ 1499 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 1500 \] # ] 1501 ) 1502 [\040\t]* # Nab whitespace. 1503 (?: 1504 \( # ( 1505 [^\\\x80-\xff\n\015()] * # normal* 1506 (?: # ( 1507 (?: \\ [^\x80-\xff] | 1508 \( # ( 1509 [^\\\x80-\xff\n\015()] * # normal* 1510 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1511 \) # ) 1512 ) # special 1513 [^\\\x80-\xff\n\015()] * # normal* 1514 )* # )* 1515 \) # ) 1516 [\040\t]* )* # If comment found, allow more spaces. 1517 # optional trailing comments 1518 (?: 1519 \. 1520 [\040\t]* # Nab whitespace. 1521 (?: 1522 \( # ( 1523 [^\\\x80-\xff\n\015()] * # normal* 1524 (?: # ( 1525 (?: \\ [^\x80-\xff] | 1526 \( # ( 1527 [^\\\x80-\xff\n\015()] * # normal* 1528 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1529 \) # ) 1530 ) # special 1531 [^\\\x80-\xff\n\015()] * # normal* 1532 )* # )* 1533 \) # ) 1534 [\040\t]* )* # If comment found, allow more spaces. 1535 (?: 1536 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1537 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1538 | 1539 \[ # [ 1540 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 1541 \] # ] 1542 ) 1543 [\040\t]* # Nab whitespace. 1544 (?: 1545 \( # ( 1546 [^\\\x80-\xff\n\015()] * # normal* 1547 (?: # ( 1548 (?: \\ [^\x80-\xff] | 1549 \( # ( 1550 [^\\\x80-\xff\n\015()] * # normal* 1551 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1552 \) # ) 1553 ) # special 1554 [^\\\x80-\xff\n\015()] * # normal* 1555 )* # )* 1556 \) # ) 1557 [\040\t]* )* # If comment found, allow more spaces. 1558 # optional trailing comments 1559 )* 1560 )* # additional domains 1561 : 1562 [\040\t]* # Nab whitespace. 1563 (?: 1564 \( # ( 1565 [^\\\x80-\xff\n\015()] * # normal* 1566 (?: # ( 1567 (?: \\ [^\x80-\xff] | 1568 \( # ( 1569 [^\\\x80-\xff\n\015()] * # normal* 1570 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1571 \) # ) 1572 ) # special 1573 [^\\\x80-\xff\n\015()] * # normal* 1574 )* # )* 1575 \) # ) 1576 [\040\t]* )* # If comment found, allow more spaces. 1577 # optional trailing comments 1578 )? # optional route 1579 (?: 1580 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1581 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1582 # Atom 1583 | # or 1584 " # " 1585 [^\\\x80-\xff\n\015"] * # normal 1586 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* 1587 " # " 1588 # Quoted string 1589 ) 1590 [\040\t]* # Nab whitespace. 1591 (?: 1592 \( # ( 1593 [^\\\x80-\xff\n\015()] * # normal* 1594 (?: # ( 1595 (?: \\ [^\x80-\xff] | 1596 \( # ( 1597 [^\\\x80-\xff\n\015()] * # normal* 1598 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1599 \) # ) 1600 ) # special 1601 [^\\\x80-\xff\n\015()] * # normal* 1602 )* # )* 1603 \) # ) 1604 [\040\t]* )* # If comment found, allow more spaces. 1605 (?: 1606 \. 1607 [\040\t]* # Nab whitespace. 1608 (?: 1609 \( # ( 1610 [^\\\x80-\xff\n\015()] * # normal* 1611 (?: # ( 1612 (?: \\ [^\x80-\xff] | 1613 \( # ( 1614 [^\\\x80-\xff\n\015()] * # normal* 1615 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1616 \) # ) 1617 ) # special 1618 [^\\\x80-\xff\n\015()] * # normal* 1619 )* # )* 1620 \) # ) 1621 [\040\t]* )* # If comment found, allow more spaces. 1622 (?: 1623 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1624 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1625 # Atom 1626 | # or 1627 " # " 1628 [^\\\x80-\xff\n\015"] * # normal 1629 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* 1630 " # " 1631 # Quoted string 1632 ) 1633 [\040\t]* # Nab whitespace. 1634 (?: 1635 \( # ( 1636 [^\\\x80-\xff\n\015()] * # normal* 1637 (?: # ( 1638 (?: \\ [^\x80-\xff] | 1639 \( # ( 1640 [^\\\x80-\xff\n\015()] * # normal* 1641 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1642 \) # ) 1643 ) # special 1644 [^\\\x80-\xff\n\015()] * # normal* 1645 )* # )* 1646 \) # ) 1647 [\040\t]* )* # If comment found, allow more spaces. 1648 # additional words 1649 )* 1650 @ 1651 [\040\t]* # Nab whitespace. 1652 (?: 1653 \( # ( 1654 [^\\\x80-\xff\n\015()] * # normal* 1655 (?: # ( 1656 (?: \\ [^\x80-\xff] | 1657 \( # ( 1658 [^\\\x80-\xff\n\015()] * # normal* 1659 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1660 \) # ) 1661 ) # special 1662 [^\\\x80-\xff\n\015()] * # normal* 1663 )* # )* 1664 \) # ) 1665 [\040\t]* )* # If comment found, allow more spaces. 1666 (?: 1667 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1668 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1669 | 1670 \[ # [ 1671 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 1672 \] # ] 1673 ) 1674 [\040\t]* # Nab whitespace. 1675 (?: 1676 \( # ( 1677 [^\\\x80-\xff\n\015()] * # normal* 1678 (?: # ( 1679 (?: \\ [^\x80-\xff] | 1680 \( # ( 1681 [^\\\x80-\xff\n\015()] * # normal* 1682 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1683 \) # ) 1684 ) # special 1685 [^\\\x80-\xff\n\015()] * # normal* 1686 )* # )* 1687 \) # ) 1688 [\040\t]* )* # If comment found, allow more spaces. 1689 # optional trailing comments 1690 (?: 1691 \. 1692 [\040\t]* # Nab whitespace. 1693 (?: 1694 \( # ( 1695 [^\\\x80-\xff\n\015()] * # normal* 1696 (?: # ( 1697 (?: \\ [^\x80-\xff] | 1698 \( # ( 1699 [^\\\x80-\xff\n\015()] * # normal* 1700 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1701 \) # ) 1702 ) # special 1703 [^\\\x80-\xff\n\015()] * # normal* 1704 )* # )* 1705 \) # ) 1706 [\040\t]* )* # If comment found, allow more spaces. 1707 (?: 1708 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1709 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1710 | 1711 \[ # [ 1712 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 1713 \] # ] 1714 ) 1715 [\040\t]* # Nab whitespace. 1716 (?: 1717 \( # ( 1718 [^\\\x80-\xff\n\015()] * # normal* 1719 (?: # ( 1720 (?: \\ [^\x80-\xff] | 1721 \( # ( 1722 [^\\\x80-\xff\n\015()] * # normal* 1723 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1724 \) # ) 1725 ) # special 1726 [^\\\x80-\xff\n\015()] * # normal* 1727 )* # )* 1728 \) # ) 1729 [\040\t]* )* # If comment found, allow more spaces. 1730 # optional trailing comments 1731 )* 1732 # address spec 1733 > # > 1734 # name and address 1735 ) 1736 /x 1737 Alan Other <user\@dom.ain> 1738 0: Alan Other <user (a] dom.ain> 1739 <user\@dom.ain> 1740 0: user (a] dom.ain 1741 user\@dom.ain 1742 0: user (a] dom.ain 1743 \"A. Other\" <user.1234\@dom.ain> (a comment) 1744 0: "A. Other" <user.1234 (a] dom.ain> 1745 A. Other <user.1234\@dom.ain> (a comment) 1746 0: Other <user.1234 (a] dom.ain> 1747 \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay 1748 0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay 1749 A missing angle <user\@some.where 1750 0: user (a] some.where 1751 *** Failers 1752 No match 1753 The quick brown fox 1754 No match 1755 1756 /abc\0def\00pqr\000xyz\0000AB/ 1757 abc\0def\00pqr\000xyz\0000AB 1758 0: abc\x00def\x00pqr\x00xyz\x000AB 1759 abc456 abc\0def\00pqr\000xyz\0000ABCDE 1760 0: abc\x00def\x00pqr\x00xyz\x000AB 1761 1762 /abc\x0def\x00pqr\x000xyz\x0000AB/ 1763 abc\x0def\x00pqr\x000xyz\x0000AB 1764 0: abc\x0def\x00pqr\x000xyz\x0000AB 1765 abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE 1766 0: abc\x0def\x00pqr\x000xyz\x0000AB 1767 1768 /^[\000-\037]/ 1769 \0A 1770 0: \x00 1771 \01B 1772 0: \x01 1773 \037C 1774 0: \x1f 1775 1776 /\0*/ 1777 \0\0\0\0 1778 0: \x00\x00\x00\x00 1779 1780 /A\x0{2,3}Z/ 1781 The A\x0\x0Z 1782 0: A\x00\x00Z 1783 An A\0\x0\0Z 1784 0: A\x00\x00\x00Z 1785 *** Failers 1786 No match 1787 A\0Z 1788 No match 1789 A\0\x0\0\x0Z 1790 No match 1791 1792 /^(cow|)\1(bell)/ 1793 cowcowbell 1794 0: cowcowbell 1795 1: cow 1796 2: bell 1797 bell 1798 0: bell 1799 1: 1800 2: bell 1801 *** Failers 1802 No match 1803 cowbell 1804 No match 1805 1806 /^\s/ 1807 \040abc 1808 0: 1809 \x0cabc 1810 0: \x0c 1811 \nabc 1812 0: \x0a 1813 \rabc 1814 0: \x0d 1815 \tabc 1816 0: \x09 1817 *** Failers 1818 No match 1819 abc 1820 No match 1821 1822 /^a b 1823 c/x 1825 abc 1826 0: abc 1827 1828 /^(a|)\1*b/ 1829 ab 1830 0: ab 1831 1: a 1832 aaaab 1833 0: aaaab 1834 1: a 1835 b 1836 0: b 1837 1: 1838 *** Failers 1839 No match 1840 acb 1841 No match 1842 1843 /^(a|)\1+b/ 1844 aab 1845 0: aab 1846 1: a 1847 aaaab 1848 0: aaaab 1849 1: a 1850 b 1851 0: b 1852 1: 1853 *** Failers 1854 No match 1855 ab 1856 No match 1857 1858 /^(a|)\1?b/ 1859 ab 1860 0: ab 1861 1: a 1862 aab 1863 0: aab 1864 1: a 1865 b 1866 0: b 1867 1: 1868 *** Failers 1869 No match 1870 acb 1871 No match 1872 1873 /^(a|)\1{2}b/ 1874 aaab 1875 0: aaab 1876 1: a 1877 b 1878 0: b 1879 1: 1880 *** Failers 1881 No match 1882 ab 1883 No match 1884 aab 1885 No match 1886 aaaab 1887 No match 1888 1889 /^(a|)\1{2,3}b/ 1890 aaab 1891 0: aaab 1892 1: a 1893 aaaab 1894 0: aaaab 1895 1: a 1896 b 1897 0: b 1898 1: 1899 *** Failers 1900 No match 1901 ab 1902 No match 1903 aab 1904 No match 1905 aaaaab 1906 No match 1907 1908 /ab{1,3}bc/ 1909 abbbbc 1910 0: abbbbc 1911 abbbc 1912 0: abbbc 1913 abbc 1914 0: abbc 1915 *** Failers 1916 No match 1917 abc 1918 No match 1919 abbbbbc 1920 No match 1921 1922 /([^.]*)\.([^:]*):[T ]+(.*)/ 1923 track1.title:TBlah blah blah 1924 0: track1.title:TBlah blah blah 1925 1: track1 1926 2: title 1927 3: Blah blah blah 1928 1929 /([^.]*)\.([^:]*):[T ]+(.*)/i 1930 track1.title:TBlah blah blah 1931 0: track1.title:TBlah blah blah 1932 1: track1 1933 2: title 1934 3: Blah blah blah 1935 1936 /([^.]*)\.([^:]*):[t ]+(.*)/i 1937 track1.title:TBlah blah blah 1938 0: track1.title:TBlah blah blah 1939 1: track1 1940 2: title 1941 3: Blah blah blah 1942 1943 /^[W-c]+$/ 1944 WXY_^abc 1945 0: WXY_^abc 1946 *** Failers 1947 No match 1948 wxy 1949 No match 1950 1951 /^[W-c]+$/i 1952 WXY_^abc 1953 0: WXY_^abc 1954 wxy_^ABC 1955 0: wxy_^ABC 1956 1957 /^[\x3f-\x5F]+$/i 1958 WXY_^abc 1959 0: WXY_^abc 1960 wxy_^ABC 1961 0: wxy_^ABC 1962 1963 /^abc$/m 1964 abc 1965 0: abc 1966 qqq\nabc 1967 0: abc 1968 abc\nzzz 1969 0: abc 1970 qqq\nabc\nzzz 1971 0: abc 1972 1973 /^abc$/ 1974 abc 1975 0: abc 1976 *** Failers 1977 No match 1978 qqq\nabc 1979 No match 1980 abc\nzzz 1981 No match 1982 qqq\nabc\nzzz 1983 No match 1984 1985 /\Aabc\Z/m 1986 abc 1987 0: abc 1988 abc\n 1989 0: abc 1990 *** Failers 1991 No match 1992 qqq\nabc 1993 No match 1994 abc\nzzz 1995 No match 1996 qqq\nabc\nzzz 1997 No match 1998 1999 /\A(.)*\Z/s 2000 abc\ndef 2001 0: abc\x0adef 2002 1: f 2003 2004 /\A(.)*\Z/m 2005 *** Failers 2006 0: *** Failers 2007 1: s 2008 abc\ndef 2009 No match 2010 2011 /(?:b)|(?::+)/ 2012 b::c 2013 0: b 2014 c::b 2015 0: :: 2016 2017 /[-az]+/ 2018 az- 2019 0: az- 2020 *** Failers 2021 0: a 2022 b 2023 No match 2024 2025 /[az-]+/ 2026 za- 2027 0: za- 2028 *** Failers 2029 0: a 2030 b 2031 No match 2032 2033 /[a\-z]+/ 2034 a-z 2035 0: a-z 2036 *** Failers 2037 0: a 2038 b 2039 No match 2040 2041 /[a-z]+/ 2042 abcdxyz 2043 0: abcdxyz 2044 2045 /[\d-]+/ 2046 12-34 2047 0: 12-34 2048 *** Failers 2049 No match 2050 aaa 2051 No match 2052 2053 /[\d-z]+/ 2054 12-34z 2055 0: 12-34z 2056 *** Failers 2057 No match 2058 aaa 2059 No match 2060 2061 /\x5c/ 2062 \\ 2063 0: \ 2064 2065 /\x20Z/ 2066 the Zoo 2067 0: Z 2068 *** Failers 2069 No match 2070 Zulu 2071 No match 2072 2073 /(abc)\1/i 2074 abcabc 2075 0: abcabc 2076 1: abc 2077 ABCabc 2078 0: ABCabc 2079 1: ABC 2080 abcABC 2081 0: abcABC 2082 1: abc 2083 2084 /ab{3cd/ 2085 ab{3cd 2086 0: ab{3cd 2087 2088 /ab{3,cd/ 2089 ab{3,cd 2090 0: ab{3,cd 2091 2092 /ab{3,4a}cd/ 2093 ab{3,4a}cd 2094 0: ab{3,4a}cd 2095 2096 /{4,5a}bc/ 2097 {4,5a}bc 2098 0: {4,5a}bc 2099 2100 /abc$/ 2101 abc 2102 0: abc 2103 abc\n 2104 0: abc 2105 *** Failers 2106 No match 2107 abc\ndef 2108 No match 2109 2110 /(abc)\123/ 2111 abc\x53 2112 0: abcS 2113 1: abc 2114 2115 /(abc)\223/ 2116 abc\x93 2117 0: abc\x93 2118 1: abc 2119 2120 /(abc)\323/ 2121 abc\xd3 2122 0: abc\xd3 2123 1: abc 2124 2125 /(abc)\100/ 2126 abc\x40 2127 0: abc@ 2128 1: abc 2129 abc\100 2130 0: abc@ 2131 1: abc 2132 2133 /(abc)\1000/ 2134 abc\x400 2135 0: abc@0 2136 1: abc 2137 abc\x40\x30 2138 0: abc@0 2139 1: abc 2140 abc\1000 2141 0: abc@0 2142 1: abc 2143 abc\100\x30 2144 0: abc@0 2145 1: abc 2146 abc\100\060 2147 0: abc@0 2148 1: abc 2149 abc\100\60 2150 0: abc@0 2151 1: abc 2152 2153 /abc\81/ 2154 abc\081 2155 0: abc\x0081 2156 abc\0\x38\x31 2157 0: abc\x0081 2158 2159 /abc\91/ 2160 abc\091 2161 0: abc\x0091 2162 abc\0\x39\x31 2163 0: abc\x0091 2164 2165 /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\12\123/ 2166 abcdefghijkllS 2167 0: abcdefghijkllS 2168 1: a 2169 2: b 2170 3: c 2171 4: d 2172 5: e 2173 6: f 2174 7: g 2175 8: h 2176 9: i 2177 10: j 2178 11: k 2179 12: l 2180 2181 /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/ 2182 abcdefghijk\12S 2183 0: abcdefghijk\x0aS 2184 1: a 2185 2: b 2186 3: c 2187 4: d 2188 5: e 2189 6: f 2190 7: g 2191 8: h 2192 9: i 2193 10: j 2194 11: k 2195 2196 /ab\idef/ 2197 abidef 2198 0: abidef 2199 2200 /a{0}bc/ 2201 bc 2202 0: bc 2203 2204 /(a|(bc)){0,0}?xyz/ 2205 xyz 2206 0: xyz 2207 2208 /abc[\10]de/ 2209 abc\010de 2210 0: abc\x08de 2211 2212 /abc[\1]de/ 2213 abc\1de 2214 0: abc\x01de 2215 2216 /(abc)[\1]de/ 2217 abc\1de 2218 0: abc\x01de 2219 1: abc 2220 2221 /(?s)a.b/ 2222 a\nb 2223 0: a\x0ab 2224 2225 /^([^a])([^\b])([^c]*)([^d]{3,4})/ 2226 baNOTccccd 2227 0: baNOTcccc 2228 1: b 2229 2: a 2230 3: NOT 2231 4: cccc 2232 baNOTcccd 2233 0: baNOTccc 2234 1: b 2235 2: a 2236 3: NOT 2237 4: ccc 2238 baNOTccd 2239 0: baNOTcc 2240 1: b 2241 2: a 2242 3: NO 2243 4: Tcc 2244 bacccd 2245 0: baccc 2246 1: b 2247 2: a 2248 3: 2249 4: ccc 2250 *** Failers 2251 0: *** Failers 2252 1: * 2253 2: * 2254 3: * Fail 2255 4: ers 2256 anything 2257 No match 2258 b\bc 2259 No match 2260 baccd 2261 No match 2262 2263 /[^a]/ 2264 Abc 2265 0: A 2266 2267 /[^a]/i 2268 Abc 2269 0: b 2270 2271 /[^a]+/ 2272 AAAaAbc 2273 0: AAA 2274 2275 /[^a]+/i 2276 AAAaAbc 2277 0: bc 2278 2279 /[^a]+/ 2280 bbb\nccc 2281 0: bbb\x0accc 2282 2283 /[^k]$/ 2284 abc 2285 0: c 2286 *** Failers 2287 0: s 2288 abk 2289 No match 2290 2291 /[^k]{2,3}$/ 2292 abc 2293 0: abc 2294 kbc 2295 0: bc 2296 kabc 2297 0: abc 2298 *** Failers 2299 0: ers 2300 abk 2301 No match 2302 akb 2303 No match 2304 akk 2305 No match 2306 2307 /^\d{8,}\@.+[^k]$/ 2308 12345678\@a.b.c.d 2309 0: 12345678 (a] a.b.c.d 2310 123456789\@x.y.z 2311 0: 123456789 (a] x.y.z 2312 *** Failers 2313 No match 2314 12345678\@x.y.uk 2315 No match 2316 1234567\@a.b.c.d 2317 No match 2318 2319 /(a)\1{8,}/ 2320 aaaaaaaaa 2321 0: aaaaaaaaa 2322 1: a 2323 aaaaaaaaaa 2324 0: aaaaaaaaaa 2325 1: a 2326 *** Failers 2327 No match 2328 aaaaaaa 2329 No match 2330 2331 /[^a]/ 2332 aaaabcd 2333 0: b 2334 aaAabcd 2335 0: A 2336 2337 /[^a]/i 2338 aaaabcd 2339 0: b 2340 aaAabcd 2341 0: b 2342 2343 /[^az]/ 2344 aaaabcd 2345 0: b 2346 aaAabcd 2347 0: A 2348 2349 /[^az]/i 2350 aaaabcd 2351 0: b 2352 aaAabcd 2353 0: b 2354 2355 /\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/ 2356 \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 2357 0: \x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff 2358 2359 /P[^*]TAIRE[^*]{1,6}?LL/ 2360 xxxxxxxxxxxPSTAIREISLLxxxxxxxxx 2361 0: PSTAIREISLL 2362 2363 /P[^*]TAIRE[^*]{1,}?LL/ 2364 xxxxxxxxxxxPSTAIREISLLxxxxxxxxx 2365 0: PSTAIREISLL 2366 2367 /(\.\d\d[1-9]?)\d+/ 2368 1.230003938 2369 0: .230003938 2370 1: .23 2371 1.875000282 2372 0: .875000282 2373 1: .875 2374 1.235 2375 0: .235 2376 1: .23 2377 2378 /(\.\d\d((?=0)|\d(?=\d)))/ 2379 1.230003938 2380 0: .23 2381 1: .23 2382 2: 2383 1.875000282 2384 0: .875 2385 1: .875 2386 2: 5 2387 *** Failers 2388 No match 2389 1.235 2390 No match 2391 2392 /a(?)b/ 2393 ab 2394 0: ab 2395 2396 /\b(foo)\s+(\w+)/i 2397 Food is on the foo table 2398 0: foo table 2399 1: foo 2400 2: table 2401 2402 /foo(.*)bar/ 2403 The food is under the bar in the barn. 2404 0: food is under the bar in the bar 2405 1: d is under the bar in the 2406 2407 /foo(.*?)bar/ 2408 The food is under the bar in the barn. 2409 0: food is under the bar 2410 1: d is under the 2411 2412 /(.*)(\d*)/ 2413 I have 2 numbers: 53147 2414 0: I have 2 numbers: 53147 2415 1: I have 2 numbers: 53147 2416 2: 2417 2418 /(.*)(\d+)/ 2419 I have 2 numbers: 53147 2420 0: I have 2 numbers: 53147 2421 1: I have 2 numbers: 5314 2422 2: 7 2423 2424 /(.*?)(\d*)/ 2425 I have 2 numbers: 53147 2426 0: 2427 1: 2428 2: 2429 2430 /(.*?)(\d+)/ 2431 I have 2 numbers: 53147 2432 0: I have 2 2433 1: I have 2434 2: 2 2435 2436 /(.*)(\d+)$/ 2437 I have 2 numbers: 53147 2438 0: I have 2 numbers: 53147 2439 1: I have 2 numbers: 5314 2440 2: 7 2441 2442 /(.*?)(\d+)$/ 2443 I have 2 numbers: 53147 2444 0: I have 2 numbers: 53147 2445 1: I have 2 numbers: 2446 2: 53147 2447 2448 /(.*)\b(\d+)$/ 2449 I have 2 numbers: 53147 2450 0: I have 2 numbers: 53147 2451 1: I have 2 numbers: 2452 2: 53147 2453 2454 /(.*\D)(\d+)$/ 2455 I have 2 numbers: 53147 2456 0: I have 2 numbers: 53147 2457 1: I have 2 numbers: 2458 2: 53147 2459 2460 /^\D*(?!123)/ 2461 ABC123 2462 0: AB 2463 2464 /^(\D*)(?=\d)(?!123)/ 2465 ABC445 2466 0: ABC 2467 1: ABC 2468 *** Failers 2469 No match 2470 ABC123 2471 No match 2472 2473 /^[W-]46]/ 2474 W46]789 2475 0: W46] 2476 -46]789 2477 0: -46] 2478 *** Failers 2479 No match 2480 Wall 2481 No match 2482 Zebra 2483 No match 2484 42 2485 No match 2486 [abcd] 2487 No match 2488 ]abcd[ 2489 No match 2490 2491 /^[W-\]46]/ 2492 W46]789 2493 0: W 2494 Wall 2495 0: W 2496 Zebra 2497 0: Z 2498 Xylophone 2499 0: X 2500 42 2501 0: 4 2502 [abcd] 2503 0: [ 2504 ]abcd[ 2505 0: ] 2506 \\backslash 2507 0: \ 2508 *** Failers 2509 No match 2510 -46]789 2511 No match 2512 well 2513 No match 2514 2515 /\d\d\/\d\d\/\d\d\d\d/ 2516 01/01/2000 2517 0: 01/01/2000 2518 2519 /word (?:[a-zA-Z0-9]+ ){0,10}otherword/ 2520 word cat dog elephant mussel cow horse canary baboon snake shark otherword 2521 0: word cat dog elephant mussel cow horse canary baboon snake shark otherword 2522 word cat dog elephant mussel cow horse canary baboon snake shark 2523 No match 2524 2525 /word (?:[a-zA-Z0-9]+ ){0,300}otherword/ 2526 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 2527 No match 2528 2529 /^(a){0,0}/ 2530 bcd 2531 0: 2532 abc 2533 0: 2534 aab 2535 0: 2536 2537 /^(a){0,1}/ 2538 bcd 2539 0: 2540 abc 2541 0: a 2542 1: a 2543 aab 2544 0: a 2545 1: a 2546 2547 /^(a){0,2}/ 2548 bcd 2549 0: 2550 abc 2551 0: a 2552 1: a 2553 aab 2554 0: aa 2555 1: a 2556 2557 /^(a){0,3}/ 2558 bcd 2559 0: 2560 abc 2561 0: a 2562 1: a 2563 aab 2564 0: aa 2565 1: a 2566 aaa 2567 0: aaa 2568 1: a 2569 2570 /^(a){0,}/ 2571 bcd 2572 0: 2573 abc 2574 0: a 2575 1: a 2576 aab 2577 0: aa 2578 1: a 2579 aaa 2580 0: aaa 2581 1: a 2582 aaaaaaaa 2583 0: aaaaaaaa 2584 1: a 2585 2586 /^(a){1,1}/ 2587 bcd 2588 No match 2589 abc 2590 0: a 2591 1: a 2592 aab 2593 0: a 2594 1: a 2595 2596 /^(a){1,2}/ 2597 bcd 2598 No match 2599 abc 2600 0: a 2601 1: a 2602 aab 2603 0: aa 2604 1: a 2605 2606 /^(a){1,3}/ 2607 bcd 2608 No match 2609 abc 2610 0: a 2611 1: a 2612 aab 2613 0: aa 2614 1: a 2615 aaa 2616 0: aaa 2617 1: a 2618 2619 /^(a){1,}/ 2620 bcd 2621 No match 2622 abc 2623 0: a 2624 1: a 2625 aab 2626 0: aa 2627 1: a 2628 aaa 2629 0: aaa 2630 1: a 2631 aaaaaaaa 2632 0: aaaaaaaa 2633 1: a 2634 2635 /.*\.gif/ 2636 borfle\nbib.gif\nno 2637 0: bib.gif 2638 2639 /.{0,}\.gif/ 2640 borfle\nbib.gif\nno 2641 0: bib.gif 2642 2643 /.*\.gif/m 2644 borfle\nbib.gif\nno 2645 0: bib.gif 2646 2647 /.*\.gif/s 2648 borfle\nbib.gif\nno 2649 0: borfle\x0abib.gif 2650 2651 /.*\.gif/ms 2652 borfle\nbib.gif\nno 2653 0: borfle\x0abib.gif 2654 2655 /.*$/ 2656 borfle\nbib.gif\nno 2657 0: no 2658 2659 /.*$/m 2660 borfle\nbib.gif\nno 2661 0: borfle 2662 2663 /.*$/s 2664 borfle\nbib.gif\nno 2665 0: borfle\x0abib.gif\x0ano 2666 2667 /.*$/ms 2668 borfle\nbib.gif\nno 2669 0: borfle\x0abib.gif\x0ano 2670 2671 /.*$/ 2672 borfle\nbib.gif\nno\n 2673 0: no 2674 2675 /.*$/m 2676 borfle\nbib.gif\nno\n 2677 0: borfle 2678 2679 /.*$/s 2680 borfle\nbib.gif\nno\n 2681 0: borfle\x0abib.gif\x0ano\x0a 2682 2683 /.*$/ms 2684 borfle\nbib.gif\nno\n 2685 0: borfle\x0abib.gif\x0ano\x0a 2686 2687 /(.*X|^B)/ 2688 abcde\n1234Xyz 2689 0: 1234X 2690 1: 1234X 2691 BarFoo 2692 0: B 2693 1: B 2694 *** Failers 2695 No match 2696 abcde\nBar 2697 No match 2698 2699 /(.*X|^B)/m 2700 abcde\n1234Xyz 2701 0: 1234X 2702 1: 1234X 2703 BarFoo 2704 0: B 2705 1: B 2706 abcde\nBar 2707 0: B 2708 1: B 2709 2710 /(.*X|^B)/s 2711 abcde\n1234Xyz 2712 0: abcde\x0a1234X 2713 1: abcde\x0a1234X 2714 BarFoo 2715 0: B 2716 1: B 2717 *** Failers 2718 No match 2719 abcde\nBar 2720 No match 2721 2722 /(.*X|^B)/ms 2723 abcde\n1234Xyz 2724 0: abcde\x0a1234X 2725 1: abcde\x0a1234X 2726 BarFoo 2727 0: B 2728 1: B 2729 abcde\nBar 2730 0: B 2731 1: B 2732 2733 /(?s)(.*X|^B)/ 2734 abcde\n1234Xyz 2735 0: abcde\x0a1234X 2736 1: abcde\x0a1234X 2737 BarFoo 2738 0: B 2739 1: B 2740 *** Failers 2741 No match 2742 abcde\nBar 2743 No match 2744 2745 /(?s:.*X|^B)/ 2746 abcde\n1234Xyz 2747 0: abcde\x0a1234X 2748 BarFoo 2749 0: B 2750 *** Failers 2751 No match 2752 abcde\nBar 2753 No match 2754 2755 /^.*B/ 2756 **** Failers 2757 No match 2758 abc\nB 2759 No match 2760 2761 /(?s)^.*B/ 2762 abc\nB 2763 0: abc\x0aB 2764 2765 /(?m)^.*B/ 2766 abc\nB 2767 0: B 2768 2769 /(?ms)^.*B/ 2770 abc\nB 2771 0: abc\x0aB 2772 2773 /(?ms)^B/ 2774 abc\nB 2775 0: B 2776 2777 /(?s)B$/ 2778 B\n 2779 0: B 2780 2781 /^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/ 2782 123456654321 2783 0: 123456654321 2784 2785 /^\d\d\d\d\d\d\d\d\d\d\d\d/ 2786 123456654321 2787 0: 123456654321 2788 2789 /^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/ 2790 123456654321 2791 0: 123456654321 2792 2793 /^[abc]{12}/ 2794 abcabcabcabc 2795 0: abcabcabcabc 2796 2797 /^[a-c]{12}/ 2798 abcabcabcabc 2799 0: abcabcabcabc 2800 2801 /^(a|b|c){12}/ 2802 abcabcabcabc 2803 0: abcabcabcabc 2804 1: c 2805 2806 /^[abcdefghijklmnopqrstuvwxy0123456789]/ 2807 n 2808 0: n 2809 *** Failers 2810 No match 2811 z 2812 No match 2813 2814 /abcde{0,0}/ 2815 abcd 2816 0: abcd 2817 *** Failers 2818 No match 2819 abce 2820 No match 2821 2822 /ab[cd]{0,0}e/ 2823 abe 2824 0: abe 2825 *** Failers 2826 No match 2827 abcde 2828 No match 2829 2830 /ab(c){0,0}d/ 2831 abd 2832 0: abd 2833 *** Failers 2834 No match 2835 abcd 2836 No match 2837 2838 /a(b*)/ 2839 a 2840 0: a 2841 1: 2842 ab 2843 0: ab 2844 1: b 2845 abbbb 2846 0: abbbb 2847 1: bbbb 2848 *** Failers 2849 0: a 2850 1: 2851 bbbbb 2852 No match 2853 2854 /ab\d{0}e/ 2855 abe 2856 0: abe 2857 *** Failers 2858 No match 2859 ab1e 2860 No match 2861 2862 /"([^\\"]+|\\.)*"/ 2863 the \"quick\" brown fox 2864 0: "quick" 2865 1: quick 2866 \"the \\\"quick\\\" brown fox\" 2867 0: "the \"quick\" brown fox" 2868 1: brown fox 2869 2870 /.*?/g+ 2871 abc 2872 0: 2873 0+ abc 2874 0: a 2875 0+ bc 2876 0: 2877 0+ bc 2878 0: b 2879 0+ c 2880 0: 2881 0+ c 2882 0: c 2883 0+ 2884 0: 2885 0+ 2886 2887 /\b/g+ 2888 abc 2889 0: 2890 0+ abc 2891 0: 2892 0+ 2893 2894 /\b/+g 2895 abc 2896 0: 2897 0+ abc 2898 0: 2899 0+ 2900 2901 //g 2902 abc 2903 0: 2904 0: 2905 0: 2906 0: 2907 2908 /<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 2909 <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> 2910 0: <TR BGCOLOR='#DBE9E9'><TD align=left valign=top>43.<a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)</a></TD><TD align=left valign=top>Lega lstaff.com</TD><TD align=left valign=top>CA - Statewide</TD></TR> 2911 1: BGCOLOR='#DBE9E9' 2912 2: align=left valign=top 2913 3: 43. 2914 4: <a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286) 2915 5: 2916 6: 2917 7: <unset> 2918 8: align=left valign=top 2919 9: Lega lstaff.com 2920 10: align=left valign=top 2921 11: CA - Statewide 2922 2923 /a[^a]b/ 2924 acb 2925 0: acb 2926 a\nb 2927 0: a\x0ab 2928 2929 /a.b/ 2930 acb 2931 0: acb 2932 *** Failers 2933 No match 2934 a\nb 2935 No match 2936 2937 /a[^a]b/s 2938 acb 2939 0: acb 2940 a\nb 2941 0: a\x0ab 2942 2943 /a.b/s 2944 acb 2945 0: acb 2946 a\nb 2947 0: a\x0ab 2948 2949 /^(b+?|a){1,2}?c/ 2950 bac 2951 0: bac 2952 1: a 2953 bbac 2954 0: bbac 2955 1: a 2956 bbbac 2957 0: bbbac 2958 1: a 2959 bbbbac 2960 0: bbbbac 2961 1: a 2962 bbbbbac 2963 0: bbbbbac 2964 1: a 2965 2966 /^(b+|a){1,2}?c/ 2967 bac 2968 0: bac 2969 1: a 2970 bbac 2971 0: bbac 2972 1: a 2973 bbbac 2974 0: bbbac 2975 1: a 2976 bbbbac 2977 0: bbbbac 2978 1: a 2979 bbbbbac 2980 0: bbbbbac 2981 1: a 2982 2983 /(?!\A)x/m 2984 x\nb\n 2985 No match 2986 a\bx\n 2987 0: x 2988 2989 /\x0{ab}/ 2990 \0{ab} 2991 0: \x00{ab} 2992 2993 /(A|B)*?CD/ 2994 CD 2995 0: CD 2996 2997 /(A|B)*CD/ 2998 CD 2999 0: CD 3000 3001 /(AB)*?\1/ 3002 ABABAB 3003 0: ABAB 3004 1: AB 3005 3006 /(AB)*\1/ 3007 ABABAB 3008 0: ABABAB 3009 1: AB 3010 3011 /(?<!bar)foo/ 3012 foo 3013 0: foo 3014 catfood 3015 0: foo 3016 arfootle 3017 0: foo 3018 rfoosh 3019 0: foo 3020 *** Failers 3021 No match 3022 barfoo 3023 No match 3024 towbarfoo 3025 No match 3026 3027 /\w{3}(?<!bar)foo/ 3028 catfood 3029 0: catfoo 3030 *** Failers 3031 No match 3032 foo 3033 No match 3034 barfoo 3035 No match 3036 towbarfoo 3037 No match 3038 3039 /(?<=(foo)a)bar/ 3040 fooabar 3041 0: bar 3042 1: foo 3043 *** Failers 3044 No match 3045 bar 3046 No match 3047 foobbar 3048 No match 3049 3050 /\Aabc\z/m 3051 abc 3052 0: abc 3053 *** Failers 3054 No match 3055 abc\n 3056 No match 3057 qqq\nabc 3058 No match 3059 abc\nzzz 3060 No match 3061 qqq\nabc\nzzz 3062 No match 3063 3064 "(?>.*/)foo" 3065 /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/ 3066 No match 3067 3068 "(?>.*/)foo" 3069 /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo 3070 0: /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo 3071 3072 /(?>(\.\d\d[1-9]?))\d+/ 3073 1.230003938 3074 0: .230003938 3075 1: .23 3076 1.875000282 3077 0: .875000282 3078 1: .875 3079 *** Failers 3080 No match 3081 1.235 3082 No match 3083 3084 /^((?>\w+)|(?>\s+))*$/ 3085 now is the time for all good men to come to the aid of the party 3086 0: now is the time for all good men to come to the aid of the party 3087 1: party 3088 *** Failers 3089 No match 3090 this is not a line with only words and spaces! 3091 No match 3092 3093 /(\d+)(\w)/ 3094 12345a 3095 0: 12345a 3096 1: 12345 3097 2: a 3098 12345+ 3099 0: 12345 3100 1: 1234 3101 2: 5 3102 3103 /((?>\d+))(\w)/ 3104 12345a 3105 0: 12345a 3106 1: 12345 3107 2: a 3108 *** Failers 3109 No match 3110 12345+ 3111 No match 3112 3113 /(?>a+)b/ 3114 aaab 3115 0: aaab 3116 3117 /((?>a+)b)/ 3118 aaab 3119 0: aaab 3120 1: aaab 3121 3122 /(?>(a+))b/ 3123 aaab 3124 0: aaab 3125 1: aaa 3126 3127 /(?>b)+/ 3128 aaabbbccc 3129 0: bbb 3130 3131 /(?>a+|b+|c+)*c/ 3132 aaabbbbccccd 3133 0: aaabbbbc 3134 3135 /((?>[^()]+)|\([^()]*\))+/ 3136 ((abc(ade)ufh()()x 3137 0: abc(ade)ufh()()x 3138 1: x 3139 3140 /\(((?>[^()]+)|\([^()]+\))+\)/ 3141 (abc) 3142 0: (abc) 3143 1: abc 3144 (abc(def)xyz) 3145 0: (abc(def)xyz) 3146 1: xyz 3147 *** Failers 3148 No match 3149 ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3150 No match 3151 3152 /a(?-i)b/i 3153 ab 3154 0: ab 3155 Ab 3156 0: Ab 3157 *** Failers 3158 No match 3159 aB 3160 No match 3161 AB 3162 No match 3163 3164 /(a (?x)b c)d e/ 3165 a bcd e 3166 0: a bcd e 3167 1: a bc 3168 *** Failers 3169 No match 3170 a b cd e 3171 No match 3172 abcd e 3173 No match 3174 a bcde 3175 No match 3176 3177 /(a b(?x)c d (?-x)e f)/ 3178 a bcde f 3179 0: a bcde f 3180 1: a bcde f 3181 *** Failers 3182 No match 3183 abcdef 3184 No match 3185 3186 /(a(?i)b)c/ 3187 abc 3188 0: abc 3189 1: ab 3190 aBc 3191 0: aBc 3192 1: aB 3193 *** Failers 3194 No match 3195 abC 3196 No match 3197 aBC 3198 No match 3199 Abc 3200 No match 3201 ABc 3202 No match 3203 ABC 3204 No match 3205 AbC 3206 No match 3207 3208 /a(?i:b)c/ 3209 abc 3210 0: abc 3211 aBc 3212 0: aBc 3213 *** Failers 3214 No match 3215 ABC 3216 No match 3217 abC 3218 No match 3219 aBC 3220 No match 3221 3222 /a(?i:b)*c/ 3223 aBc 3224 0: aBc 3225 aBBc 3226 0: aBBc 3227 *** Failers 3228 No match 3229 aBC 3230 No match 3231 aBBC 3232 No match 3233 3234 /a(?=b(?i)c)\w\wd/ 3235 abcd 3236 0: abcd 3237 abCd 3238 0: abCd 3239 *** Failers 3240 No match 3241 aBCd 3242 No match 3243 abcD 3244 No match 3245 3246 /(?s-i:more.*than).*million/i 3247 more than million 3248 0: more than million 3249 more than MILLION 3250 0: more than MILLION 3251 more \n than Million 3252 0: more \x0a than Million 3253 *** Failers 3254 No match 3255 MORE THAN MILLION 3256 No match 3257 more \n than \n million 3258 No match 3259 3260 /(?:(?s-i)more.*than).*million/i 3261 more than million 3262 0: more than million 3263 more than MILLION 3264 0: more than MILLION 3265 more \n than Million 3266 0: more \x0a than Million 3267 *** Failers 3268 No match 3269 MORE THAN MILLION 3270 No match 3271 more \n than \n million 3272 No match 3273 3274 /(?>a(?i)b+)+c/ 3275 abc 3276 0: abc 3277 aBbc 3278 0: aBbc 3279 aBBc 3280 0: aBBc 3281 *** Failers 3282 No match 3283 Abc 3284 No match 3285 abAb 3286 No match 3287 abbC 3288 No match 3289 3290 /(?=a(?i)b)\w\wc/ 3291 abc 3292 0: abc 3293 aBc 3294 0: aBc 3295 *** Failers 3296 No match 3297 Ab 3298 No match 3299 abC 3300 No match 3301 aBC 3302 No match 3303 3304 /(?<=a(?i)b)(\w\w)c/ 3305 abxxc 3306 0: xxc 3307 1: xx 3308 aBxxc 3309 0: xxc 3310 1: xx 3311 *** Failers 3312 No match 3313 Abxxc 3314 No match 3315 ABxxc 3316 No match 3317 abxxC 3318 No match 3319 3320 /(?:(a)|b)(?(1)A|B)/ 3321 aA 3322 0: aA 3323 1: a 3324 bB 3325 0: bB 3326 *** Failers 3327 No match 3328 aB 3329 No match 3330 bA 3331 No match 3332 3333 /^(a)?(?(1)a|b)+$/ 3334 aa 3335 0: aa 3336 1: a 3337 b 3338 0: b 3339 bb 3340 0: bb 3341 *** Failers 3342 No match 3343 ab 3344 No match 3345 3346 /^(?(?=abc)\w{3}:|\d\d)$/ 3347 abc: 3348 0: abc: 3349 12 3350 0: 12 3351 *** Failers 3352 No match 3353 123 3354 No match 3355 xyz 3356 No match 3357 3358 /^(?(?!abc)\d\d|\w{3}:)$/ 3359 abc: 3360 0: abc: 3361 12 3362 0: 12 3363 *** Failers 3364 No match 3365 123 3366 No match 3367 xyz 3368 No match 3369 3370 /(?(?<=foo)bar|cat)/ 3371 foobar 3372 0: bar 3373 cat 3374 0: cat 3375 fcat 3376 0: cat 3377 focat 3378 0: cat 3379 *** Failers 3380 No match 3381 foocat 3382 No match 3383 3384 /(?(?<!foo)cat|bar)/ 3385 foobar 3386 0: bar 3387 cat 3388 0: cat 3389 fcat 3390 0: cat 3391 focat 3392 0: cat 3393 *** Failers 3394 No match 3395 foocat 3396 No match 3397 3398 /( \( )? [^()]+ (?(1) \) |) /x 3399 abcd 3400 0: abcd 3401 (abcd) 3402 0: (abcd) 3403 1: ( 3404 the quick (abcd) fox 3405 0: the quick 3406 (abcd 3407 0: abcd 3408 3409 /( \( )? [^()]+ (?(1) \) ) /x 3410 abcd 3411 0: abcd 3412 (abcd) 3413 0: (abcd) 3414 1: ( 3415 the quick (abcd) fox 3416 0: the quick 3417 (abcd 3418 0: abcd 3419 3420 /^(?(2)a|(1)(2))+$/ 3421 12 3422 0: 12 3423 1: 1 3424 2: 2 3425 12a 3426 0: 12a 3427 1: 1 3428 2: 2 3429 12aa 3430 0: 12aa 3431 1: 1 3432 2: 2 3433 *** Failers 3434 No match 3435 1234 3436 No match 3437 3438 /((?i)blah)\s+\1/ 3439 blah blah 3440 0: blah blah 3441 1: blah 3442 BLAH BLAH 3443 0: BLAH BLAH 3444 1: BLAH 3445 Blah Blah 3446 0: Blah Blah 3447 1: Blah 3448 blaH blaH 3449 0: blaH blaH 3450 1: blaH 3451 *** Failers 3452 No match 3453 blah BLAH 3454 No match 3455 Blah blah 3456 No match 3457 blaH blah 3458 No match 3459 3460 /((?i)blah)\s+(?i:\1)/ 3461 blah blah 3462 0: blah blah 3463 1: blah 3464 BLAH BLAH 3465 0: BLAH BLAH 3466 1: BLAH 3467 Blah Blah 3468 0: Blah Blah 3469 1: Blah 3470 blaH blaH 3471 0: blaH blaH 3472 1: blaH 3473 blah BLAH 3474 0: blah BLAH 3475 1: blah 3476 Blah blah 3477 0: Blah blah 3478 1: Blah 3479 blaH blah 3480 0: blaH blah 3481 1: blaH 3482 3483 /(?>a*)*/ 3484 a 3485 0: a 3486 aa 3487 0: aa 3488 aaaa 3489 0: aaaa 3490 3491 /(abc|)+/ 3492 abc 3493 0: abc 3494 1: 3495 abcabc 3496 0: abcabc 3497 1: 3498 abcabcabc 3499 0: abcabcabc 3500 1: 3501 xyz 3502 0: 3503 1: 3504 3505 /([a]*)*/ 3506 a 3507 0: a 3508 1: 3509 aaaaa 3510 0: aaaaa 3511 1: 3512 3513 /([ab]*)*/ 3514 a 3515 0: a 3516 1: 3517 b 3518 0: b 3519 1: 3520 ababab 3521 0: ababab 3522 1: 3523 aaaabcde 3524 0: aaaab 3525 1: 3526 bbbb 3527 0: bbbb 3528 1: 3529 3530 /([^a]*)*/ 3531 b 3532 0: b 3533 1: 3534 bbbb 3535 0: bbbb 3536 1: 3537 aaa 3538 0: 3539 1: 3540 3541 /([^ab]*)*/ 3542 cccc 3543 0: cccc 3544 1: 3545 abab 3546 0: 3547 1: 3548 3549 /([a]*?)*/ 3550 a 3551 0: 3552 1: 3553 aaaa 3554 0: 3555 1: 3556 3557 /([ab]*?)*/ 3558 a 3559 0: 3560 1: 3561 b 3562 0: 3563 1: 3564 abab 3565 0: 3566 1: 3567 baba 3568 0: 3569 1: 3570 3571 /([^a]*?)*/ 3572 b 3573 0: 3574 1: 3575 bbbb 3576 0: 3577 1: 3578 aaa 3579 0: 3580 1: 3581 3582 /([^ab]*?)*/ 3583 c 3584 0: 3585 1: 3586 cccc 3587 0: 3588 1: 3589 baba 3590 0: 3591 1: 3592 3593 /(?>a*)*/ 3594 a 3595 0: a 3596 aaabcde 3597 0: aaa 3598 3599 /((?>a*))*/ 3600 aaaaa 3601 0: aaaaa 3602 1: 3603 aabbaa 3604 0: aa 3605 1: 3606 3607 /((?>a*?))*/ 3608 aaaaa 3609 0: 3610 1: 3611 aabbaa 3612 0: 3613 1: 3614 3615 /(?(?=[^a-z]+[a-z]) \d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} ) /x 3616 12-sep-98 3617 0: 12-sep-98 3618 12-09-98 3619 0: 12-09-98 3620 *** Failers 3621 No match 3622 sep-12-98 3623 No match 3624 3625 /(?<=(foo))bar\1/ 3626 foobarfoo 3627 0: barfoo 3628 1: foo 3629 foobarfootling 3630 0: barfoo 3631 1: foo 3632 *** Failers 3633 No match 3634 foobar 3635 No match 3636 barfoo 3637 No match 3638 3639 /(?i:saturday|sunday)/ 3640 saturday 3641 0: saturday 3642 sunday 3643 0: sunday 3644 Saturday 3645 0: Saturday 3646 Sunday 3647 0: Sunday 3648 SATURDAY 3649 0: SATURDAY 3650 SUNDAY 3651 0: SUNDAY 3652 SunDay 3653 0: SunDay 3654 3655 /(a(?i)bc|BB)x/ 3656 abcx 3657 0: abcx 3658 1: abc 3659 aBCx 3660 0: aBCx 3661 1: aBC 3662 bbx 3663 0: bbx 3664 1: bb 3665 BBx 3666 0: BBx 3667 1: BB 3668 *** Failers 3669 No match 3670 abcX 3671 No match 3672 aBCX 3673 No match 3674 bbX 3675 No match 3676 BBX 3677 No match 3678 3679 /^([ab](?i)[cd]|[ef])/ 3680 ac 3681 0: ac 3682 1: ac 3683 aC 3684 0: aC 3685 1: aC 3686 bD 3687 0: bD 3688 1: bD 3689 elephant 3690 0: e 3691 1: e 3692 Europe 3693 0: E 3694 1: E 3695 frog 3696 0: f 3697 1: f 3698 France 3699 0: F 3700 1: F 3701 *** Failers 3702 No match 3703 Africa 3704 No match 3705 3706 /^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/ 3707 ab 3708 0: ab 3709 1: ab 3710 aBd 3711 0: aBd 3712 1: aBd 3713 xy 3714 0: xy 3715 1: xy 3716 xY 3717 0: xY 3718 1: xY 3719 zebra 3720 0: z 3721 1: z 3722 Zambesi 3723 0: Z 3724 1: Z 3725 *** Failers 3726 No match 3727 aCD 3728 No match 3729 XY 3730 No match 3731 3732 /(?<=foo\n)^bar/m 3733 foo\nbar 3734 0: bar 3735 *** Failers 3736 No match 3737 bar 3738 No match 3739 baz\nbar 3740 No match 3741 3742 /(?<=(?<!foo)bar)baz/ 3743 barbaz 3744 0: baz 3745 barbarbaz 3746 0: baz 3747 koobarbaz 3748 0: baz 3749 *** Failers 3750 No match 3751 baz 3752 No match 3753 foobarbaz 3754 No match 3755 3756 /The cases of aaaa and aaaaaa are missed out below because Perl does things/ 3757 /differently. We know that odd, and maybe incorrect, things happen with/ 3758 No match 3759 /recursive references in Perl, as far as 5.11.3 - see some stuff in test #2./ 3760 No match 3761 3762 /^(a\1?){4}$/ 3763 a 3764 No match 3765 aa 3766 No match 3767 aaa 3768 No match 3769 aaaaa 3770 0: aaaaa 3771 1: a 3772 aaaaaaa 3773 0: aaaaaaa 3774 1: a 3775 aaaaaaaa 3776 No match 3777 aaaaaaaaa 3778 No match 3779 aaaaaaaaaa 3780 0: aaaaaaaaaa 3781 1: aaaa 3782 aaaaaaaaaaa 3783 No match 3784 aaaaaaaaaaaa 3785 No match 3786 aaaaaaaaaaaaa 3787 No match 3788 aaaaaaaaaaaaaa 3789 No match 3790 aaaaaaaaaaaaaaa 3791 No match 3792 aaaaaaaaaaaaaaaa 3793 No match 3794 3795 /^(a\1?)(a\1?)(a\2?)(a\3?)$/ 3796 a 3797 No match 3798 aa 3799 No match 3800 aaa 3801 No match 3802 aaaa 3803 0: aaaa 3804 1: a 3805 2: a 3806 3: a 3807 4: a 3808 aaaaa 3809 0: aaaaa 3810 1: a 3811 2: aa 3812 3: a 3813 4: a 3814 aaaaaa 3815 0: aaaaaa 3816 1: a 3817 2: aa 3818 3: a 3819 4: aa 3820 aaaaaaa 3821 0: aaaaaaa 3822 1: a 3823 2: aa 3824 3: aaa 3825 4: a 3826 aaaaaaaa 3827 No match 3828 aaaaaaaaa 3829 No match 3830 aaaaaaaaaa 3831 0: aaaaaaaaaa 3832 1: a 3833 2: aa 3834 3: aaa 3835 4: aaaa 3836 aaaaaaaaaaa 3837 No match 3838 aaaaaaaaaaaa 3839 No match 3840 aaaaaaaaaaaaa 3841 No match 3842 aaaaaaaaaaaaaa 3843 No match 3844 aaaaaaaaaaaaaaa 3845 No match 3846 aaaaaaaaaaaaaaaa 3847 No match 3848 3849 /The following tests are taken from the Perl 5.005 test suite; some of them/ 3850 /are compatible with 5.004, but I'd rather not have to sort them out./ 3851 No match 3852 3853 /abc/ 3854 abc 3855 0: abc 3856 xabcy 3857 0: abc 3858 ababc 3859 0: abc 3860 *** Failers 3861 No match 3862 xbc 3863 No match 3864 axc 3865 No match 3866 abx 3867 No match 3868 3869 /ab*c/ 3870 abc 3871 0: abc 3872 3873 /ab*bc/ 3874 abc 3875 0: abc 3876 abbc 3877 0: abbc 3878 abbbbc 3879 0: abbbbc 3880 3881 /.{1}/ 3882 abbbbc 3883 0: a 3884 3885 /.{3,4}/ 3886 abbbbc 3887 0: abbb 3888 3889 /ab{0,}bc/ 3890 abbbbc 3891 0: abbbbc 3892 3893 /ab+bc/ 3894 abbc 3895 0: abbc 3896 *** Failers 3897 No match 3898 abc 3899 No match 3900 abq 3901 No match 3902 3903 /ab{1,}bc/ 3904 3905 /ab+bc/ 3906 abbbbc 3907 0: abbbbc 3908 3909 /ab{1,}bc/ 3910 abbbbc 3911 0: abbbbc 3912 3913 /ab{1,3}bc/ 3914 abbbbc 3915 0: abbbbc 3916 3917 /ab{3,4}bc/ 3918 abbbbc 3919 0: abbbbc 3920 3921 /ab{4,5}bc/ 3922 *** Failers 3923 No match 3924 abq 3925 No match 3926 abbbbc 3927 No match 3928 3929 /ab?bc/ 3930 abbc 3931 0: abbc 3932 abc 3933 0: abc 3934 3935 /ab{0,1}bc/ 3936 abc 3937 0: abc 3938 3939 /ab?bc/ 3940 3941 /ab?c/ 3942 abc 3943 0: abc 3944 3945 /ab{0,1}c/ 3946 abc 3947 0: abc 3948 3949 /^abc$/ 3950 abc 3951 0: abc 3952 *** Failers 3953 No match 3954 abbbbc 3955 No match 3956 abcc 3957 No match 3958 3959 /^abc/ 3960 abcc 3961 0: abc 3962 3963 /^abc$/ 3964 3965 /abc$/ 3966 aabc 3967 0: abc 3968 *** Failers 3969 No match 3970 aabc 3971 0: abc 3972 aabcd 3973 No match 3974 3975 /^/ 3976 abc 3977 0: 3978 3979 /$/ 3980 abc 3981 0: 3982 3983 /a.c/ 3984 abc 3985 0: abc 3986 axc 3987 0: axc 3988 3989 /a.*c/ 3990 axyzc 3991 0: axyzc 3992 3993 /a[bc]d/ 3994 abd 3995 0: abd 3996 *** Failers 3997 No match 3998 axyzd 3999 No match 4000 abc 4001 No match 4002 4003 /a[b-d]e/ 4004 ace 4005 0: ace 4006 4007 /a[b-d]/ 4008 aac 4009 0: ac 4010 4011 /a[-b]/ 4012 a- 4013 0: a- 4014 4015 /a[b-]/ 4016 a- 4017 0: a- 4018 4019 /a]/ 4020 a] 4021 0: a] 4022 4023 /a[]]b/ 4024 a]b 4025 0: a]b 4026 4027 /a[^bc]d/ 4028 aed 4029 0: aed 4030 *** Failers 4031 No match 4032 abd 4033 No match 4034 abd 4035 No match 4036 4037 /a[^-b]c/ 4038 adc 4039 0: adc 4040 4041 /a[^]b]c/ 4042 adc 4043 0: adc 4044 *** Failers 4045 No match 4046 a-c 4047 0: a-c 4048 a]c 4049 No match 4050 4051 /\ba\b/ 4052 a- 4053 0: a 4054 -a 4055 0: a 4056 -a- 4057 0: a 4058 4059 /\by\b/ 4060 *** Failers 4061 No match 4062 xy 4063 No match 4064 yz 4065 No match 4066 xyz 4067 No match 4068 4069 /\Ba\B/ 4070 *** Failers 4071 0: a 4072 a- 4073 No match 4074 -a 4075 No match 4076 -a- 4077 No match 4078 4079 /\By\b/ 4080 xy 4081 0: y 4082 4083 /\by\B/ 4084 yz 4085 0: y 4086 4087 /\By\B/ 4088 xyz 4089 0: y 4090 4091 /\w/ 4092 a 4093 0: a 4094 4095 /\W/ 4096 - 4097 0: - 4098 *** Failers 4099 0: * 4100 - 4101 0: - 4102 a 4103 No match 4104 4105 /a\sb/ 4106 a b 4107 0: a b 4108 4109 /a\Sb/ 4110 a-b 4111 0: a-b 4112 *** Failers 4113 No match 4114 a-b 4115 0: a-b 4116 a b 4117 No match 4118 4119 /\d/ 4120 1 4121 0: 1 4122 4123 /\D/ 4124 - 4125 0: - 4126 *** Failers 4127 0: * 4128 - 4129 0: - 4130 1 4131 No match 4132 4133 /[\w]/ 4134 a 4135 0: a 4136 4137 /[\W]/ 4138 - 4139 0: - 4140 *** Failers 4141 0: * 4142 - 4143 0: - 4144 a 4145 No match 4146 4147 /a[\s]b/ 4148 a b 4149 0: a b 4150 4151 /a[\S]b/ 4152 a-b 4153 0: a-b 4154 *** Failers 4155 No match 4156 a-b 4157 0: a-b 4158 a b 4159 No match 4160 4161 /[\d]/ 4162 1 4163 0: 1 4164 4165 /[\D]/ 4166 - 4167 0: - 4168 *** Failers 4169 0: * 4170 - 4171 0: - 4172 1 4173 No match 4174 4175 /ab|cd/ 4176 abc 4177 0: ab 4178 abcd 4179 0: ab 4180 4181 /()ef/ 4182 def 4183 0: ef 4184 1: 4185 4186 /$b/ 4187 4188 /a\(b/ 4189 a(b 4190 0: a(b 4191 4192 /a\(*b/ 4193 ab 4194 0: ab 4195 a((b 4196 0: a((b 4197 4198 /a\\b/ 4199 a\b 4200 No match 4201 4202 /((a))/ 4203 abc 4204 0: a 4205 1: a 4206 2: a 4207 4208 /(a)b(c)/ 4209 abc 4210 0: abc 4211 1: a 4212 2: c 4213 4214 /a+b+c/ 4215 aabbabc 4216 0: abc 4217 4218 /a{1,}b{1,}c/ 4219 aabbabc 4220 0: abc 4221 4222 /a.+?c/ 4223 abcabc 4224 0: abc 4225 4226 /(a+|b)*/ 4227 ab 4228 0: ab 4229 1: b 4230 4231 /(a+|b){0,}/ 4232 ab 4233 0: ab 4234 1: b 4235 4236 /(a+|b)+/ 4237 ab 4238 0: ab 4239 1: b 4240 4241 /(a+|b){1,}/ 4242 ab 4243 0: ab 4244 1: b 4245 4246 /(a+|b)?/ 4247 ab 4248 0: a 4249 1: a 4250 4251 /(a+|b){0,1}/ 4252 ab 4253 0: a 4254 1: a 4255 4256 /[^ab]*/ 4257 cde 4258 0: cde 4259 4260 /abc/ 4261 *** Failers 4262 No match 4263 b 4264 No match 4265 4266 4267 /a*/ 4268 4269 4270 /([abc])*d/ 4271 abbbcd 4272 0: abbbcd 4273 1: c 4274 4275 /([abc])*bcd/ 4276 abcd 4277 0: abcd 4278 1: a 4279 4280 /a|b|c|d|e/ 4281 e 4282 0: e 4283 4284 /(a|b|c|d|e)f/ 4285 ef 4286 0: ef 4287 1: e 4288 4289 /abcd*efg/ 4290 abcdefg 4291 0: abcdefg 4292 4293 /ab*/ 4294 xabyabbbz 4295 0: ab 4296 xayabbbz 4297 0: a 4298 4299 /(ab|cd)e/ 4300 abcde 4301 0: cde 4302 1: cd 4303 4304 /[abhgefdc]ij/ 4305 hij 4306 0: hij 4307 4308 /^(ab|cd)e/ 4309 4310 /(abc|)ef/ 4311 abcdef 4312 0: ef 4313 1: 4314 4315 /(a|b)c*d/ 4316 abcd 4317 0: bcd 4318 1: b 4319 4320 /(ab|ab*)bc/ 4321 abc 4322 0: abc 4323 1: a 4324 4325 /a([bc]*)c*/ 4326 abc 4327 0: abc 4328 1: bc 4329 4330 /a([bc]*)(c*d)/ 4331 abcd 4332 0: abcd 4333 1: bc 4334 2: d 4335 4336 /a([bc]+)(c*d)/ 4337 abcd 4338 0: abcd 4339 1: bc 4340 2: d 4341 4342 /a([bc]*)(c+d)/ 4343 abcd 4344 0: abcd 4345 1: b 4346 2: cd 4347 4348 /a[bcd]*dcdcde/ 4349 adcdcde 4350 0: adcdcde 4351 4352 /a[bcd]+dcdcde/ 4353 *** Failers 4354 No match 4355 abcde 4356 No match 4357 adcdcde 4358 No match 4359 4360 /(ab|a)b*c/ 4361 abc 4362 0: abc 4363 1: ab 4364 4365 /((a)(b)c)(d)/ 4366 abcd 4367 0: abcd 4368 1: abc 4369 2: a 4370 3: b 4371 4: d 4372 4373 /[a-zA-Z_][a-zA-Z0-9_]*/ 4374 alpha 4375 0: alpha 4376 4377 /^a(bc+|b[eh])g|.h$/ 4378 abh 4379 0: bh 4380 4381 /(bc+d$|ef*g.|h?i(j|k))/ 4382 effgz 4383 0: effgz 4384 1: effgz 4385 ij 4386 0: ij 4387 1: ij 4388 2: j 4389 reffgz 4390 0: effgz 4391 1: effgz 4392 *** Failers 4393 No match 4394 effg 4395 No match 4396 bcdd 4397 No match 4398 4399 /((((((((((a))))))))))/ 4400 a 4401 0: a 4402 1: a 4403 2: a 4404 3: a 4405 4: a 4406 5: a 4407 6: a 4408 7: a 4409 8: a 4410 9: a 4411 10: a 4412 4413 /((((((((((a))))))))))\10/ 4414 aa 4415 0: aa 4416 1: a 4417 2: a 4418 3: a 4419 4: a 4420 5: a 4421 6: a 4422 7: a 4423 8: a 4424 9: a 4425 10: a 4426 4427 /(((((((((a)))))))))/ 4428 a 4429 0: a 4430 1: a 4431 2: a 4432 3: a 4433 4: a 4434 5: a 4435 6: a 4436 7: a 4437 8: a 4438 9: a 4439 4440 /multiple words of text/ 4441 *** Failers 4442 No match 4443 aa 4444 No match 4445 uh-uh 4446 No match 4447 4448 /multiple words/ 4449 multiple words, yeah 4450 0: multiple words 4451 4452 /(.*)c(.*)/ 4453 abcde 4454 0: abcde 4455 1: ab 4456 2: de 4457 4458 /\((.*), (.*)\)/ 4459 (a, b) 4460 0: (a, b) 4461 1: a 4462 2: b 4463 4464 /[k]/ 4465 4466 /abcd/ 4467 abcd 4468 0: abcd 4469 4470 /a(bc)d/ 4471 abcd 4472 0: abcd 4473 1: bc 4474 4475 /a[-]?c/ 4476 ac 4477 0: ac 4478 4479 /(abc)\1/ 4480 abcabc 4481 0: abcabc 4482 1: abc 4483 4484 /([a-c]*)\1/ 4485 abcabc 4486 0: abcabc 4487 1: abc 4488 4489 /(a)|\1/ 4490 a 4491 0: a 4492 1: a 4493 *** Failers 4494 0: a 4495 1: a 4496 ab 4497 0: a 4498 1: a 4499 x 4500 No match 4501 4502 /(([a-c])b*?\2)*/ 4503 ababbbcbc 4504 0: ababb 4505 1: bb 4506 2: b 4507 4508 /(([a-c])b*?\2){3}/ 4509 ababbbcbc 4510 0: ababbbcbc 4511 1: cbc 4512 2: c 4513 4514 /((\3|b)\2(a)x)+/ 4515 aaaxabaxbaaxbbax 4516 0: bbax 4517 1: bbax 4518 2: b 4519 3: a 4520 4521 /((\3|b)\2(a)){2,}/ 4522 bbaababbabaaaaabbaaaabba 4523 0: bbaaaabba 4524 1: bba 4525 2: b 4526 3: a 4527 4528 /abc/i 4529 ABC 4530 0: ABC 4531 XABCY 4532 0: ABC 4533 ABABC 4534 0: ABC 4535 *** Failers 4536 No match 4537 aaxabxbaxbbx 4538 No match 4539 XBC 4540 No match 4541 AXC 4542 No match 4543 ABX 4544 No match 4545 4546 /ab*c/i 4547 ABC 4548 0: ABC 4549 4550 /ab*bc/i 4551 ABC 4552 0: ABC 4553 ABBC 4554 0: ABBC 4555 4556 /ab*?bc/i 4557 ABBBBC 4558 0: ABBBBC 4559 4560 /ab{0,}?bc/i 4561 ABBBBC 4562 0: ABBBBC 4563 4564 /ab+?bc/i 4565 ABBC 4566 0: ABBC 4567 4568 /ab+bc/i 4569 *** Failers 4570 No match 4571 ABC 4572 No match 4573 ABQ 4574 No match 4575 4576 /ab{1,}bc/i 4577 4578 /ab+bc/i 4579 ABBBBC 4580 0: ABBBBC 4581 4582 /ab{1,}?bc/i 4583 ABBBBC 4584 0: ABBBBC 4585 4586 /ab{1,3}?bc/i 4587 ABBBBC 4588 0: ABBBBC 4589 4590 /ab{3,4}?bc/i 4591 ABBBBC 4592 0: ABBBBC 4593 4594 /ab{4,5}?bc/i 4595 *** Failers 4596 No match 4597 ABQ 4598 No match 4599 ABBBBC 4600 No match 4601 4602 /ab??bc/i 4603 ABBC 4604 0: ABBC 4605 ABC 4606 0: ABC 4607 4608 /ab{0,1}?bc/i 4609 ABC 4610 0: ABC 4611 4612 /ab??bc/i 4613 4614 /ab??c/i 4615 ABC 4616 0: ABC 4617 4618 /ab{0,1}?c/i 4619 ABC 4620 0: ABC 4621 4622 /^abc$/i 4623 ABC 4624 0: ABC 4625 *** Failers 4626 No match 4627 ABBBBC 4628 No match 4629 ABCC 4630 No match 4631 4632 /^abc/i 4633 ABCC 4634 0: ABC 4635 4636 /^abc$/i 4637 4638 /abc$/i 4639 AABC 4640 0: ABC 4641 4642 /^/i 4643 ABC 4644 0: 4645 4646 /$/i 4647 ABC 4648 0: 4649 4650 /a.c/i 4651 ABC 4652 0: ABC 4653 AXC 4654 0: AXC 4655 4656 /a.*?c/i 4657 AXYZC 4658 0: AXYZC 4659 4660 /a.*c/i 4661 *** Failers 4662 No match 4663 AABC 4664 0: AABC 4665 AXYZD 4666 No match 4667 4668 /a[bc]d/i 4669 ABD 4670 0: ABD 4671 4672 /a[b-d]e/i 4673 ACE 4674 0: ACE 4675 *** Failers 4676 No match 4677 ABC 4678 No match 4679 ABD 4680 No match 4681 4682 /a[b-d]/i 4683 AAC 4684 0: AC 4685 4686 /a[-b]/i 4687 A- 4688 0: A- 4689 4690 /a[b-]/i 4691 A- 4692 0: A- 4693 4694 /a]/i 4695 A] 4696 0: A] 4697 4698 /a[]]b/i 4699 A]B 4700 0: A]B 4701 4702 /a[^bc]d/i 4703 AED 4704 0: AED 4705 4706 /a[^-b]c/i 4707 ADC 4708 0: ADC 4709 *** Failers 4710 No match 4711 ABD 4712 No match 4713 A-C 4714 No match 4715 4716 /a[^]b]c/i 4717 ADC 4718 0: ADC 4719 4720 /ab|cd/i 4721 ABC 4722 0: AB 4723 ABCD 4724 0: AB 4725 4726 /()ef/i 4727 DEF 4728 0: EF 4729 1: 4730 4731 /$b/i 4732 *** Failers 4733 No match 4734 A]C 4735 No match 4736 B 4737 No match 4738 4739 /a\(b/i 4740 A(B 4741 0: A(B 4742 4743 /a\(*b/i 4744 AB 4745 0: AB 4746 A((B 4747 0: A((B 4748 4749 /a\\b/i 4750 A\B 4751 No match 4752 4753 /((a))/i 4754 ABC 4755 0: A 4756 1: A 4757 2: A 4758 4759 /(a)b(c)/i 4760 ABC 4761 0: ABC 4762 1: A 4763 2: C 4764 4765 /a+b+c/i 4766 AABBABC 4767 0: ABC 4768 4769 /a{1,}b{1,}c/i 4770 AABBABC 4771 0: ABC 4772 4773 /a.+?c/i 4774 ABCABC 4775 0: ABC 4776 4777 /a.*?c/i 4778 ABCABC 4779 0: ABC 4780 4781 /a.{0,5}?c/i 4782 ABCABC 4783 0: ABC 4784 4785 /(a+|b)*/i 4786 AB 4787 0: AB 4788 1: B 4789 4790 /(a+|b){0,}/i 4791 AB 4792 0: AB 4793 1: B 4794 4795 /(a+|b)+/i 4796 AB 4797 0: AB 4798 1: B 4799 4800 /(a+|b){1,}/i 4801 AB 4802 0: AB 4803 1: B 4804 4805 /(a+|b)?/i 4806 AB 4807 0: A 4808 1: A 4809 4810 /(a+|b){0,1}/i 4811 AB 4812 0: A 4813 1: A 4814 4815 /(a+|b){0,1}?/i 4816 AB 4817 0: 4818 4819 /[^ab]*/i 4820 CDE 4821 0: CDE 4822 4823 /abc/i 4824 4825 /a*/i 4826 4827 4828 /([abc])*d/i 4829 ABBBCD 4830 0: ABBBCD 4831 1: C 4832 4833 /([abc])*bcd/i 4834 ABCD 4835 0: ABCD 4836 1: A 4837 4838 /a|b|c|d|e/i 4839 E 4840 0: E 4841 4842 /(a|b|c|d|e)f/i 4843 EF 4844 0: EF 4845 1: E 4846 4847 /abcd*efg/i 4848 ABCDEFG 4849 0: ABCDEFG 4850 4851 /ab*/i 4852 XABYABBBZ 4853 0: AB 4854 XAYABBBZ 4855 0: A 4856 4857 /(ab|cd)e/i 4858 ABCDE 4859 0: CDE 4860 1: CD 4861 4862 /[abhgefdc]ij/i 4863 HIJ 4864 0: HIJ 4865 4866 /^(ab|cd)e/i 4867 ABCDE 4868 No match 4869 4870 /(abc|)ef/i 4871 ABCDEF 4872 0: EF 4873 1: 4874 4875 /(a|b)c*d/i 4876 ABCD 4877 0: BCD 4878 1: B 4879 4880 /(ab|ab*)bc/i 4881 ABC 4882 0: ABC 4883 1: A 4884 4885 /a([bc]*)c*/i 4886 ABC 4887 0: ABC 4888 1: BC 4889 4890 /a([bc]*)(c*d)/i 4891 ABCD 4892 0: ABCD 4893 1: BC 4894 2: D 4895 4896 /a([bc]+)(c*d)/i 4897 ABCD 4898 0: ABCD 4899 1: BC 4900 2: D 4901 4902 /a([bc]*)(c+d)/i 4903 ABCD 4904 0: ABCD 4905 1: B 4906 2: CD 4907 4908 /a[bcd]*dcdcde/i 4909 ADCDCDE 4910 0: ADCDCDE 4911 4912 /a[bcd]+dcdcde/i 4913 4914 /(ab|a)b*c/i 4915 ABC 4916 0: ABC 4917 1: AB 4918 4919 /((a)(b)c)(d)/i 4920 ABCD 4921 0: ABCD 4922 1: ABC 4923 2: A 4924 3: B 4925 4: D 4926 4927 /[a-zA-Z_][a-zA-Z0-9_]*/i 4928 ALPHA 4929 0: ALPHA 4930 4931 /^a(bc+|b[eh])g|.h$/i 4932 ABH 4933 0: BH 4934 4935 /(bc+d$|ef*g.|h?i(j|k))/i 4936 EFFGZ 4937 0: EFFGZ 4938 1: EFFGZ 4939 IJ 4940 0: IJ 4941 1: IJ 4942 2: J 4943 REFFGZ 4944 0: EFFGZ 4945 1: EFFGZ 4946 *** Failers 4947 No match 4948 ADCDCDE 4949 No match 4950 EFFG 4951 No match 4952 BCDD 4953 No match 4954 4955 /((((((((((a))))))))))/i 4956 A 4957 0: A 4958 1: A 4959 2: A 4960 3: A 4961 4: A 4962 5: A 4963 6: A 4964 7: A 4965 8: A 4966 9: A 4967 10: A 4968 4969 /((((((((((a))))))))))\10/i 4970 AA 4971 0: AA 4972 1: A 4973 2: A 4974 3: A 4975 4: A 4976 5: A 4977 6: A 4978 7: A 4979 8: A 4980 9: A 4981 10: A 4982 4983 /(((((((((a)))))))))/i 4984 A 4985 0: A 4986 1: A 4987 2: A 4988 3: A 4989 4: A 4990 5: A 4991 6: A 4992 7: A 4993 8: A 4994 9: A 4995 4996 /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i 4997 A 4998 0: A 4999 1: A 5000 5001 /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i 5002 C 5003 0: C 5004 1: C 5005 5006 /multiple words of text/i 5007 *** Failers 5008 No match 5009 AA 5010 No match 5011 UH-UH 5012 No match 5013 5014 /multiple words/i 5015 MULTIPLE WORDS, YEAH 5016 0: MULTIPLE WORDS 5017 5018 /(.*)c(.*)/i 5019 ABCDE 5020 0: ABCDE 5021 1: AB 5022 2: DE 5023 5024 /\((.*), (.*)\)/i 5025 (A, B) 5026 0: (A, B) 5027 1: A 5028 2: B 5029 5030 /[k]/i 5031 5032 /abcd/i 5033 ABCD 5034 0: ABCD 5035 5036 /a(bc)d/i 5037 ABCD 5038 0: ABCD 5039 1: BC 5040 5041 /a[-]?c/i 5042 AC 5043 0: AC 5044 5045 /(abc)\1/i 5046 ABCABC 5047 0: ABCABC 5048 1: ABC 5049 5050 /([a-c]*)\1/i 5051 ABCABC 5052 0: ABCABC 5053 1: ABC 5054 5055 /a(?!b)./ 5056 abad 5057 0: ad 5058 5059 /a(?=d)./ 5060 abad 5061 0: ad 5062 5063 /a(?=c|d)./ 5064 abad 5065 0: ad 5066 5067 /a(?:b|c|d)(.)/ 5068 ace 5069 0: ace 5070 1: e 5071 5072 /a(?:b|c|d)*(.)/ 5073 ace 5074 0: ace 5075 1: e 5076 5077 /a(?:b|c|d)+?(.)/ 5078 ace 5079 0: ace 5080 1: e 5081 acdbcdbe 5082 0: acd 5083 1: d 5084 5085 /a(?:b|c|d)+(.)/ 5086 acdbcdbe 5087 0: acdbcdbe 5088 1: e 5089 5090 /a(?:b|c|d){2}(.)/ 5091 acdbcdbe 5092 0: acdb 5093 1: b 5094 5095 /a(?:b|c|d){4,5}(.)/ 5096 acdbcdbe 5097 0: acdbcdb 5098 1: b 5099 5100 /a(?:b|c|d){4,5}?(.)/ 5101 acdbcdbe 5102 0: acdbcd 5103 1: d 5104 5105 /((foo)|(bar))*/ 5106 foobar 5107 0: foobar 5108 1: bar 5109 2: foo 5110 3: bar 5111 5112 /a(?:b|c|d){6,7}(.)/ 5113 acdbcdbe 5114 0: acdbcdbe 5115 1: e 5116 5117 /a(?:b|c|d){6,7}?(.)/ 5118 acdbcdbe 5119 0: acdbcdbe 5120 1: e 5121 5122 /a(?:b|c|d){5,6}(.)/ 5123 acdbcdbe 5124 0: acdbcdbe 5125 1: e 5126 5127 /a(?:b|c|d){5,6}?(.)/ 5128 acdbcdbe 5129 0: acdbcdb 5130 1: b 5131 5132 /a(?:b|c|d){5,7}(.)/ 5133 acdbcdbe 5134 0: acdbcdbe 5135 1: e 5136 5137 /a(?:b|c|d){5,7}?(.)/ 5138 acdbcdbe 5139 0: acdbcdb 5140 1: b 5141 5142 /a(?:b|(c|e){1,2}?|d)+?(.)/ 5143 ace 5144 0: ace 5145 1: c 5146 2: e 5147 5148 /^(.+)?B/ 5149 AB 5150 0: AB 5151 1: A 5152 5153 /^([^a-z])|(\^)$/ 5154 . 5155 0: . 5156 1: . 5157 5158 /^[<>]&/ 5159 <&OUT 5160 0: <& 5161 5162 /^(a\1?){4}$/ 5163 aaaaaaaaaa 5164 0: aaaaaaaaaa 5165 1: aaaa 5166 *** Failers 5167 No match 5168 AB 5169 No match 5170 aaaaaaaaa 5171 No match 5172 aaaaaaaaaaa 5173 No match 5174 5175 /^(a(?(1)\1)){4}$/ 5176 aaaaaaaaaa 5177 0: aaaaaaaaaa 5178 1: aaaa 5179 *** Failers 5180 No match 5181 aaaaaaaaa 5182 No match 5183 aaaaaaaaaaa 5184 No match 5185 5186 /(?:(f)(o)(o)|(b)(a)(r))*/ 5187 foobar 5188 0: foobar 5189 1: f 5190 2: o 5191 3: o 5192 4: b 5193 5: a 5194 6: r 5195 5196 /(?<=a)b/ 5197 ab 5198 0: b 5199 *** Failers 5200 No match 5201 cb 5202 No match 5203 b 5204 No match 5205 5206 /(?<!c)b/ 5207 ab 5208 0: b 5209 b 5210 0: b 5211 b 5212 0: b 5213 5214 /(?:..)*a/ 5215 aba 5216 0: aba 5217 5218 /(?:..)*?a/ 5219 aba 5220 0: a 5221 5222 /^(?:b|a(?=(.)))*\1/ 5223 abc 5224 0: ab 5225 1: b 5226 5227 /^(){3,5}/ 5228 abc 5229 0: 5230 1: 5231 5232 /^(a+)*ax/ 5233 aax 5234 0: aax 5235 1: a 5236 5237 /^((a|b)+)*ax/ 5238 aax 5239 0: aax 5240 1: a 5241 2: a 5242 5243 /^((a|bc)+)*ax/ 5244 aax 5245 0: aax 5246 1: a 5247 2: a 5248 5249 /(a|x)*ab/ 5250 cab 5251 0: ab 5252 5253 /(a)*ab/ 5254 cab 5255 0: ab 5256 5257 /(?:(?i)a)b/ 5258 ab 5259 0: ab 5260 5261 /((?i)a)b/ 5262 ab 5263 0: ab 5264 1: a 5265 5266 /(?:(?i)a)b/ 5267 Ab 5268 0: Ab 5269 5270 /((?i)a)b/ 5271 Ab 5272 0: Ab 5273 1: A 5274 5275 /(?:(?i)a)b/ 5276 *** Failers 5277 No match 5278 cb 5279 No match 5280 aB 5281 No match 5282 5283 /((?i)a)b/ 5284 5285 /(?i:a)b/ 5286 ab 5287 0: ab 5288 5289 /((?i:a))b/ 5290 ab 5291 0: ab 5292 1: a 5293 5294 /(?i:a)b/ 5295 Ab 5296 0: Ab 5297 5298 /((?i:a))b/ 5299 Ab 5300 0: Ab 5301 1: A 5302 5303 /(?i:a)b/ 5304 *** Failers 5305 No match 5306 aB 5307 No match 5308 aB 5309 No match 5310 5311 /((?i:a))b/ 5312 5313 /(?:(?-i)a)b/i 5314 ab 5315 0: ab 5316 5317 /((?-i)a)b/i 5318 ab 5319 0: ab 5320 1: a 5321 5322 /(?:(?-i)a)b/i 5323 aB 5324 0: aB 5325 5326 /((?-i)a)b/i 5327 aB 5328 0: aB 5329 1: a 5330 5331 /(?:(?-i)a)b/i 5332 *** Failers 5333 No match 5334 aB 5335 0: aB 5336 Ab 5337 No match 5338 5339 /((?-i)a)b/i 5340 5341 /(?:(?-i)a)b/i 5342 aB 5343 0: aB 5344 5345 /((?-i)a)b/i 5346 aB 5347 0: aB 5348 1: a 5349 5350 /(?:(?-i)a)b/i 5351 *** Failers 5352 No match 5353 Ab 5354 No match 5355 AB 5356 No match 5357 5358 /((?-i)a)b/i 5359 5360 /(?-i:a)b/i 5361 ab 5362 0: ab 5363 5364 /((?-i:a))b/i 5365 ab 5366 0: ab 5367 1: a 5368 5369 /(?-i:a)b/i 5370 aB 5371 0: aB 5372 5373 /((?-i:a))b/i 5374 aB 5375 0: aB 5376 1: a 5377 5378 /(?-i:a)b/i 5379 *** Failers 5380 No match 5381 AB 5382 No match 5383 Ab 5384 No match 5385 5386 /((?-i:a))b/i 5387 5388 /(?-i:a)b/i 5389 aB 5390 0: aB 5391 5392 /((?-i:a))b/i 5393 aB 5394 0: aB 5395 1: a 5396 5397 /(?-i:a)b/i 5398 *** Failers 5399 No match 5400 Ab 5401 No match 5402 AB 5403 No match 5404 5405 /((?-i:a))b/i 5406 5407 /((?-i:a.))b/i 5408 *** Failers 5409 No match 5410 AB 5411 No match 5412 a\nB 5413 No match 5414 5415 /((?s-i:a.))b/i 5416 a\nB 5417 0: a\x0aB 5418 1: a\x0a 5419 5420 /(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/ 5421 cabbbb 5422 0: cabbbb 5423 5424 /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/ 5425 caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 5426 0: caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 5427 5428 /(ab)\d\1/i 5429 Ab4ab 5430 0: Ab4ab 5431 1: Ab 5432 ab4Ab 5433 0: ab4Ab 5434 1: ab 5435 5436 /foo\w*\d{4}baz/ 5437 foobar1234baz 5438 0: foobar1234baz 5439 5440 /x(~~)*(?:(?:F)?)?/ 5441 x~~ 5442 0: x~~ 5443 1: ~~ 5444 5445 /^a(?#xxx){3}c/ 5446 aaac 5447 0: aaac 5448 5449 /^a (?#xxx) (?#yyy) {3}c/x 5450 aaac 5451 0: aaac 5452 5453 /(?<![cd])b/ 5454 *** Failers 5455 No match 5456 B\nB 5457 No match 5458 dbcb 5459 No match 5460 5461 /(?<![cd])[ab]/ 5462 dbaacb 5463 0: a 5464 5465 /(?<!(c|d))b/ 5466 5467 /(?<!(c|d))[ab]/ 5468 dbaacb 5469 0: a 5470 5471 /(?<!cd)[ab]/ 5472 cdaccb 5473 0: b 5474 5475 /^(?:a?b?)*$/ 5476 \ 5477 0: 5478 a 5479 0: a 5480 ab 5481 0: ab 5482 aaa 5483 0: aaa 5484 *** Failers 5485 No match 5486 dbcb 5487 No match 5488 a-- 5489 No match 5490 aa-- 5491 No match 5492 5493 /((?s)^a(.))((?m)^b$)/ 5494 a\nb\nc\n 5495 0: a\x0ab 5496 1: a\x0a 5497 2: \x0a 5498 3: b 5499 5500 /((?m)^b$)/ 5501 a\nb\nc\n 5502 0: b 5503 1: b 5504 5505 /(?m)^b/ 5506 a\nb\n 5507 0: b 5508 5509 /(?m)^(b)/ 5510 a\nb\n 5511 0: b 5512 1: b 5513 5514 /((?m)^b)/ 5515 a\nb\n 5516 0: b 5517 1: b 5518 5519 /\n((?m)^b)/ 5520 a\nb\n 5521 0: \x0ab 5522 1: b 5523 5524 /((?s).)c(?!.)/ 5525 a\nb\nc\n 5526 0: \x0ac 5527 1: \x0a 5528 a\nb\nc\n 5529 0: \x0ac 5530 1: \x0a 5531 5532 /((?s)b.)c(?!.)/ 5533 a\nb\nc\n 5534 0: b\x0ac 5535 1: b\x0a 5536 a\nb\nc\n 5537 0: b\x0ac 5538 1: b\x0a 5539 5540 /^b/ 5541 5542 /()^b/ 5543 *** Failers 5544 No match 5545 a\nb\nc\n 5546 No match 5547 a\nb\nc\n 5548 No match 5549 5550 /((?m)^b)/ 5551 a\nb\nc\n 5552 0: b 5553 1: b 5554 5555 /(x)?(?(1)a|b)/ 5556 *** Failers 5557 No match 5558 a 5559 No match 5560 a 5561 No match 5562 5563 /(x)?(?(1)b|a)/ 5564 a 5565 0: a 5566 5567 /()?(?(1)b|a)/ 5568 a 5569 0: a 5570 5571 /()(?(1)b|a)/ 5572 5573 /()?(?(1)a|b)/ 5574 a 5575 0: a 5576 1: 5577 5578 /^(\()?blah(?(1)(\)))$/ 5579 (blah) 5580 0: (blah) 5581 1: ( 5582 2: ) 5583 blah 5584 0: blah 5585 *** Failers 5586 No match 5587 a 5588 No match 5589 blah) 5590 No match 5591 (blah 5592 No match 5593 5594 /^(\(+)?blah(?(1)(\)))$/ 5595 (blah) 5596 0: (blah) 5597 1: ( 5598 2: ) 5599 blah 5600 0: blah 5601 *** Failers 5602 No match 5603 blah) 5604 No match 5605 (blah 5606 No match 5607 5608 /(?(?!a)a|b)/ 5609 5610 /(?(?!a)b|a)/ 5611 a 5612 0: a 5613 5614 /(?(?=a)b|a)/ 5615 *** Failers 5616 No match 5617 a 5618 No match 5619 a 5620 No match 5621 5622 /(?(?=a)a|b)/ 5623 a 5624 0: a 5625 5626 /(?=(a+?))(\1ab)/ 5627 aaab 5628 0: aab 5629 1: a 5630 2: aab 5631 5632 /^(?=(a+?))\1ab/ 5633 5634 /(\w+:)+/ 5635 one: 5636 0: one: 5637 1: one: 5638 5639 /$(?<=^(a))/ 5640 a 5641 0: 5642 1: a 5643 5644 /(?=(a+?))(\1ab)/ 5645 aaab 5646 0: aab 5647 1: a 5648 2: aab 5649 5650 /^(?=(a+?))\1ab/ 5651 *** Failers 5652 No match 5653 aaab 5654 No match 5655 aaab 5656 No match 5657 5658 /([\w:]+::)?(\w+)$/ 5659 abcd 5660 0: abcd 5661 1: <unset> 5662 2: abcd 5663 xy:z:::abcd 5664 0: xy:z:::abcd 5665 1: xy:z::: 5666 2: abcd 5667 5668 /^[^bcd]*(c+)/ 5669 aexycd 5670 0: aexyc 5671 1: c 5672 5673 /(a*)b+/ 5674 caab 5675 0: aab 5676 1: aa 5677 5678 /([\w:]+::)?(\w+)$/ 5679 abcd 5680 0: abcd 5681 1: <unset> 5682 2: abcd 5683 xy:z:::abcd 5684 0: xy:z:::abcd 5685 1: xy:z::: 5686 2: abcd 5687 *** Failers 5688 0: Failers 5689 1: <unset> 5690 2: Failers 5691 abcd: 5692 No match 5693 abcd: 5694 No match 5695 5696 /^[^bcd]*(c+)/ 5697 aexycd 5698 0: aexyc 5699 1: c 5700 5701 /(>a+)ab/ 5702 5703 /(?>a+)b/ 5704 aaab 5705 0: aaab 5706 5707 /([[:]+)/ 5708 a:[b]: 5709 0: :[ 5710 1: :[ 5711 5712 /([[=]+)/ 5713 a=[b]= 5714 0: =[ 5715 1: =[ 5716 5717 /([[.]+)/ 5718 a.[b]. 5719 0: .[ 5720 1: .[ 5721 5722 /((?>a+)b)/ 5723 aaab 5724 0: aaab 5725 1: aaab 5726 5727 /(?>(a+))b/ 5728 aaab 5729 0: aaab 5730 1: aaa 5731 5732 /((?>[^()]+)|\([^()]*\))+/ 5733 ((abc(ade)ufh()()x 5734 0: abc(ade)ufh()()x 5735 1: x 5736 5737 /a\Z/ 5738 *** Failers 5739 No match 5740 aaab 5741 No match 5742 a\nb\n 5743 No match 5744 5745 /b\Z/ 5746 a\nb\n 5747 0: b 5748 5749 /b\z/ 5750 5751 /b\Z/ 5752 a\nb 5753 0: b 5754 5755 /b\z/ 5756 a\nb 5757 0: b 5758 *** Failers 5759 No match 5760 5761 /^(?>(?(1)\.|())[^\W_](?>[a-z0-9-]*[^\W_])?)+$/ 5762 a 5763 0: a 5764 1: 5765 abc 5766 0: abc 5767 1: 5768 a-b 5769 0: a-b 5770 1: 5771 0-9 5772 0: 0-9 5773 1: 5774 a.b 5775 0: a.b 5776 1: 5777 5.6.7 5778 0: 5.6.7 5779 1: 5780 the.quick.brown.fox 5781 0: the.quick.brown.fox 5782 1: 5783 a100.b200.300c 5784 0: a100.b200.300c 5785 1: 5786 12-ab.1245 5787 0: 12-ab.1245 5788 1: 5789 *** Failers 5790 No match 5791 \ 5792 No match 5793 .a 5794 No match 5795 -a 5796 No match 5797 a- 5798 No match 5799 a. 5800 No match 5801 a_b 5802 No match 5803 a.- 5804 No match 5805 a.. 5806 No match 5807 ab..bc 5808 No match 5809 the.quick.brown.fox- 5810 No match 5811 the.quick.brown.fox. 5812 No match 5813 the.quick.brown.fox_ 5814 No match 5815 the.quick.brown.fox+ 5816 No match 5817 5818 /(?>.*)(?<=(abcd|wxyz))/ 5819 alphabetabcd 5820 0: alphabetabcd 5821 1: abcd 5822 endingwxyz 5823 0: endingwxyz 5824 1: wxyz 5825 *** Failers 5826 No match 5827 a rather long string that doesn't end with one of them 5828 No match 5829 5830 /word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/ 5831 word cat dog elephant mussel cow horse canary baboon snake shark otherword 5832 0: word cat dog elephant mussel cow horse canary baboon snake shark otherword 5833 word cat dog elephant mussel cow horse canary baboon snake shark 5834 No match 5835 5836 /word (?>[a-zA-Z0-9]+ ){0,30}otherword/ 5837 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 5838 No match 5839 5840 /(?<=\d{3}(?!999))foo/ 5841 999foo 5842 0: foo 5843 123999foo 5844 0: foo 5845 *** Failers 5846 No match 5847 123abcfoo 5848 No match 5849 5850 /(?<=(?!...999)\d{3})foo/ 5851 999foo 5852 0: foo 5853 123999foo 5854 0: foo 5855 *** Failers 5856 No match 5857 123abcfoo 5858 No match 5859 5860 /(?<=\d{3}(?!999)...)foo/ 5861 123abcfoo 5862 0: foo 5863 123456foo 5864 0: foo 5865 *** Failers 5866 No match 5867 123999foo 5868 No match 5869 5870 /(?<=\d{3}...)(?<!999)foo/ 5871 123abcfoo 5872 0: foo 5873 123456foo 5874 0: foo 5875 *** Failers 5876 No match 5877 123999foo 5878 No match 5879 5880 /<a[\s]+href[\s]*=[\s]* # find <a href= 5881 ([\"\'])? # find single or double quote 5882 (?(1) (.*?)\1 | ([^\s]+)) # if quote found, match up to next matching 5883 # quote, otherwise match up to next space 5884 /isx 5885 <a href=abcd xyz 5886 0: <a href=abcd 5887 1: <unset> 5888 2: <unset> 5889 3: abcd 5890 <a href=\"abcd xyz pqr\" cats 5891 0: <a href="abcd xyz pqr" 5892 1: " 5893 2: abcd xyz pqr 5894 <a href=\'abcd xyz pqr\' cats 5895 0: <a href='abcd xyz pqr' 5896 1: ' 5897 2: abcd xyz pqr 5898 5899 /<a\s+href\s*=\s* # find <a href= 5900 (["'])? # find single or double quote 5901 (?(1) (.*?)\1 | (\S+)) # if quote found, match up to next matching 5902 # quote, otherwise match up to next space 5903 /isx 5904 <a href=abcd xyz 5905 0: <a href=abcd 5906 1: <unset> 5907 2: <unset> 5908 3: abcd 5909 <a href=\"abcd xyz pqr\" cats 5910 0: <a href="abcd xyz pqr" 5911 1: " 5912 2: abcd xyz pqr 5913 <a href = \'abcd xyz pqr\' cats 5914 0: <a href = 'abcd xyz pqr' 5915 1: ' 5916 2: abcd xyz pqr 5917 5918 /<a\s+href(?>\s*)=(?>\s*) # find <a href= 5919 (["'])? # find single or double quote 5920 (?(1) (.*?)\1 | (\S+)) # if quote found, match up to next matching 5921 # quote, otherwise match up to next space 5922 /isx 5923 <a href=abcd xyz 5924 0: <a href=abcd 5925 1: <unset> 5926 2: <unset> 5927 3: abcd 5928 <a href=\"abcd xyz pqr\" cats 5929 0: <a href="abcd xyz pqr" 5930 1: " 5931 2: abcd xyz pqr 5932 <a href = \'abcd xyz pqr\' cats 5933 0: <a href = 'abcd xyz pqr' 5934 1: ' 5935 2: abcd xyz pqr 5936 5937 /((Z)+|A)*/ 5938 ZABCDEFG 5939 0: ZA 5940 1: A 5941 2: Z 5942 5943 /(Z()|A)*/ 5944 ZABCDEFG 5945 0: ZA 5946 1: A 5947 2: 5948 5949 /(Z(())|A)*/ 5950 ZABCDEFG 5951 0: ZA 5952 1: A 5953 2: 5954 3: 5955 5956 /((?>Z)+|A)*/ 5957 ZABCDEFG 5958 0: ZA 5959 1: A 5960 5961 /((?>)+|A)*/ 5962 ZABCDEFG 5963 0: 5964 1: 5965 5966 /a*/g 5967 abbab 5968 0: a 5969 0: 5970 0: 5971 0: a 5972 0: 5973 0: 5974 5975 /^[a-\d]/ 5976 abcde 5977 0: a 5978 -things 5979 0: - 5980 0digit 5981 0: 0 5982 *** Failers 5983 No match 5984 bcdef 5985 No match 5986 5987 /^[\d-a]/ 5988 abcde 5989 0: a 5990 -things 5991 0: - 5992 0digit 5993 0: 0 5994 *** Failers 5995 No match 5996 bcdef 5997 No match 5998 5999 /[[:space:]]+/ 6000 > \x09\x0a\x0c\x0d\x0b< 6001 0: \x09\x0a\x0c\x0d\x0b 6002 6003 /[[:blank:]]+/ 6004 > \x09\x0a\x0c\x0d\x0b< 6005 0: \x09 6006 6007 /[\s]+/ 6008 > \x09\x0a\x0c\x0d\x0b< 6009 0: \x09\x0a\x0c\x0d 6010 6011 /\s+/ 6012 > \x09\x0a\x0c\x0d\x0b< 6013 0: \x09\x0a\x0c\x0d 6014 6015 /ab/x 6017 ab 6018 No match 6019 6020 /(?!\A)x/m 6021 a\nxb\n 6022 0: x 6023 6024 /(?!^)x/m 6025 a\nxb\n 6026 No match 6027 6028 /abc\Qabc\Eabc/ 6029 abcabcabc 6030 0: abcabcabc 6031 6032 /abc\Q(*+|\Eabc/ 6033 abc(*+|abc 6034 0: abc(*+|abc 6035 6036 / abc\Q abc\Eabc/x 6037 abc abcabc 6038 0: abc abcabc 6039 *** Failers 6040 No match 6041 abcabcabc 6042 No match 6043 6044 /abc#comment 6045 \Q#not comment 6046 literal\E/x 6047 abc#not comment\n literal 6048 0: abc#not comment\x0a literal 6049 6050 /abc#comment 6051 \Q#not comment 6052 literal/x 6053 abc#not comment\n literal 6054 0: abc#not comment\x0a literal 6055 6056 /abc#comment 6057 \Q#not comment 6058 literal\E #more comment 6059 /x 6060 abc#not comment\n literal 6061 0: abc#not comment\x0a literal 6062 6063 /abc#comment 6064 \Q#not comment 6065 literal\E #more comment/x 6066 abc#not comment\n literal 6067 0: abc#not comment\x0a literal 6068 6069 /\Qabc\$xyz\E/ 6070 abc\\\$xyz 6071 0: abc\$xyz 6072 6073 /\Qabc\E\$\Qxyz\E/ 6074 abc\$xyz 6075 0: abc$xyz 6076 6077 /\Gabc/ 6078 abc 6079 0: abc 6080 *** Failers 6081 No match 6082 xyzabc 6083 No match 6084 6085 /\Gabc./g 6086 abc1abc2xyzabc3 6087 0: abc1 6088 0: abc2 6089 6090 /abc./g 6091 abc1abc2xyzabc3 6092 0: abc1 6093 0: abc2 6094 0: abc3 6095 6096 /a(?x: b c )d/ 6097 XabcdY 6098 0: abcd 6099 *** Failers 6100 No match 6101 Xa b c d Y 6102 No match 6103 6104 /((?x)x y z | a b c)/ 6105 XabcY 6106 0: abc 6107 1: abc 6108 AxyzB 6109 0: xyz 6110 1: xyz 6111 6112 /(?i)AB(?-i)C/ 6113 XabCY 6114 0: abC 6115 *** Failers 6116 No match 6117 XabcY 6118 No match 6119 6120 /((?i)AB(?-i)C|D)E/ 6121 abCE 6122 0: abCE 6123 1: abC 6124 DE 6125 0: DE 6126 1: D 6127 *** Failers 6128 No match 6129 abcE 6130 No match 6131 abCe 6132 No match 6133 dE 6134 No match 6135 De 6136 No match 6137 6138 /(.*)\d+\1/ 6139 abc123abc 6140 0: abc123abc 6141 1: abc 6142 abc123bc 6143 0: bc123bc 6144 1: bc 6145 6146 /(.*)\d+\1/s 6147 abc123abc 6148 0: abc123abc 6149 1: abc 6150 abc123bc 6151 0: bc123bc 6152 1: bc 6153 6154 /((.*))\d+\1/ 6155 abc123abc 6156 0: abc123abc 6157 1: abc 6158 2: abc 6159 abc123bc 6160 0: bc123bc 6161 1: bc 6162 2: bc 6163 6164 /-- This tests for an IPv6 address in the form where it can have up to --/ 6165 /-- eight components, one and only one of which is empty. This must be --/ 6166 No match 6167 /-- an internal component. --/ 6168 No match 6169 6170 /^(?!:) # colon disallowed at start 6171 (?: # start of item 6172 (?: [0-9a-f]{1,4} | # 1-4 hex digits or 6173 (?(1)0 | () ) ) # if null previously matched, fail; else null 6174 : # followed by colon 6175 ){1,7} # end item; 1-7 of them required 6176 [0-9a-f]{1,4} $ # final hex number at end of string 6177 (?(1)|.) # check that there was an empty component 6178 /xi 6179 a123::a123 6180 0: a123::a123 6181 1: 6182 a123:b342::abcd 6183 0: a123:b342::abcd 6184 1: 6185 a123:b342::324e:abcd 6186 0: a123:b342::324e:abcd 6187 1: 6188 a123:ddde:b342::324e:abcd 6189 0: a123:ddde:b342::324e:abcd 6190 1: 6191 a123:ddde:b342::324e:dcba:abcd 6192 0: a123:ddde:b342::324e:dcba:abcd 6193 1: 6194 a123:ddde:9999:b342::324e:dcba:abcd 6195 0: a123:ddde:9999:b342::324e:dcba:abcd 6196 1: 6197 *** Failers 6198 No match 6199 1:2:3:4:5:6:7:8 6200 No match 6201 a123:bce:ddde:9999:b342::324e:dcba:abcd 6202 No match 6203 a123::9999:b342::324e:dcba:abcd 6204 No match 6205 abcde:2:3:4:5:6:7:8 6206 No match 6207 ::1 6208 No match 6209 abcd:fee0:123:: 6210 No match 6211 :1 6212 No match 6213 1: 6214 No match 6215 6216 /[z\Qa-d]\E]/ 6217 z 6218 0: z 6219 a 6220 0: a 6221 - 6222 0: - 6223 d 6224 0: d 6225 ] 6226 0: ] 6227 *** Failers 6228 0: a 6229 b 6230 No match 6231 6232 /[\z\C]/ 6233 z 6234 0: z 6235 C 6236 0: C 6237 6238 /\M/ 6239 M 6240 0: M 6241 6242 /(a+)*b/ 6243 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6244 No match 6245 6246 /(?i)reg(?:ul(?:[a]|ae)r|ex)/ 6247 REGular 6248 0: REGular 6249 regulaer 6250 0: regulaer 6251 Regex 6252 0: Regex 6253 regulr 6254 0: regul\xe4r 6255 6256 /[--]+/ 6257 6258 0: \xc5\xe6\xe5\xe4\xe0 6259 6260 0: \xc5\xe6\xe5\xe4\xff 6261 6262 0: \xc5\xe6\xe5\xe4\xc0 6263 6264 0: \xc5\xe6\xe5\xe4\xdf 6265 6266 /(?<=Z)X./ 6267 \x84XAZXB 6268 0: XB 6269 6270 /ab cd (?x) de fg/ 6271 ab cd defg 6272 0: ab cd defg 6273 6274 /ab cd(?x) de fg/ 6275 ab cddefg 6276 0: ab cddefg 6277 ** Failers 6278 No match 6279 abcddefg 6280 No match 6281 6282 /(?<![^f]oo)(bar)/ 6283 foobarX 6284 0: bar 6285 1: bar 6286 ** Failers 6287 No match 6288 boobarX 6289 No match 6290 6291 /(?<![^f])X/ 6292 offX 6293 0: X 6294 ** Failers 6295 No match 6296 onyX 6297 No match 6298 6299 /(?<=[^f])X/ 6300 onyX 6301 0: X 6302 ** Failers 6303 No match 6304 offX 6305 No match 6306 6307 /^/mg 6308 a\nb\nc\n 6309 0: 6310 0: 6311 0: 6312 \ 6313 0: 6314 6315 /(?<=C\n)^/mg 6316 A\nC\nC\n 6317 0: 6318 6319 /(?:(?(1)a|b)(X))+/ 6320 bXaX 6321 0: bXaX 6322 1: X 6323 6324 /(?:(?(1)\1a|b)(X|Y))+/ 6325 bXXaYYaY 6326 0: bXXaYYaY 6327 1: Y 6328 bXYaXXaX 6329 0: bX 6330 1: X 6331 6332 /()()()()()()()()()(?:(?(10)\10a|b)(X|Y))+/ 6333 bXXaYYaY 6334 0: bX 6335 1: 6336 2: 6337 3: 6338 4: 6339 5: 6340 6: 6341 7: 6342 8: 6343 9: 6344 10: X 6345 6346 /[[,abc,]+]/ 6347 abc] 6348 0: abc] 6349 a,b] 6350 0: a,b] 6351 [a,b,c] 6352 0: [a,b,c] 6353 6354 /(?-x: )/x 6355 A\x20B 6356 0: 6357 6358 "(?x)(?-x: \s*#\s*)" 6359 A # B 6360 0: # 6361 ** Failers 6362 No match 6363 # 6364 No match 6365 6366 "(?x-is)(?:(?-ixs) \s*#\s*) include" 6367 A #include 6368 0: #include 6369 ** Failers 6370 No match 6371 A#include 6372 No match 6373 A #Include 6374 No match 6375 6376 /a*b*\w/ 6377 aaabbbb 6378 0: aaabbbb 6379 aaaa 6380 0: aaaa 6381 a 6382 0: a 6383 6384 /a*b?\w/ 6385 aaabbbb 6386 0: aaabb 6387 aaaa 6388 0: aaaa 6389 a 6390 0: a 6391 6392 /a*b{0,4}\w/ 6393 aaabbbb 6394 0: aaabbbb 6395 aaaa 6396 0: aaaa 6397 a 6398 0: a 6399 6400 /a*b{0,}\w/ 6401 aaabbbb 6402 0: aaabbbb 6403 aaaa 6404 0: aaaa 6405 a 6406 0: a 6407 6408 /a*\d*\w/ 6409 0a 6410 0: 0a 6411 a 6412 0: a 6413 6414 /a*b *\w/x 6415 a 6416 0: a 6417 6418 /a*b#comment 6419 *\w/x 6420 a 6421 0: a 6422 6423 /a* b *\w/x 6424 a 6425 0: a 6426 6427 /^\w+=.*(\\\n.*)*/ 6428 abc=xyz\\\npqr 6429 0: abc=xyz\ 6430 6431 /(?=(\w+))\1:/ 6432 abcd: 6433 0: abcd: 6434 1: abcd 6435 6436 /^(?=(\w+))\1:/ 6437 abcd: 6438 0: abcd: 6439 1: abcd 6440 6441 /^\Eabc/ 6442 abc 6443 0: abc 6444 6445 /^[\Eabc]/ 6446 a 6447 0: a 6448 ** Failers 6449 No match 6450 E 6451 No match 6452 6453 /^[a-\Ec]/ 6454 b 6455 0: b 6456 ** Failers 6457 No match 6458 - 6459 No match 6460 E 6461 No match 6462 6463 /^[a\E\E-\Ec]/ 6464 b 6465 0: b 6466 ** Failers 6467 No match 6468 - 6469 No match 6470 E 6471 No match 6472 6473 /^[\E\Qa\E-\Qz\E]+/ 6474 b 6475 0: b 6476 ** Failers 6477 No match 6478 - 6479 No match 6480 6481 /^[a\Q]bc\E]/ 6482 a 6483 0: a 6484 ] 6485 0: ] 6486 c 6487 0: c 6488 6489 /^[a-\Q\E]/ 6490 a 6491 0: a 6492 - 6493 0: - 6494 6495 /^(a()*)*/ 6496 aaaa 6497 0: aaaa 6498 1: a 6499 2: 6500 6501 /^(?:a(?:(?:))*)*/ 6502 aaaa 6503 0: aaaa 6504 6505 /^(a()+)+/ 6506 aaaa 6507 0: aaaa 6508 1: a 6509 2: 6510 6511 /^(?:a(?:(?:))+)+/ 6512 aaaa 6513 0: aaaa 6514 6515 /(a){0,3}(?(1)b|(c|))*D/ 6516 abbD 6517 0: abbD 6518 1: a 6519 ccccD 6520 0: ccccD 6521 1: <unset> 6522 2: 6523 D 6524 0: D 6525 1: <unset> 6526 2: 6527 6528 /(a|)*\d/ 6529 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6530 No match 6531 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 6532 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 6533 1: 6534 6535 /(?>a|)*\d/ 6536 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6537 No match 6538 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 6539 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 6540 6541 /(?:a|)*\d/ 6542 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6543 No match 6544 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 6545 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 6546 6547 /\Z/g 6548 abc\n 6549 0: 6550 0: 6551 6552 /^(?s)(?>.*)(?<!\n)/ 6553 abc 6554 0: abc 6555 abc\n 6556 No match 6557 6558 /^(?![^\n]*\n\z)/ 6559 abc 6560 0: 6561 abc\n 6562 No match 6563 6564 /\z(?<!\n)/ 6565 abc 6566 0: 6567 abc\n 6568 No match 6569 6570 /(.*(.)?)*/ 6571 abcd 6572 0: abcd 6573 1: 6574 6575 /( (A | (?(1)0|) )* )/x 6576 abcd 6577 0: 6578 1: 6579 2: 6580 6581 /( ( (?(1)0|) )* )/x 6582 abcd 6583 0: 6584 1: 6585 2: 6586 6587 /( (?(1)0|)* )/x 6588 abcd 6589 0: 6590 1: 6591 6592 /[[:abcd:xyz]]/ 6593 a] 6594 0: a] 6595 :] 6596 0: :] 6597 6598 /[abc[:x\]pqr]/ 6599 a 6600 0: a 6601 [ 6602 0: [ 6603 : 6604 0: : 6605 ] 6606 0: ] 6607 p 6608 0: p 6609 6610 /.*[op][xyz]/ 6611 fooabcfoo 6612 No match 6613 6614 /(?(?=.*b)b|^)/ 6615 adc 6616 0: 6617 abc 6618 0: b 6619 6620 /(?(?=^.*b)b|^)/ 6621 adc 6622 0: 6623 abc 6624 No match 6625 6626 /(?(?=.*b)b|^)*/ 6627 adc 6628 0: 6629 abc 6630 0: 6631 6632 /(?(?=.*b)b|^)+/ 6633 adc 6634 0: 6635 abc 6636 0: b 6637 6638 /(?(?=b).*b|^d)/ 6639 abc 6640 0: b 6641 6642 /(?(?=.*b).*b|^d)/ 6643 abc 6644 0: ab 6645 6646 /^%((?(?=[a])[^%])|b)*%$/ 6647 %ab% 6648 0: %ab% 6649 1: 6650 6651 /(?i)a(?-i)b|c/ 6652 XabX 6653 0: ab 6654 XAbX 6655 0: Ab 6656 CcC 6657 0: c 6658 ** Failers 6659 No match 6660 XABX 6661 No match 6662 6663 /[\x00-\xff\s]+/ 6664 \x0a\x0b\x0c\x0d 6665 0: \x0a\x0b\x0c\x0d 6666 6667 /^\c/ 6668 ? 6669 0: ? 6670 6671 /-- End of testinput1 --/ 6672