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