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