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