1/-- This set of tests is not Perl-compatible. It checks on special features 2 of PCRE's API, error diagnostics, and the compiled code of some patterns. 3 It also checks the non-Perl syntax the PCRE supports (Python, .NET, 4 Oniguruma). Finally, there are some tests where PCRE and Perl differ, 5 either because PCRE can't be compatible, or there is a possible Perl 6 bug. --/ 7 8/-- Originally, the Perl >= 5.10 things were in here too, but now I have 9 separated many (most?) of them out into test 11. However, there may still 10 be some that were overlooked. --/ 11 12/(a)b|/I 13Capturing subpattern count = 1 14No options 15No first char 16No need char 17 18/abc/I 19Capturing subpattern count = 0 20No options 21First char = 'a' 22Need char = 'c' 23 abc 24 0: abc 25 defabc 26 0: abc 27 \Aabc 28 0: abc 29 *** Failers 30No match 31 \Adefabc 32No match 33 ABC 34No match 35 36/^abc/I 37Capturing subpattern count = 0 38Options: anchored 39No first char 40No need char 41 abc 42 0: abc 43 \Aabc 44 0: abc 45 *** Failers 46No match 47 defabc 48No match 49 \Adefabc 50No match 51 52/a+bc/I 53Capturing subpattern count = 0 54No options 55First char = 'a' 56Need char = 'c' 57 58/a*bc/I 59Capturing subpattern count = 0 60No options 61No first char 62Need char = 'c' 63 64/a{3}bc/I 65Capturing subpattern count = 0 66No options 67First char = 'a' 68Need char = 'c' 69 70/(abc|a+z)/I 71Capturing subpattern count = 1 72No options 73First char = 'a' 74No need char 75 76/^abc$/I 77Capturing subpattern count = 0 78Options: anchored 79No first char 80No need char 81 abc 82 0: abc 83 *** Failers 84No match 85 def\nabc 86No match 87 88/ab\idef/X 89Failed: unrecognized character follows \ at offset 3 90 91/(?X)ab\idef/X 92Failed: unrecognized character follows \ at offset 7 93 94/x{5,4}/ 95Failed: numbers out of order in {} quantifier at offset 5 96 97/z{65536}/ 98Failed: number too big in {} quantifier at offset 7 99 100/[abcd/ 101Failed: missing terminating ] for character class at offset 5 102 103/(?X)[\B]/ 104Failed: invalid escape sequence in character class at offset 6 105 106/(?X)[\R]/ 107Failed: invalid escape sequence in character class at offset 6 108 109/(?X)[\X]/ 110Failed: invalid escape sequence in character class at offset 6 111 112/[\B]/BZ 113------------------------------------------------------------------ 114 Bra 115 B 116 Ket 117 End 118------------------------------------------------------------------ 119 120/[\R]/BZ 121------------------------------------------------------------------ 122 Bra 123 R 124 Ket 125 End 126------------------------------------------------------------------ 127 128/[\X]/BZ 129------------------------------------------------------------------ 130 Bra 131 X 132 Ket 133 End 134------------------------------------------------------------------ 135 136/[z-a]/ 137Failed: range out of order in character class at offset 3 138 139/^*/ 140Failed: nothing to repeat at offset 1 141 142/(abc/ 143Failed: missing ) at offset 4 144 145/(?# abc/ 146Failed: missing ) after comment at offset 7 147 148/(?z)abc/ 149Failed: unrecognized character after (? or (?- at offset 2 150 151/.*b/I 152Capturing subpattern count = 0 153No options 154First char at start or follows newline 155Need char = 'b' 156 157/.*?b/I 158Capturing subpattern count = 0 159No options 160First char at start or follows newline 161Need char = 'b' 162 163/cat|dog|elephant/I 164Capturing subpattern count = 0 165No options 166No first char 167No need char 168 this sentence eventually mentions a cat 169 0: cat 170 this sentences rambles on and on for a while and then reaches elephant 171 0: elephant 172 173/cat|dog|elephant/IS 174Capturing subpattern count = 0 175No options 176No first char 177No need char 178Subject length lower bound = 3 179Starting byte set: c d e 180 this sentence eventually mentions a cat 181 0: cat 182 this sentences rambles on and on for a while and then reaches elephant 183 0: elephant 184 185/cat|dog|elephant/IiS 186Capturing subpattern count = 0 187Options: caseless 188No first char 189No need char 190Subject length lower bound = 3 191Starting byte set: C D E c d e 192 this sentence eventually mentions a CAT cat 193 0: CAT 194 this sentences rambles on and on for a while to elephant ElePhant 195 0: elephant 196 197/a|[bcd]/IS 198Capturing subpattern count = 0 199No options 200No first char 201No need char 202Subject length lower bound = 1 203Starting byte set: a b c d 204 205/(a|[^\dZ])/IS 206Capturing subpattern count = 1 207No options 208No first char 209No need char 210Subject length lower bound = 1 211Starting byte set: \x00 \x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 \x09 \x0a 212 \x0b \x0c \x0d \x0e \x0f \x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17 \x18 \x19 213 \x1a \x1b \x1c \x1d \x1e \x1f \x20 ! " # $ % & ' ( ) * + , - . / : ; < = > 214 ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y [ \ ] ^ _ ` a b c d 215 e f g h i j k l m n o p q r s t u v w x y z { | } ~ \x7f \x80 \x81 \x82 \x83 216 \x84 \x85 \x86 \x87 \x88 \x89 \x8a \x8b \x8c \x8d \x8e \x8f \x90 \x91 \x92 217 \x93 \x94 \x95 \x96 \x97 \x98 \x99 \x9a \x9b \x9c \x9d \x9e \x9f \xa0 \xa1 218 \xa2 \xa3 \xa4 \xa5 \xa6 \xa7 \xa8 \xa9 \xaa \xab \xac \xad \xae \xaf \xb0 219 \xb1 \xb2 \xb3 \xb4 \xb5 \xb6 \xb7 \xb8 \xb9 \xba \xbb \xbc \xbd \xbe \xbf 220 \xc0 \xc1 \xc2 \xc3 \xc4 \xc5 \xc6 \xc7 \xc8 \xc9 \xca \xcb \xcc \xcd \xce 221 \xcf \xd0 \xd1 \xd2 \xd3 \xd4 \xd5 \xd6 \xd7 \xd8 \xd9 \xda \xdb \xdc \xdd 222 \xde \xdf \xe0 \xe1 \xe2 \xe3 \xe4 \xe5 \xe6 \xe7 \xe8 \xe9 \xea \xeb \xec 223 \xed \xee \xef \xf0 \xf1 \xf2 \xf3 \xf4 \xf5 \xf6 \xf7 \xf8 \xf9 \xfa \xfb 224 \xfc \xfd \xfe \xff 225 226/(a|b)*[\s]/IS 227Capturing subpattern count = 1 228No options 229No first char 230No need char 231Subject length lower bound = 1 232Starting byte set: \x09 \x0a \x0c \x0d \x20 a b 233 234/(ab\2)/ 235Failed: reference to non-existent subpattern at offset 6 236 237/{4,5}abc/ 238Failed: nothing to repeat at offset 4 239 240/(a)(b)(c)\2/I 241Capturing subpattern count = 3 242Max back reference = 2 243No options 244First char = 'a' 245Need char = 'c' 246 abcb 247 0: abcb 248 1: a 249 2: b 250 3: c 251 \O0abcb 252Matched, but too many substrings 253 \O3abcb 254Matched, but too many substrings 255 0: abcb 256 \O6abcb 257Matched, but too many substrings 258 0: abcb 259 1: a 260 \O9abcb 261Matched, but too many substrings 262 0: abcb 263 1: a 264 2: b 265 \O12abcb 266 0: abcb 267 1: a 268 2: b 269 3: c 270 271/(a)bc|(a)(b)\2/I 272Capturing subpattern count = 3 273Max back reference = 2 274No options 275First char = 'a' 276No need char 277 abc 278 0: abc 279 1: a 280 \O0abc 281Matched, but too many substrings 282 \O3abc 283Matched, but too many substrings 284 0: abc 285 \O6abc 286 0: abc 287 1: a 288 aba 289 0: aba 290 1: <unset> 291 2: a 292 3: b 293 \O0aba 294Matched, but too many substrings 295 \O3aba 296Matched, but too many substrings 297 0: aba 298 \O6aba 299Matched, but too many substrings 300 0: aba 301 1: <unset> 302 \O9aba 303Matched, but too many substrings 304 0: aba 305 1: <unset> 306 2: a 307 \O12aba 308 0: aba 309 1: <unset> 310 2: a 311 3: b 312 313/abc$/IE 314Capturing subpattern count = 0 315Options: dollar_endonly 316First char = 'a' 317Need char = 'c' 318 abc 319 0: abc 320 *** Failers 321No match 322 abc\n 323No match 324 abc\ndef 325No match 326 327/(a)(b)(c)(d)(e)\6/ 328Failed: reference to non-existent subpattern at offset 17 329 330/the quick brown fox/I 331Capturing subpattern count = 0 332No options 333First char = 't' 334Need char = 'x' 335 the quick brown fox 336 0: the quick brown fox 337 this is a line with the quick brown fox 338 0: the quick brown fox 339 340/the quick brown fox/IA 341Capturing subpattern count = 0 342Options: anchored 343No first char 344No need char 345 the quick brown fox 346 0: the quick brown fox 347 *** Failers 348No match 349 this is a line with the quick brown fox 350No match 351 352/ab(?z)cd/ 353Failed: unrecognized character after (? or (?- at offset 4 354 355/^abc|def/I 356Capturing subpattern count = 0 357No options 358No first char 359No need char 360 abcdef 361 0: abc 362 abcdef\B 363 0: def 364 365/.*((abc)$|(def))/I 366Capturing subpattern count = 3 367No options 368First char at start or follows newline 369No need char 370 defabc 371 0: defabc 372 1: abc 373 2: abc 374 \Zdefabc 375 0: def 376 1: def 377 2: <unset> 378 3: def 379 380/abc/P 381 abc 382 0: abc 383 *** Failers 384No match: POSIX code 17: match failed 385 386/^abc|def/P 387 abcdef 388 0: abc 389 abcdef\B 390 0: def 391 392/.*((abc)$|(def))/P 393 defabc 394 0: defabc 395 1: abc 396 2: abc 397 \Zdefabc 398 0: def 399 1: def 400 3: def 401 402/the quick brown fox/P 403 the quick brown fox 404 0: the quick brown fox 405 *** Failers 406No match: POSIX code 17: match failed 407 The Quick Brown Fox 408No match: POSIX code 17: match failed 409 410/the quick brown fox/Pi 411 the quick brown fox 412 0: the quick brown fox 413 The Quick Brown Fox 414 0: The Quick Brown Fox 415 416/abc.def/P 417 *** Failers 418No match: POSIX code 17: match failed 419 abc\ndef 420No match: POSIX code 17: match failed 421 422/abc$/P 423 abc 424 0: abc 425 abc\n 426 0: abc 427 428/(abc)\2/P 429Failed: POSIX code 15: bad back reference at offset 7 430 431/(abc\1)/P 432 abc 433No match: POSIX code 17: match failed 434 435/)/ 436Failed: unmatched parentheses at offset 0 437 438/a[]b/ 439Failed: missing terminating ] for character class at offset 4 440 441/[^aeiou ]{3,}/I 442Capturing subpattern count = 0 443No options 444No first char 445No need char 446 co-processors, and for 447 0: -pr 448 449/<.*>/I 450Capturing subpattern count = 0 451No options 452First char = '<' 453Need char = '>' 454 abc<def>ghi<klm>nop 455 0: <def>ghi<klm> 456 457/<.*?>/I 458Capturing subpattern count = 0 459No options 460First char = '<' 461Need char = '>' 462 abc<def>ghi<klm>nop 463 0: <def> 464 465/<.*>/IU 466Capturing subpattern count = 0 467Options: ungreedy 468First char = '<' 469Need char = '>' 470 abc<def>ghi<klm>nop 471 0: <def> 472 473/(?U)<.*>/I 474Capturing subpattern count = 0 475Options: ungreedy 476First char = '<' 477Need char = '>' 478 abc<def>ghi<klm>nop 479 0: <def> 480 481/<.*?>/IU 482Capturing subpattern count = 0 483Options: ungreedy 484First char = '<' 485Need char = '>' 486 abc<def>ghi<klm>nop 487 0: <def>ghi<klm> 488 489/={3,}/IU 490Capturing subpattern count = 0 491Options: ungreedy 492First char = '=' 493Need char = '=' 494 abc========def 495 0: === 496 497/(?U)={3,}?/I 498Capturing subpattern count = 0 499Options: ungreedy 500First char = '=' 501Need char = '=' 502 abc========def 503 0: ======== 504 505/(?<!bar|cattle)foo/I 506Capturing subpattern count = 0 507No options 508First char = 'f' 509Need char = 'o' 510 foo 511 0: foo 512 catfoo 513 0: foo 514 *** Failers 515No match 516 the barfoo 517No match 518 and cattlefoo 519No match 520 521/(?<=a+)b/ 522Failed: lookbehind assertion is not fixed length at offset 6 523 524/(?<=aaa|b{0,3})b/ 525Failed: lookbehind assertion is not fixed length at offset 14 526 527/(?<!(foo)a\1)bar/ 528Failed: lookbehind assertion is not fixed length at offset 12 529 530/(?i)abc/I 531Capturing subpattern count = 0 532Options: caseless 533First char = 'a' (caseless) 534Need char = 'c' (caseless) 535 536/(a|(?m)a)/I 537Capturing subpattern count = 1 538No options 539First char = 'a' 540No need char 541 542/(?i)^1234/I 543Capturing subpattern count = 0 544Options: anchored caseless 545No first char 546No need char 547 548/(^b|(?i)^d)/I 549Capturing subpattern count = 1 550Options: anchored 551No first char 552No need char 553 554/(?s).*/I 555Capturing subpattern count = 0 556Options: anchored dotall 557No first char 558No need char 559 560/[abcd]/IS 561Capturing subpattern count = 0 562No options 563No first char 564No need char 565Subject length lower bound = 1 566Starting byte set: a b c d 567 568/(?i)[abcd]/IS 569Capturing subpattern count = 0 570Options: caseless 571No first char 572No need char 573Subject length lower bound = 1 574Starting byte set: A B C D a b c d 575 576/(?m)[xy]|(b|c)/IS 577Capturing subpattern count = 1 578Options: multiline 579No first char 580No need char 581Subject length lower bound = 1 582Starting byte set: b c x y 583 584/(^a|^b)/Im 585Capturing subpattern count = 1 586Options: multiline 587First char at start or follows newline 588No need char 589 590/(?i)(^a|^b)/Im 591Capturing subpattern count = 1 592Options: caseless multiline 593First char at start or follows newline 594No need char 595 596/(a)(?(1)a|b|c)/ 597Failed: conditional group contains more than two branches at offset 13 598 599/(?(?=a)a|b|c)/ 600Failed: conditional group contains more than two branches at offset 12 601 602/(?(1a)/ 603Failed: missing ) at offset 6 604 605/(?(1a))/ 606Failed: reference to non-existent subpattern at offset 6 607 608/(?(?i))/ 609Failed: assertion expected after (?( at offset 3 610 611/(?(abc))/ 612Failed: reference to non-existent subpattern at offset 7 613 614/(?(?<ab))/ 615Failed: syntax error in subpattern name (missing terminator) at offset 7 616 617/((?s)blah)\s+\1/I 618Capturing subpattern count = 1 619Max back reference = 1 620No options 621First char = 'b' 622Need char = 'h' 623 624/((?i)blah)\s+\1/I 625Capturing subpattern count = 1 626Max back reference = 1 627No options 628First char = 'b' (caseless) 629Need char = 'h' (caseless) 630 631/((?i)b)/IDZS 632------------------------------------------------------------------ 633 Bra 634 CBra 1 635 01 Opt 636 NC b 637 Ket 638 00 Opt 639 Ket 640 End 641------------------------------------------------------------------ 642Capturing subpattern count = 1 643No options 644First char = 'b' (caseless) 645No need char 646Subject length lower bound = 1 647No set of starting bytes 648 649/(a*b|(?i:c*(?-i)d))/IS 650Capturing subpattern count = 1 651No options 652No first char 653No need char 654Subject length lower bound = 1 655Starting byte set: C a b c d 656 657/a$/I 658Capturing subpattern count = 0 659No options 660First char = 'a' 661No need char 662 a 663 0: a 664 a\n 665 0: a 666 *** Failers 667No match 668 \Za 669No match 670 \Za\n 671No match 672 673/a$/Im 674Capturing subpattern count = 0 675Options: multiline 676First char = 'a' 677No need char 678 a 679 0: a 680 a\n 681 0: a 682 \Za\n 683 0: a 684 *** Failers 685No match 686 \Za 687No match 688 689/\Aabc/Im 690Capturing subpattern count = 0 691Options: anchored multiline 692No first char 693No need char 694 695/^abc/Im 696Capturing subpattern count = 0 697Options: multiline 698First char at start or follows newline 699Need char = 'c' 700 701/^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/I 702Capturing subpattern count = 5 703Options: anchored 704No first char 705No need char 706 aaaaabbbbbcccccdef 707 0: aaaaabbbbbcccccdef 708 1: aaaaabbbbbcccccdef 709 2: aaaaa 710 3: b 711 4: bbbbccccc 712 5: def 713 714/(?<=foo)[ab]/IS 715Capturing subpattern count = 0 716No options 717No first char 718No need char 719Subject length lower bound = 1 720Starting byte set: a b 721 722/(?<!foo)(alpha|omega)/IS 723Capturing subpattern count = 1 724No options 725No first char 726Need char = 'a' 727Subject length lower bound = 5 728Starting byte set: a o 729 730/(?!alphabet)[ab]/IS 731Capturing subpattern count = 0 732No options 733No first char 734No need char 735Subject length lower bound = 1 736Starting byte set: a b 737 738/(?<=foo\n)^bar/Im 739Capturing subpattern count = 0 740Contains explicit CR or LF match 741Options: multiline 742No first char 743Need char = 'r' 744 foo\nbarbar 745 0: bar 746 ***Failers 747No match 748 rhubarb 749No match 750 barbell 751No match 752 abc\nbarton 753No match 754 755/^(?<=foo\n)bar/Im 756Capturing subpattern count = 0 757Contains explicit CR or LF match 758Options: multiline 759First char at start or follows newline 760Need char = 'r' 761 foo\nbarbar 762 0: bar 763 ***Failers 764No match 765 rhubarb 766No match 767 barbell 768No match 769 abc\nbarton 770No match 771 772/(?>^abc)/Im 773Capturing subpattern count = 0 774Options: multiline 775First char at start or follows newline 776Need char = 'c' 777 abc 778 0: abc 779 def\nabc 780 0: abc 781 *** Failers 782No match 783 defabc 784No match 785 786/(?<=ab(c+)d)ef/ 787Failed: lookbehind assertion is not fixed length at offset 11 788 789/(?<=ab(?<=c+)d)ef/ 790Failed: lookbehind assertion is not fixed length at offset 12 791 792/(?<=ab(c|de)f)g/ 793Failed: lookbehind assertion is not fixed length at offset 13 794 795/The next three are in testinput2 because they have variable length branches/ 796 797/(?<=bullock|donkey)-cart/I 798Capturing subpattern count = 0 799No options 800First char = '-' 801Need char = 't' 802 the bullock-cart 803 0: -cart 804 a donkey-cart race 805 0: -cart 806 *** Failers 807No match 808 cart 809No match 810 horse-and-cart 811No match 812 813/(?<=ab(?i)x|y|z)/I 814Capturing subpattern count = 0 815No options 816No first char 817No need char 818 819/(?>.*)(?<=(abcd)|(xyz))/I 820Capturing subpattern count = 2 821No options 822First char at start or follows newline 823No need char 824 alphabetabcd 825 0: alphabetabcd 826 1: abcd 827 endingxyz 828 0: endingxyz 829 1: <unset> 830 2: xyz 831 832/(?<=ab(?i)x(?-i)y|(?i)z|b)ZZ/I 833Capturing subpattern count = 0 834No options 835First char = 'Z' 836Need char = 'Z' 837 abxyZZ 838 0: ZZ 839 abXyZZ 840 0: ZZ 841 ZZZ 842 0: ZZ 843 zZZ 844 0: ZZ 845 bZZ 846 0: ZZ 847 BZZ 848 0: ZZ 849 *** Failers 850No match 851 ZZ 852No match 853 abXYZZ 854No match 855 zzz 856No match 857 bzz 858No match 859 860/(?<!(foo)a)bar/I 861Capturing subpattern count = 1 862No options 863First char = 'b' 864Need char = 'r' 865 bar 866 0: bar 867 foobbar 868 0: bar 869 *** Failers 870No match 871 fooabar 872No match 873 874/This one is here because Perl 5.005_02 doesn't fail it/I 875Capturing subpattern count = 0 876No options 877First char = 'T' 878Need char = 't' 879 880/^(a)?(?(1)a|b)+$/I 881Capturing subpattern count = 1 882Options: anchored 883No first char 884No need char 885 *** Failers 886No match 887 a 888No match 889 890/This one is here because Perl behaves differently; see also the following/I 891Capturing subpattern count = 0 892No options 893First char = 'T' 894Need char = 'g' 895 896/^(a\1?){4}$/I 897Capturing subpattern count = 1 898Max back reference = 1 899Options: anchored 900No first char 901No need char 902 aaaa 903No match 904 aaaaaa 905No match 906 907/Perl does not fail these two for the final subjects. Neither did PCRE until/ 908/release 8.01. The problem is in backtracking into a subpattern that contains/ 909No match 910/a recursive reference to itself. PCRE has now made these into atomic patterns./ 911No match 912 913/^(xa|=?\1a){2}$/ 914 xa=xaa 915 0: xa=xaa 916 1: =xaa 917 ** Failers 918No match 919 xa=xaaa 920No match 921 922/^(xa|=?\1a)+$/ 923 xa=xaa 924 0: xa=xaa 925 1: =xaa 926 ** Failers 927No match 928 xa=xaaa 929No match 930 931/These are syntax tests from Perl 5.005/I 932Capturing subpattern count = 0 933No options 934First char = 'T' 935Need char = '5' 936 937/a[b-a]/ 938Failed: range out of order in character class at offset 4 939 940/a[]b/ 941Failed: missing terminating ] for character class at offset 4 942 943/a[/ 944Failed: missing terminating ] for character class at offset 2 945 946/*a/ 947Failed: nothing to repeat at offset 0 948 949/(*)b/ 950Failed: nothing to repeat at offset 1 951 952/abc)/ 953Failed: unmatched parentheses at offset 3 954 955/(abc/ 956Failed: missing ) at offset 4 957 958/a**/ 959Failed: nothing to repeat at offset 2 960 961/)(/ 962Failed: unmatched parentheses at offset 0 963 964/\1/ 965Failed: reference to non-existent subpattern at offset 2 966 967/\2/ 968Failed: reference to non-existent subpattern at offset 2 969 970/(a)|\2/ 971Failed: reference to non-existent subpattern at offset 6 972 973/a[b-a]/Ii 974Failed: range out of order in character class at offset 4 975 976/a[]b/Ii 977Failed: missing terminating ] for character class at offset 4 978 979/a[/Ii 980Failed: missing terminating ] for character class at offset 2 981 982/*a/Ii 983Failed: nothing to repeat at offset 0 984 985/(*)b/Ii 986Failed: nothing to repeat at offset 1 987 988/abc)/Ii 989Failed: unmatched parentheses at offset 3 990 991/(abc/Ii 992Failed: missing ) at offset 4 993 994/a**/Ii 995Failed: nothing to repeat at offset 2 996 997/)(/Ii 998Failed: unmatched parentheses at offset 0 999 1000/:(?:/ 1001Failed: missing ) at offset 4 1002 1003/(?<%)b/ 1004Failed: unrecognized character after (?< at offset 3 1005 1006/a(?{)b/ 1007Failed: unrecognized character after (? or (?- at offset 3 1008 1009/a(?{{})b/ 1010Failed: unrecognized character after (? or (?- at offset 3 1011 1012/a(?{}})b/ 1013Failed: unrecognized character after (? or (?- at offset 3 1014 1015/a(?{"{"})b/ 1016Failed: unrecognized character after (? or (?- at offset 3 1017 1018/a(?{"{"}})b/ 1019Failed: unrecognized character after (? or (?- at offset 3 1020 1021/(?(1?)a|b)/ 1022Failed: malformed number or name after (?( at offset 4 1023 1024/[a[:xyz:/ 1025Failed: missing terminating ] for character class at offset 8 1026 1027/(?<=x+)y/ 1028Failed: lookbehind assertion is not fixed length at offset 6 1029 1030/a{37,17}/ 1031Failed: numbers out of order in {} quantifier at offset 7 1032 1033/abc/\ 1034Failed: \ at end of pattern at offset 4 1035 1036/abc/\P 1037Failed: POSIX code 9: bad escape sequence at offset 4 1038 1039/abc/\i 1040Failed: \ at end of pattern at offset 4 1041 1042/(a)bc(d)/I 1043Capturing subpattern count = 2 1044No options 1045First char = 'a' 1046Need char = 'd' 1047 abcd 1048 0: abcd 1049 1: a 1050 2: d 1051 abcd\C2 1052 0: abcd 1053 1: a 1054 2: d 1055 2C d (1) 1056 abcd\C5 1057 0: abcd 1058 1: a 1059 2: d 1060copy substring 5 failed -7 1061 1062/(.{20})/I 1063Capturing subpattern count = 1 1064No options 1065No first char 1066No need char 1067 abcdefghijklmnopqrstuvwxyz 1068 0: abcdefghijklmnopqrst 1069 1: abcdefghijklmnopqrst 1070 abcdefghijklmnopqrstuvwxyz\C1 1071 0: abcdefghijklmnopqrst 1072 1: abcdefghijklmnopqrst 1073 1C abcdefghijklmnopqrst (20) 1074 abcdefghijklmnopqrstuvwxyz\G1 1075 0: abcdefghijklmnopqrst 1076 1: abcdefghijklmnopqrst 1077 1G abcdefghijklmnopqrst (20) 1078 1079/(.{15})/I 1080Capturing subpattern count = 1 1081No options 1082No first char 1083No need char 1084 abcdefghijklmnopqrstuvwxyz 1085 0: abcdefghijklmno 1086 1: abcdefghijklmno 1087 abcdefghijklmnopqrstuvwxyz\C1\G1 1088 0: abcdefghijklmno 1089 1: abcdefghijklmno 1090 1C abcdefghijklmno (15) 1091 1G abcdefghijklmno (15) 1092 1093/(.{16})/I 1094Capturing subpattern count = 1 1095No options 1096No first char 1097No need char 1098 abcdefghijklmnopqrstuvwxyz 1099 0: abcdefghijklmnop 1100 1: abcdefghijklmnop 1101 abcdefghijklmnopqrstuvwxyz\C1\G1\L 1102 0: abcdefghijklmnop 1103 1: abcdefghijklmnop 1104 1C abcdefghijklmnop (16) 1105 1G abcdefghijklmnop (16) 1106 0L abcdefghijklmnop 1107 1L abcdefghijklmnop 1108 1109/^(a|(bc))de(f)/I 1110Capturing subpattern count = 3 1111Options: anchored 1112No first char 1113No need char 1114 adef\G1\G2\G3\G4\L 1115 0: adef 1116 1: a 1117 2: <unset> 1118 3: f 1119 1G a (1) 1120 2G (0) 1121 3G f (1) 1122get substring 4 failed -7 1123 0L adef 1124 1L a 1125 2L 1126 3L f 1127 bcdef\G1\G2\G3\G4\L 1128 0: bcdef 1129 1: bc 1130 2: bc 1131 3: f 1132 1G bc (2) 1133 2G bc (2) 1134 3G f (1) 1135get substring 4 failed -7 1136 0L bcdef 1137 1L bc 1138 2L bc 1139 3L f 1140 adefghijk\C0 1141 0: adef 1142 1: a 1143 2: <unset> 1144 3: f 1145 0C adef (4) 1146 1147/^abc\00def/I 1148Capturing subpattern count = 0 1149Options: anchored 1150No first char 1151No need char 1152 abc\00def\L\C0 1153 0: abc\x00def 1154 0C abc (7) 1155 0L abc 1156 1157/word ((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ 1158)((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ 1159)?)?)?)?)?)?)?)?)?otherword/I 1160Capturing subpattern count = 8 1161Contains explicit CR or LF match 1162No options 1163First char = 'w' 1164Need char = 'd' 1165 1166/.*X/IDZ 1167------------------------------------------------------------------ 1168 Bra 1169 Any* 1170 X 1171 Ket 1172 End 1173------------------------------------------------------------------ 1174Capturing subpattern count = 0 1175No options 1176First char at start or follows newline 1177Need char = 'X' 1178 1179/.*X/IDZs 1180------------------------------------------------------------------ 1181 Bra 1182 AllAny* 1183 X 1184 Ket 1185 End 1186------------------------------------------------------------------ 1187Capturing subpattern count = 0 1188Options: anchored dotall 1189No first char 1190Need char = 'X' 1191 1192/(.*X|^B)/IDZ 1193------------------------------------------------------------------ 1194 Bra 1195 CBra 1 1196 Any* 1197 X 1198 Alt 1199 ^ 1200 B 1201 Ket 1202 Ket 1203 End 1204------------------------------------------------------------------ 1205Capturing subpattern count = 1 1206No options 1207First char at start or follows newline 1208No need char 1209 1210/(.*X|^B)/IDZs 1211------------------------------------------------------------------ 1212 Bra 1213 CBra 1 1214 AllAny* 1215 X 1216 Alt 1217 ^ 1218 B 1219 Ket 1220 Ket 1221 End 1222------------------------------------------------------------------ 1223Capturing subpattern count = 1 1224Options: anchored dotall 1225No first char 1226No need char 1227 1228/(?s)(.*X|^B)/IDZ 1229------------------------------------------------------------------ 1230 Bra 1231 CBra 1 1232 AllAny* 1233 X 1234 Alt 1235 ^ 1236 B 1237 Ket 1238 Ket 1239 End 1240------------------------------------------------------------------ 1241Capturing subpattern count = 1 1242Options: anchored dotall 1243No first char 1244No need char 1245 1246/(?s:.*X|^B)/IDZ 1247------------------------------------------------------------------ 1248 Bra 1249 Bra 1250 04 Opt 1251 AllAny* 1252 X 1253 Alt 1254 04 Opt 1255 ^ 1256 B 1257 Ket 1258 00 Opt 1259 Ket 1260 End 1261------------------------------------------------------------------ 1262Capturing subpattern count = 0 1263Options: anchored 1264No first char 1265No need char 1266 1267/\Biss\B/I+ 1268Capturing subpattern count = 0 1269No options 1270First char = 'i' 1271Need char = 's' 1272 Mississippi 1273 0: iss 1274 0+ issippi 1275 1276/\Biss\B/I+P 1277 Mississippi 1278 0: iss 1279 0+ issippi 1280 1281/iss/IG+ 1282Capturing subpattern count = 0 1283No options 1284First char = 'i' 1285Need char = 's' 1286 Mississippi 1287 0: iss 1288 0+ issippi 1289 0: iss 1290 0+ ippi 1291 1292/\Biss\B/IG+ 1293Capturing subpattern count = 0 1294No options 1295First char = 'i' 1296Need char = 's' 1297 Mississippi 1298 0: iss 1299 0+ issippi 1300 1301/\Biss\B/Ig+ 1302Capturing subpattern count = 0 1303No options 1304First char = 'i' 1305Need char = 's' 1306 Mississippi 1307 0: iss 1308 0+ issippi 1309 0: iss 1310 0+ ippi 1311 *** Failers 1312No match 1313 Mississippi\A 1314No match 1315 1316/(?<=[Ms])iss/Ig+ 1317Capturing subpattern count = 0 1318No options 1319First char = 'i' 1320Need char = 's' 1321 Mississippi 1322 0: iss 1323 0+ issippi 1324 0: iss 1325 0+ ippi 1326 1327/(?<=[Ms])iss/IG+ 1328Capturing subpattern count = 0 1329No options 1330First char = 'i' 1331Need char = 's' 1332 Mississippi 1333 0: iss 1334 0+ issippi 1335 1336/^iss/Ig+ 1337Capturing subpattern count = 0 1338Options: anchored 1339No first char 1340No need char 1341 ississippi 1342 0: iss 1343 0+ issippi 1344 1345/.*iss/Ig+ 1346Capturing subpattern count = 0 1347No options 1348First char at start or follows newline 1349Need char = 's' 1350 abciss\nxyzisspqr 1351 0: abciss 1352 0+ \x0axyzisspqr 1353 0: xyziss 1354 0+ pqr 1355 1356/.i./I+g 1357Capturing subpattern count = 0 1358No options 1359No first char 1360Need char = 'i' 1361 Mississippi 1362 0: Mis 1363 0+ sissippi 1364 0: sis 1365 0+ sippi 1366 0: sip 1367 0+ pi 1368 Mississippi\A 1369 0: Mis 1370 0+ sissippi 1371 0: sis 1372 0+ sippi 1373 0: sip 1374 0+ pi 1375 Missouri river 1376 0: Mis 1377 0+ souri river 1378 0: ri 1379 0+ river 1380 0: riv 1381 0+ er 1382 Missouri river\A 1383 0: Mis 1384 0+ souri river 1385 1386/^.is/I+g 1387Capturing subpattern count = 0 1388Options: anchored 1389No first char 1390No need char 1391 Mississippi 1392 0: Mis 1393 0+ sissippi 1394 1395/^ab\n/Ig+ 1396Capturing subpattern count = 0 1397Contains explicit CR or LF match 1398Options: anchored 1399No first char 1400No need char 1401 ab\nab\ncd 1402 0: ab\x0a 1403 0+ ab\x0acd 1404 1405/^ab\n/Img+ 1406Capturing subpattern count = 0 1407Contains explicit CR or LF match 1408Options: multiline 1409First char at start or follows newline 1410Need char = 10 1411 ab\nab\ncd 1412 0: ab\x0a 1413 0+ ab\x0acd 1414 0: ab\x0a 1415 0+ cd 1416 1417/abc/I 1418Capturing subpattern count = 0 1419No options 1420First char = 'a' 1421Need char = 'c' 1422 1423/abc|bac/I 1424Capturing subpattern count = 0 1425No options 1426No first char 1427Need char = 'c' 1428 1429/(abc|bac)/I 1430Capturing subpattern count = 1 1431No options 1432No first char 1433Need char = 'c' 1434 1435/(abc|(c|dc))/I 1436Capturing subpattern count = 2 1437No options 1438No first char 1439Need char = 'c' 1440 1441/(abc|(d|de)c)/I 1442Capturing subpattern count = 2 1443No options 1444No first char 1445Need char = 'c' 1446 1447/a*/I 1448Capturing subpattern count = 0 1449No options 1450No first char 1451No need char 1452 1453/a+/I 1454Capturing subpattern count = 0 1455No options 1456First char = 'a' 1457No need char 1458 1459/(baa|a+)/I 1460Capturing subpattern count = 1 1461No options 1462No first char 1463Need char = 'a' 1464 1465/a{0,3}/I 1466Capturing subpattern count = 0 1467No options 1468No first char 1469No need char 1470 1471/baa{3,}/I 1472Capturing subpattern count = 0 1473No options 1474First char = 'b' 1475Need char = 'a' 1476 1477/"([^\\"]+|\\.)*"/I 1478Capturing subpattern count = 1 1479No options 1480First char = '"' 1481Need char = '"' 1482 1483/(abc|ab[cd])/I 1484Capturing subpattern count = 1 1485No options 1486First char = 'a' 1487No need char 1488 1489/(a|.)/I 1490Capturing subpattern count = 1 1491No options 1492No first char 1493No need char 1494 1495/a|ba|\w/I 1496Capturing subpattern count = 0 1497No options 1498No first char 1499No need char 1500 1501/abc(?=pqr)/I 1502Capturing subpattern count = 0 1503No options 1504First char = 'a' 1505Need char = 'r' 1506 1507/...(?<=abc)/I 1508Capturing subpattern count = 0 1509No options 1510No first char 1511No need char 1512 1513/abc(?!pqr)/I 1514Capturing subpattern count = 0 1515No options 1516First char = 'a' 1517Need char = 'c' 1518 1519/ab./I 1520Capturing subpattern count = 0 1521No options 1522First char = 'a' 1523Need char = 'b' 1524 1525/ab[xyz]/I 1526Capturing subpattern count = 0 1527No options 1528First char = 'a' 1529Need char = 'b' 1530 1531/abc*/I 1532Capturing subpattern count = 0 1533No options 1534First char = 'a' 1535Need char = 'b' 1536 1537/ab.c*/I 1538Capturing subpattern count = 0 1539No options 1540First char = 'a' 1541Need char = 'b' 1542 1543/a.c*/I 1544Capturing subpattern count = 0 1545No options 1546First char = 'a' 1547No need char 1548 1549/.c*/I 1550Capturing subpattern count = 0 1551No options 1552No first char 1553No need char 1554 1555/ac*/I 1556Capturing subpattern count = 0 1557No options 1558First char = 'a' 1559No need char 1560 1561/(a.c*|b.c*)/I 1562Capturing subpattern count = 1 1563No options 1564No first char 1565No need char 1566 1567/a.c*|aba/I 1568Capturing subpattern count = 0 1569No options 1570First char = 'a' 1571No need char 1572 1573/.+a/I 1574Capturing subpattern count = 0 1575No options 1576No first char 1577Need char = 'a' 1578 1579/(?=abcda)a.*/I 1580Capturing subpattern count = 0 1581No options 1582First char = 'a' 1583Need char = 'a' 1584 1585/(?=a)a.*/I 1586Capturing subpattern count = 0 1587No options 1588First char = 'a' 1589No need char 1590 1591/a(b)*/I 1592Capturing subpattern count = 1 1593No options 1594First char = 'a' 1595No need char 1596 1597/a\d*/I 1598Capturing subpattern count = 0 1599No options 1600First char = 'a' 1601No need char 1602 1603/ab\d*/I 1604Capturing subpattern count = 0 1605No options 1606First char = 'a' 1607Need char = 'b' 1608 1609/a(\d)*/I 1610Capturing subpattern count = 1 1611No options 1612First char = 'a' 1613No need char 1614 1615/abcde{0,0}/I 1616Capturing subpattern count = 0 1617No options 1618First char = 'a' 1619Need char = 'd' 1620 1621/ab\d+/I 1622Capturing subpattern count = 0 1623No options 1624First char = 'a' 1625Need char = 'b' 1626 1627/a(?(1)b)(.)/I 1628Capturing subpattern count = 1 1629No options 1630First char = 'a' 1631No need char 1632 1633/a(?(1)bag|big)(.)/I 1634Capturing subpattern count = 1 1635No options 1636First char = 'a' 1637Need char = 'g' 1638 1639/a(?(1)bag|big)*(.)/I 1640Capturing subpattern count = 1 1641No options 1642First char = 'a' 1643No need char 1644 1645/a(?(1)bag|big)+(.)/I 1646Capturing subpattern count = 1 1647No options 1648First char = 'a' 1649Need char = 'g' 1650 1651/a(?(1)b..|b..)(.)/I 1652Capturing subpattern count = 1 1653No options 1654First char = 'a' 1655Need char = 'b' 1656 1657/ab\d{0}e/I 1658Capturing subpattern count = 0 1659No options 1660First char = 'a' 1661Need char = 'e' 1662 1663/a?b?/I 1664Capturing subpattern count = 0 1665No options 1666No first char 1667No need char 1668 a 1669 0: a 1670 b 1671 0: b 1672 ab 1673 0: ab 1674 \ 1675 0: 1676 *** Failers 1677 0: 1678 \N 1679No match 1680 1681/|-/I 1682Capturing subpattern count = 0 1683No options 1684No first char 1685No need char 1686 abcd 1687 0: 1688 -abc 1689 0: 1690 \Nab-c 1691 0: - 1692 *** Failers 1693 0: 1694 \Nabc 1695No match 1696 1697/a*(b+)(z)(z)/P 1698 aaaabbbbzzzz 1699 0: aaaabbbbzz 1700 1: bbbb 1701 2: z 1702 3: z 1703 aaaabbbbzzzz\O0 1704 aaaabbbbzzzz\O1 1705 0: aaaabbbbzz 1706 aaaabbbbzzzz\O2 1707 0: aaaabbbbzz 1708 1: bbbb 1709 aaaabbbbzzzz\O3 1710 0: aaaabbbbzz 1711 1: bbbb 1712 2: z 1713 aaaabbbbzzzz\O4 1714 0: aaaabbbbzz 1715 1: bbbb 1716 2: z 1717 3: z 1718 aaaabbbbzzzz\O5 1719 0: aaaabbbbzz 1720 1: bbbb 1721 2: z 1722 3: z 1723 1724/^.?abcd/IS 1725Capturing subpattern count = 0 1726Options: anchored 1727No first char 1728Need char = 'd' 1729Subject length lower bound = 4 1730No set of starting bytes 1731 1732/\( # ( at start 1733 (?: # Non-capturing bracket 1734 (?>[^()]+) # Either a sequence of non-brackets (no backtracking) 1735 | # Or 1736 (?R) # Recurse - i.e. nested bracketed string 1737 )* # Zero or more contents 1738 \) # Closing ) 1739 /Ix 1740Capturing subpattern count = 0 1741Options: extended 1742First char = '(' 1743Need char = ')' 1744 (abcd) 1745 0: (abcd) 1746 (abcd)xyz 1747 0: (abcd) 1748 xyz(abcd) 1749 0: (abcd) 1750 (ab(xy)cd)pqr 1751 0: (ab(xy)cd) 1752 (ab(xycd)pqr 1753 0: (xycd) 1754 () abc () 1755 0: () 1756 12(abcde(fsh)xyz(foo(bar))lmno)89 1757 0: (abcde(fsh)xyz(foo(bar))lmno) 1758 *** Failers 1759No match 1760 abcd 1761No match 1762 abcd) 1763No match 1764 (abcd 1765No match 1766 1767/\( ( (?>[^()]+) | (?R) )* \) /Ixg 1768Capturing subpattern count = 1 1769Options: extended 1770First char = '(' 1771Need char = ')' 1772 (ab(xy)cd)pqr 1773 0: (ab(xy)cd) 1774 1: cd 1775 1(abcd)(x(y)z)pqr 1776 0: (abcd) 1777 1: abcd 1778 0: (x(y)z) 1779 1: z 1780 1781/\( (?: (?>[^()]+) | (?R) ) \) /Ix 1782Capturing subpattern count = 0 1783Options: extended 1784First char = '(' 1785Need char = ')' 1786 (abcd) 1787 0: (abcd) 1788 (ab(xy)cd) 1789 0: (xy) 1790 (a(b(c)d)e) 1791 0: (c) 1792 ((ab)) 1793 0: ((ab)) 1794 *** Failers 1795No match 1796 () 1797No match 1798 1799/\( (?: (?>[^()]+) | (?R) )? \) /Ix 1800Capturing subpattern count = 0 1801Options: extended 1802First char = '(' 1803Need char = ')' 1804 () 1805 0: () 1806 12(abcde(fsh)xyz(foo(bar))lmno)89 1807 0: (fsh) 1808 1809/\( ( (?>[^()]+) | (?R) )* \) /Ix 1810Capturing subpattern count = 1 1811Options: extended 1812First char = '(' 1813Need char = ')' 1814 (ab(xy)cd) 1815 0: (ab(xy)cd) 1816 1: cd 1817 1818/\( ( ( (?>[^()]+) | (?R) )* ) \) /Ix 1819Capturing subpattern count = 2 1820Options: extended 1821First char = '(' 1822Need char = ')' 1823 (ab(xy)cd) 1824 0: (ab(xy)cd) 1825 1: ab(xy)cd 1826 2: cd 1827 1828/\( (123)? ( ( (?>[^()]+) | (?R) )* ) \) /Ix 1829Capturing subpattern count = 3 1830Options: extended 1831First char = '(' 1832Need char = ')' 1833 (ab(xy)cd) 1834 0: (ab(xy)cd) 1835 1: <unset> 1836 2: ab(xy)cd 1837 3: cd 1838 (123ab(xy)cd) 1839 0: (123ab(xy)cd) 1840 1: 123 1841 2: ab(xy)cd 1842 3: cd 1843 1844/\( ( (123)? ( (?>[^()]+) | (?R) )* ) \) /Ix 1845Capturing subpattern count = 3 1846Options: extended 1847First char = '(' 1848Need char = ')' 1849 (ab(xy)cd) 1850 0: (ab(xy)cd) 1851 1: ab(xy)cd 1852 2: <unset> 1853 3: cd 1854 (123ab(xy)cd) 1855 0: (123ab(xy)cd) 1856 1: 123ab(xy)cd 1857 2: 123 1858 3: cd 1859 1860/\( (((((((((( ( (?>[^()]+) | (?R) )* )))))))))) \) /Ix 1861Capturing subpattern count = 11 1862Options: extended 1863First char = '(' 1864Need char = ')' 1865 (ab(xy)cd) 1866 0: (ab(xy)cd) 1867 1: ab(xy)cd 1868 2: ab(xy)cd 1869 3: ab(xy)cd 1870 4: ab(xy)cd 1871 5: ab(xy)cd 1872 6: ab(xy)cd 1873 7: ab(xy)cd 1874 8: ab(xy)cd 1875 9: ab(xy)cd 187610: ab(xy)cd 187711: cd 1878 1879/\( ( ( (?>[^()<>]+) | ((?>[^()]+)) | (?R) )* ) \) /Ix 1880Capturing subpattern count = 3 1881Options: extended 1882First char = '(' 1883Need char = ')' 1884 (abcd(xyz<p>qrs)123) 1885 0: (abcd(xyz<p>qrs)123) 1886 1: abcd(xyz<p>qrs)123 1887 2: 123 1888 1889/\( ( ( (?>[^()]+) | ((?R)) )* ) \) /Ix 1890Capturing subpattern count = 3 1891Options: extended 1892First char = '(' 1893Need char = ')' 1894 (ab(cd)ef) 1895 0: (ab(cd)ef) 1896 1: ab(cd)ef 1897 2: ef 1898 3: (cd) 1899 (ab(cd(ef)gh)ij) 1900 0: (ab(cd(ef)gh)ij) 1901 1: ab(cd(ef)gh)ij 1902 2: ij 1903 3: (cd(ef)gh) 1904 1905/^[[:alnum:]]/DZ 1906------------------------------------------------------------------ 1907 Bra 1908 ^ 1909 [0-9A-Za-z] 1910 Ket 1911 End 1912------------------------------------------------------------------ 1913Capturing subpattern count = 0 1914Options: anchored 1915No first char 1916No need char 1917 1918/^[[:^alnum:]]/DZ 1919------------------------------------------------------------------ 1920 Bra 1921 ^ 1922 [\x00-/:-@[-`{-\xff] (neg) 1923 Ket 1924 End 1925------------------------------------------------------------------ 1926Capturing subpattern count = 0 1927Options: anchored 1928No first char 1929No need char 1930 1931/^[[:alpha:]]/DZ 1932------------------------------------------------------------------ 1933 Bra 1934 ^ 1935 [A-Za-z] 1936 Ket 1937 End 1938------------------------------------------------------------------ 1939Capturing subpattern count = 0 1940Options: anchored 1941No first char 1942No need char 1943 1944/^[[:^alpha:]]/DZ 1945------------------------------------------------------------------ 1946 Bra 1947 ^ 1948 [\x00-@[-`{-\xff] (neg) 1949 Ket 1950 End 1951------------------------------------------------------------------ 1952Capturing subpattern count = 0 1953Options: anchored 1954No first char 1955No need char 1956 1957/[_[:alpha:]]/IS 1958Capturing subpattern count = 0 1959No options 1960No first char 1961No need char 1962Subject length lower bound = 1 1963Starting byte set: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 1964 _ a b c d e f g h i j k l m n o p q r s t u v w x y z 1965 1966/^[[:ascii:]]/DZ 1967------------------------------------------------------------------ 1968 Bra 1969 ^ 1970 [\x00-\x7f] 1971 Ket 1972 End 1973------------------------------------------------------------------ 1974Capturing subpattern count = 0 1975Options: anchored 1976No first char 1977No need char 1978 1979/^[[:^ascii:]]/DZ 1980------------------------------------------------------------------ 1981 Bra 1982 ^ 1983 [\x80-\xff] (neg) 1984 Ket 1985 End 1986------------------------------------------------------------------ 1987Capturing subpattern count = 0 1988Options: anchored 1989No first char 1990No need char 1991 1992/^[[:blank:]]/DZ 1993------------------------------------------------------------------ 1994 Bra 1995 ^ 1996 [\x09 ] 1997 Ket 1998 End 1999------------------------------------------------------------------ 2000Capturing subpattern count = 0 2001Options: anchored 2002No first char 2003No need char 2004 2005/^[[:^blank:]]/DZ 2006------------------------------------------------------------------ 2007 Bra 2008 ^ 2009 [\x00-\x08\x0a-\x1f!-\xff] (neg) 2010 Ket 2011 End 2012------------------------------------------------------------------ 2013Capturing subpattern count = 0 2014Options: anchored 2015No first char 2016No need char 2017 2018/[\n\x0b\x0c\x0d[:blank:]]/IS 2019Capturing subpattern count = 0 2020Contains explicit CR or LF match 2021No options 2022No first char 2023No need char 2024Subject length lower bound = 1 2025Starting byte set: \x09 \x0a \x0b \x0c \x0d \x20 2026 2027/^[[:cntrl:]]/DZ 2028------------------------------------------------------------------ 2029 Bra 2030 ^ 2031 [\x00-\x1f\x7f] 2032 Ket 2033 End 2034------------------------------------------------------------------ 2035Capturing subpattern count = 0 2036Options: anchored 2037No first char 2038No need char 2039 2040/^[[:digit:]]/DZ 2041------------------------------------------------------------------ 2042 Bra 2043 ^ 2044 [0-9] 2045 Ket 2046 End 2047------------------------------------------------------------------ 2048Capturing subpattern count = 0 2049Options: anchored 2050No first char 2051No need char 2052 2053/^[[:graph:]]/DZ 2054------------------------------------------------------------------ 2055 Bra 2056 ^ 2057 [!-~] 2058 Ket 2059 End 2060------------------------------------------------------------------ 2061Capturing subpattern count = 0 2062Options: anchored 2063No first char 2064No need char 2065 2066/^[[:lower:]]/DZ 2067------------------------------------------------------------------ 2068 Bra 2069 ^ 2070 [a-z] 2071 Ket 2072 End 2073------------------------------------------------------------------ 2074Capturing subpattern count = 0 2075Options: anchored 2076No first char 2077No need char 2078 2079/^[[:print:]]/DZ 2080------------------------------------------------------------------ 2081 Bra 2082 ^ 2083 [ -~] 2084 Ket 2085 End 2086------------------------------------------------------------------ 2087Capturing subpattern count = 0 2088Options: anchored 2089No first char 2090No need char 2091 2092/^[[:punct:]]/DZ 2093------------------------------------------------------------------ 2094 Bra 2095 ^ 2096 [!-/:-@[-`{-~] 2097 Ket 2098 End 2099------------------------------------------------------------------ 2100Capturing subpattern count = 0 2101Options: anchored 2102No first char 2103No need char 2104 2105/^[[:space:]]/DZ 2106------------------------------------------------------------------ 2107 Bra 2108 ^ 2109 [\x09-\x0d ] 2110 Ket 2111 End 2112------------------------------------------------------------------ 2113Capturing subpattern count = 0 2114Options: anchored 2115No first char 2116No need char 2117 2118/^[[:upper:]]/DZ 2119------------------------------------------------------------------ 2120 Bra 2121 ^ 2122 [A-Z] 2123 Ket 2124 End 2125------------------------------------------------------------------ 2126Capturing subpattern count = 0 2127Options: anchored 2128No first char 2129No need char 2130 2131/^[[:xdigit:]]/DZ 2132------------------------------------------------------------------ 2133 Bra 2134 ^ 2135 [0-9A-Fa-f] 2136 Ket 2137 End 2138------------------------------------------------------------------ 2139Capturing subpattern count = 0 2140Options: anchored 2141No first char 2142No need char 2143 2144/^[[:word:]]/DZ 2145------------------------------------------------------------------ 2146 Bra 2147 ^ 2148 [0-9A-Z_a-z] 2149 Ket 2150 End 2151------------------------------------------------------------------ 2152Capturing subpattern count = 0 2153Options: anchored 2154No first char 2155No need char 2156 2157/^[[:^cntrl:]]/DZ 2158------------------------------------------------------------------ 2159 Bra 2160 ^ 2161 [ -~\x80-\xff] (neg) 2162 Ket 2163 End 2164------------------------------------------------------------------ 2165Capturing subpattern count = 0 2166Options: anchored 2167No first char 2168No need char 2169 2170/^[12[:^digit:]]/DZ 2171------------------------------------------------------------------ 2172 Bra 2173 ^ 2174 [\x00-/12:-\xff] (neg) 2175 Ket 2176 End 2177------------------------------------------------------------------ 2178Capturing subpattern count = 0 2179Options: anchored 2180No first char 2181No need char 2182 2183/^[[:^blank:]]/DZ 2184------------------------------------------------------------------ 2185 Bra 2186 ^ 2187 [\x00-\x08\x0a-\x1f!-\xff] (neg) 2188 Ket 2189 End 2190------------------------------------------------------------------ 2191Capturing subpattern count = 0 2192Options: anchored 2193No first char 2194No need char 2195 2196/[01[:alpha:]%]/DZ 2197------------------------------------------------------------------ 2198 Bra 2199 [%01A-Za-z] 2200 Ket 2201 End 2202------------------------------------------------------------------ 2203Capturing subpattern count = 0 2204No options 2205No first char 2206No need char 2207 2208/[[.ch.]]/I 2209Failed: POSIX collating elements are not supported at offset 1 2210 2211/[[=ch=]]/I 2212Failed: POSIX collating elements are not supported at offset 1 2213 2214/[[:rhubarb:]]/I 2215Failed: unknown POSIX class name at offset 3 2216 2217/[[:upper:]]/Ii 2218Capturing subpattern count = 0 2219Options: caseless 2220No first char 2221No need char 2222 A 2223 0: A 2224 a 2225 0: a 2226 2227/[[:lower:]]/Ii 2228Capturing subpattern count = 0 2229Options: caseless 2230No first char 2231No need char 2232 A 2233 0: A 2234 a 2235 0: a 2236 2237/((?-i)[[:lower:]])[[:lower:]]/Ii 2238Capturing subpattern count = 1 2239Options: caseless 2240No first char 2241No need char 2242 ab 2243 0: ab 2244 1: a 2245 aB 2246 0: aB 2247 1: a 2248 *** Failers 2249 0: ai 2250 1: a 2251 Ab 2252No match 2253 AB 2254No match 2255 2256/[\200-\110]/I 2257Failed: range out of order in character class at offset 9 2258 2259/^(?(0)f|b)oo/I 2260Failed: invalid condition (?(0) at offset 6 2261 2262/This one's here because of the large output vector needed/I 2263Capturing subpattern count = 0 2264No options 2265First char = 'T' 2266Need char = 'd' 2267 2268/(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\w+)\s+(\270)/I 2269Capturing subpattern count = 271 2270Max back reference = 270 2271No options 2272No first char 2273No need char 2274 \O900 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 ABC ABC 2275 0: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 ABC ABC 2276 1: 1 2277 2: 2 2278 3: 3 2279 4: 4 2280 5: 5 2281 6: 6 2282 7: 7 2283 8: 8 2284 9: 9 228510: 10 228611: 11 228712: 12 228813: 13 228914: 14 229015: 15 229116: 16 229217: 17 229318: 18 229419: 19 229520: 20 229621: 21 229722: 22 229823: 23 229924: 24 230025: 25 230126: 26 230227: 27 230328: 28 230429: 29 230530: 30 230631: 31 230732: 32 230833: 33 230934: 34 231035: 35 231136: 36 231237: 37 231338: 38 231439: 39 231540: 40 231641: 41 231742: 42 231843: 43 231944: 44 232045: 45 232146: 46 232247: 47 232348: 48 232449: 49 232550: 50 232651: 51 232752: 52 232853: 53 232954: 54 233055: 55 233156: 56 233257: 57 233358: 58 233459: 59 233560: 60 233661: 61 233762: 62 233863: 63 233964: 64 234065: 65 234166: 66 234267: 67 234368: 68 234469: 69 234570: 70 234671: 71 234772: 72 234873: 73 234974: 74 235075: 75 235176: 76 235277: 77 235378: 78 235479: 79 235580: 80 235681: 81 235782: 82 235883: 83 235984: 84 236085: 85 236186: 86 236287: 87 236388: 88 236489: 89 236590: 90 236691: 91 236792: 92 236893: 93 236994: 94 237095: 95 237196: 96 237297: 97 237398: 98 237499: 99 2375100: 100 2376101: 101 2377102: 102 2378103: 103 2379104: 104 2380105: 105 2381106: 106 2382107: 107 2383108: 108 2384109: 109 2385110: 110 2386111: 111 2387112: 112 2388113: 113 2389114: 114 2390115: 115 2391116: 116 2392117: 117 2393118: 118 2394119: 119 2395120: 120 2396121: 121 2397122: 122 2398123: 123 2399124: 124 2400125: 125 2401126: 126 2402127: 127 2403128: 128 2404129: 129 2405130: 130 2406131: 131 2407132: 132 2408133: 133 2409134: 134 2410135: 135 2411136: 136 2412137: 137 2413138: 138 2414139: 139 2415140: 140 2416141: 141 2417142: 142 2418143: 143 2419144: 144 2420145: 145 2421146: 146 2422147: 147 2423148: 148 2424149: 149 2425150: 150 2426151: 151 2427152: 152 2428153: 153 2429154: 154 2430155: 155 2431156: 156 2432157: 157 2433158: 158 2434159: 159 2435160: 160 2436161: 161 2437162: 162 2438163: 163 2439164: 164 2440165: 165 2441166: 166 2442167: 167 2443168: 168 2444169: 169 2445170: 170 2446171: 171 2447172: 172 2448173: 173 2449174: 174 2450175: 175 2451176: 176 2452177: 177 2453178: 178 2454179: 179 2455180: 180 2456181: 181 2457182: 182 2458183: 183 2459184: 184 2460185: 185 2461186: 186 2462187: 187 2463188: 188 2464189: 189 2465190: 190 2466191: 191 2467192: 192 2468193: 193 2469194: 194 2470195: 195 2471196: 196 2472197: 197 2473198: 198 2474199: 199 2475200: 200 2476201: 201 2477202: 202 2478203: 203 2479204: 204 2480205: 205 2481206: 206 2482207: 207 2483208: 208 2484209: 209 2485210: 210 2486211: 211 2487212: 212 2488213: 213 2489214: 214 2490215: 215 2491216: 216 2492217: 217 2493218: 218 2494219: 219 2495220: 220 2496221: 221 2497222: 222 2498223: 223 2499224: 224 2500225: 225 2501226: 226 2502227: 227 2503228: 228 2504229: 229 2505230: 230 2506231: 231 2507232: 232 2508233: 233 2509234: 234 2510235: 235 2511236: 236 2512237: 237 2513238: 238 2514239: 239 2515240: 240 2516241: 241 2517242: 242 2518243: 243 2519244: 244 2520245: 245 2521246: 246 2522247: 247 2523248: 248 2524249: 249 2525250: 250 2526251: 251 2527252: 252 2528253: 253 2529254: 254 2530255: 255 2531256: 256 2532257: 257 2533258: 258 2534259: 259 2535260: 260 2536261: 261 2537262: 262 2538263: 263 2539264: 264 2540265: 265 2541266: 266 2542267: 267 2543268: 268 2544269: 269 2545270: ABC 2546271: ABC 2547 2548/This one's here because Perl does this differently and PCRE can't at present/I 2549Capturing subpattern count = 0 2550No options 2551First char = 'T' 2552Need char = 't' 2553 2554/(main(O)?)+/I 2555Capturing subpattern count = 2 2556No options 2557First char = 'm' 2558Need char = 'n' 2559 mainmain 2560 0: mainmain 2561 1: main 2562 mainOmain 2563 0: mainOmain 2564 1: main 2565 2: O 2566 2567/These are all cases where Perl does it differently (nested captures)/I 2568Capturing subpattern count = 1 2569No options 2570First char = 'T' 2571Need char = 's' 2572 2573/^(a(b)?)+$/I 2574Capturing subpattern count = 2 2575Options: anchored 2576No first char 2577No need char 2578 aba 2579 0: aba 2580 1: a 2581 2: b 2582 2583/^(aa(bb)?)+$/I 2584Capturing subpattern count = 2 2585Options: anchored 2586No first char 2587No need char 2588 aabbaa 2589 0: aabbaa 2590 1: aa 2591 2: bb 2592 2593/^(aa|aa(bb))+$/I 2594Capturing subpattern count = 2 2595Options: anchored 2596No first char 2597No need char 2598 aabbaa 2599 0: aabbaa 2600 1: aa 2601 2: bb 2602 2603/^(aa(bb)??)+$/I 2604Capturing subpattern count = 2 2605Options: anchored 2606No first char 2607No need char 2608 aabbaa 2609 0: aabbaa 2610 1: aa 2611 2: bb 2612 2613/^(?:aa(bb)?)+$/I 2614Capturing subpattern count = 1 2615Options: anchored 2616No first char 2617No need char 2618 aabbaa 2619 0: aabbaa 2620 1: bb 2621 2622/^(aa(b(b))?)+$/I 2623Capturing subpattern count = 3 2624Options: anchored 2625No first char 2626No need char 2627 aabbaa 2628 0: aabbaa 2629 1: aa 2630 2: bb 2631 3: b 2632 2633/^(?:aa(b(b))?)+$/I 2634Capturing subpattern count = 2 2635Options: anchored 2636No first char 2637No need char 2638 aabbaa 2639 0: aabbaa 2640 1: bb 2641 2: b 2642 2643/^(?:aa(b(?:b))?)+$/I 2644Capturing subpattern count = 1 2645Options: anchored 2646No first char 2647No need char 2648 aabbaa 2649 0: aabbaa 2650 1: bb 2651 2652/^(?:aa(bb(?:b))?)+$/I 2653Capturing subpattern count = 1 2654Options: anchored 2655No first char 2656No need char 2657 aabbbaa 2658 0: aabbbaa 2659 1: bbb 2660 2661/^(?:aa(b(?:bb))?)+$/I 2662Capturing subpattern count = 1 2663Options: anchored 2664No first char 2665No need char 2666 aabbbaa 2667 0: aabbbaa 2668 1: bbb 2669 2670/^(?:aa(?:b(b))?)+$/I 2671Capturing subpattern count = 1 2672Options: anchored 2673No first char 2674No need char 2675 aabbaa 2676 0: aabbaa 2677 1: b 2678 2679/^(?:aa(?:b(bb))?)+$/I 2680Capturing subpattern count = 1 2681Options: anchored 2682No first char 2683No need char 2684 aabbbaa 2685 0: aabbbaa 2686 1: bb 2687 2688/^(aa(b(bb))?)+$/I 2689Capturing subpattern count = 3 2690Options: anchored 2691No first char 2692No need char 2693 aabbbaa 2694 0: aabbbaa 2695 1: aa 2696 2: bbb 2697 3: bb 2698 2699/^(aa(bb(bb))?)+$/I 2700Capturing subpattern count = 3 2701Options: anchored 2702No first char 2703No need char 2704 aabbbbaa 2705 0: aabbbbaa 2706 1: aa 2707 2: bbbb 2708 3: bb 2709 2710/--------------------------------------------------------------------/I 2711Capturing subpattern count = 0 2712No options 2713First char = '-' 2714Need char = '-' 2715 2716/#/IxDZ 2717------------------------------------------------------------------ 2718 Bra 2719 Ket 2720 End 2721------------------------------------------------------------------ 2722Capturing subpattern count = 0 2723Options: extended 2724No first char 2725No need char 2726 2727/a#/IxDZ 2728------------------------------------------------------------------ 2729 Bra 2730 a 2731 Ket 2732 End 2733------------------------------------------------------------------ 2734Capturing subpattern count = 0 2735Options: extended 2736First char = 'a' 2737No need char 2738 2739/[\s]/DZ 2740------------------------------------------------------------------ 2741 Bra 2742 [\x09\x0a\x0c\x0d ] 2743 Ket 2744 End 2745------------------------------------------------------------------ 2746Capturing subpattern count = 0 2747No options 2748No first char 2749No need char 2750 2751/[\S]/DZ 2752------------------------------------------------------------------ 2753 Bra 2754 [\x00-\x08\x0b\x0e-\x1f!-\xff] (neg) 2755 Ket 2756 End 2757------------------------------------------------------------------ 2758Capturing subpattern count = 0 2759No options 2760No first char 2761No need char 2762 2763/a(?i)b/DZ 2764------------------------------------------------------------------ 2765 Bra 2766 a 2767 01 Opt 2768 NC b 2769 Ket 2770 End 2771------------------------------------------------------------------ 2772Capturing subpattern count = 0 2773No options 2774First char = 'a' 2775Need char = 'b' (caseless) 2776 ab 2777 0: ab 2778 aB 2779 0: aB 2780 *** Failers 2781No match 2782 AB 2783No match 2784 2785/(a(?i)b)/DZ 2786------------------------------------------------------------------ 2787 Bra 2788 CBra 1 2789 a 2790 01 Opt 2791 NC b 2792 Ket 2793 00 Opt 2794 Ket 2795 End 2796------------------------------------------------------------------ 2797Capturing subpattern count = 1 2798No options 2799First char = 'a' 2800Need char = 'b' (caseless) 2801 ab 2802 0: ab 2803 1: ab 2804 aB 2805 0: aB 2806 1: aB 2807 *** Failers 2808No match 2809 AB 2810No match 2811 2812/ (?i)abc/IxDZ 2813------------------------------------------------------------------ 2814 Bra 2815 NC abc 2816 Ket 2817 End 2818------------------------------------------------------------------ 2819Capturing subpattern count = 0 2820Options: caseless extended 2821First char = 'a' (caseless) 2822Need char = 'c' (caseless) 2823 2824/#this is a comment 2825 (?i)abc/IxDZ 2826------------------------------------------------------------------ 2827 Bra 2828 NC abc 2829 Ket 2830 End 2831------------------------------------------------------------------ 2832Capturing subpattern count = 0 2833Options: caseless extended 2834First char = 'a' (caseless) 2835Need char = 'c' (caseless) 2836 2837/123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/DZ 2838------------------------------------------------------------------ 2839 Bra 2840 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 2841 Ket 2842 End 2843------------------------------------------------------------------ 2844Capturing subpattern count = 0 2845No options 2846First char = '1' 2847Need char = '0' 2848 2849/\Q123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/DZ 2850------------------------------------------------------------------ 2851 Bra 2852 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 2853 Ket 2854 End 2855------------------------------------------------------------------ 2856Capturing subpattern count = 0 2857No options 2858First char = '1' 2859Need char = '0' 2860 2861/\Q\E/DZ 2862------------------------------------------------------------------ 2863 Bra 2864 Ket 2865 End 2866------------------------------------------------------------------ 2867Capturing subpattern count = 0 2868No options 2869No first char 2870No need char 2871 \ 2872 0: 2873 2874/\Q\Ex/DZ 2875------------------------------------------------------------------ 2876 Bra 2877 x 2878 Ket 2879 End 2880------------------------------------------------------------------ 2881Capturing subpattern count = 0 2882No options 2883First char = 'x' 2884No need char 2885 2886/ \Q\E/DZ 2887------------------------------------------------------------------ 2888 Bra 2889 2890 Ket 2891 End 2892------------------------------------------------------------------ 2893Capturing subpattern count = 0 2894No options 2895First char = ' ' 2896No need char 2897 2898/a\Q\E/DZ 2899------------------------------------------------------------------ 2900 Bra 2901 a 2902 Ket 2903 End 2904------------------------------------------------------------------ 2905Capturing subpattern count = 0 2906No options 2907First char = 'a' 2908No need char 2909 abc 2910 0: a 2911 bca 2912 0: a 2913 bac 2914 0: a 2915 2916/a\Q\Eb/DZ 2917------------------------------------------------------------------ 2918 Bra 2919 ab 2920 Ket 2921 End 2922------------------------------------------------------------------ 2923Capturing subpattern count = 0 2924No options 2925First char = 'a' 2926Need char = 'b' 2927 abc 2928 0: ab 2929 2930/\Q\Eabc/DZ 2931------------------------------------------------------------------ 2932 Bra 2933 abc 2934 Ket 2935 End 2936------------------------------------------------------------------ 2937Capturing subpattern count = 0 2938No options 2939First char = 'a' 2940Need char = 'c' 2941 2942/x*+\w/DZ 2943------------------------------------------------------------------ 2944 Bra 2945 x*+ 2946 \w 2947 Ket 2948 End 2949------------------------------------------------------------------ 2950Capturing subpattern count = 0 2951No options 2952No first char 2953No need char 2954 *** Failers 2955 0: F 2956 xxxxx 2957No match 2958 2959/x?+/DZ 2960------------------------------------------------------------------ 2961 Bra 2962 x?+ 2963 Ket 2964 End 2965------------------------------------------------------------------ 2966Capturing subpattern count = 0 2967No options 2968No first char 2969No need char 2970 2971/x++/DZ 2972------------------------------------------------------------------ 2973 Bra 2974 x++ 2975 Ket 2976 End 2977------------------------------------------------------------------ 2978Capturing subpattern count = 0 2979No options 2980First char = 'x' 2981No need char 2982 2983/x{1,3}+/DZ 2984------------------------------------------------------------------ 2985 Bra 2986 Once 2987 x 2988 x{0,2} 2989 Ket 2990 Ket 2991 End 2992------------------------------------------------------------------ 2993Capturing subpattern count = 0 2994No options 2995First char = 'x' 2996No need char 2997 2998/(x)*+/DZ 2999------------------------------------------------------------------ 3000 Bra 3001 Once 3002 Brazero 3003 CBra 1 3004 x 3005 KetRmax 3006 Ket 3007 Ket 3008 End 3009------------------------------------------------------------------ 3010Capturing subpattern count = 1 3011No options 3012No first char 3013No need char 3014 3015/^(\w++|\s++)*$/I 3016Capturing subpattern count = 1 3017Options: anchored 3018No first char 3019No need char 3020 now is the time for all good men to come to the aid of the party 3021 0: now is the time for all good men to come to the aid of the party 3022 1: party 3023 *** Failers 3024No match 3025 this is not a line with only words and spaces! 3026No match 3027 3028/(\d++)(\w)/I 3029Capturing subpattern count = 2 3030No options 3031No first char 3032No need char 3033 12345a 3034 0: 12345a 3035 1: 12345 3036 2: a 3037 *** Failers 3038No match 3039 12345+ 3040No match 3041 3042/a++b/I 3043Capturing subpattern count = 0 3044No options 3045First char = 'a' 3046Need char = 'b' 3047 aaab 3048 0: aaab 3049 3050/(a++b)/I 3051Capturing subpattern count = 1 3052No options 3053First char = 'a' 3054Need char = 'b' 3055 aaab 3056 0: aaab 3057 1: aaab 3058 3059/(a++)b/I 3060Capturing subpattern count = 1 3061No options 3062First char = 'a' 3063Need char = 'b' 3064 aaab 3065 0: aaab 3066 1: aaa 3067 3068/([^()]++|\([^()]*\))+/I 3069Capturing subpattern count = 1 3070No options 3071No first char 3072No need char 3073 ((abc(ade)ufh()()x 3074 0: abc(ade)ufh()()x 3075 1: x 3076 3077/\(([^()]++|\([^()]+\))+\)/I 3078Capturing subpattern count = 1 3079No options 3080First char = '(' 3081Need char = ')' 3082 (abc) 3083 0: (abc) 3084 1: abc 3085 (abc(def)xyz) 3086 0: (abc(def)xyz) 3087 1: xyz 3088 *** Failers 3089No match 3090 ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3091No match 3092 3093/(abc){1,3}+/DZ 3094------------------------------------------------------------------ 3095 Bra 3096 Once 3097 CBra 1 3098 abc 3099 Ket 3100 Brazero 3101 Bra 3102 CBra 1 3103 abc 3104 Ket 3105 Brazero 3106 CBra 1 3107 abc 3108 Ket 3109 Ket 3110 Ket 3111 Ket 3112 End 3113------------------------------------------------------------------ 3114Capturing subpattern count = 1 3115No options 3116First char = 'a' 3117Need char = 'c' 3118 3119/a+?+/I 3120Failed: nothing to repeat at offset 3 3121 3122/a{2,3}?+b/I 3123Failed: nothing to repeat at offset 7 3124 3125/(?U)a+?+/I 3126Failed: nothing to repeat at offset 7 3127 3128/a{2,3}?+b/IU 3129Failed: nothing to repeat at offset 7 3130 3131/x(?U)a++b/DZ 3132------------------------------------------------------------------ 3133 Bra 3134 x 3135 a++ 3136 b 3137 Ket 3138 End 3139------------------------------------------------------------------ 3140Capturing subpattern count = 0 3141No options 3142First char = 'x' 3143Need char = 'b' 3144 xaaaab 3145 0: xaaaab 3146 3147/(?U)xa++b/DZ 3148------------------------------------------------------------------ 3149 Bra 3150 x 3151 a++ 3152 b 3153 Ket 3154 End 3155------------------------------------------------------------------ 3156Capturing subpattern count = 0 3157Options: ungreedy 3158First char = 'x' 3159Need char = 'b' 3160 xaaaab 3161 0: xaaaab 3162 3163/^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/DZ 3164------------------------------------------------------------------ 3165 Bra 3166 ^ 3167 CBra 1 3168 CBra 2 3169 a+ 3170 Ket 3171 CBra 3 3172 [ab]+? 3173 Ket 3174 CBra 4 3175 [bc]+ 3176 Ket 3177 CBra 5 3178 \w* 3179 Ket 3180 Ket 3181 Ket 3182 End 3183------------------------------------------------------------------ 3184Capturing subpattern count = 5 3185Options: anchored 3186No first char 3187No need char 3188 3189/^x(?U)a+b/DZ 3190------------------------------------------------------------------ 3191 Bra 3192 ^ 3193 x 3194 a++ 3195 b 3196 Ket 3197 End 3198------------------------------------------------------------------ 3199Capturing subpattern count = 0 3200Options: anchored 3201No first char 3202Need char = 'b' 3203 3204/^x(?U)(a+)b/DZ 3205------------------------------------------------------------------ 3206 Bra 3207 ^ 3208 x 3209 CBra 1 3210 a+? 3211 Ket 3212 b 3213 Ket 3214 End 3215------------------------------------------------------------------ 3216Capturing subpattern count = 1 3217Options: anchored 3218No first char 3219Need char = 'b' 3220 3221/[.x.]/I 3222Failed: POSIX collating elements are not supported at offset 0 3223 3224/[=x=]/I 3225Failed: POSIX collating elements are not supported at offset 0 3226 3227/[:x:]/I 3228Failed: POSIX named classes are supported only within a class at offset 0 3229 3230/\l/I 3231Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1 3232 3233/\L/I 3234Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1 3235 3236/\N{name}/I 3237Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1 3238 3239/\u/I 3240Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1 3241 3242/\U/I 3243Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1 3244 3245/[/I 3246Failed: missing terminating ] for character class at offset 1 3247 3248/[a-/I 3249Failed: missing terminating ] for character class at offset 3 3250 3251/[[:space:]/I 3252Failed: missing terminating ] for character class at offset 10 3253 3254/[\s]/IDZ 3255------------------------------------------------------------------ 3256 Bra 3257 [\x09\x0a\x0c\x0d ] 3258 Ket 3259 End 3260------------------------------------------------------------------ 3261Capturing subpattern count = 0 3262No options 3263No first char 3264No need char 3265 3266/[[:space:]]/IDZ 3267------------------------------------------------------------------ 3268 Bra 3269 [\x09-\x0d ] 3270 Ket 3271 End 3272------------------------------------------------------------------ 3273Capturing subpattern count = 0 3274No options 3275No first char 3276No need char 3277 3278/[[:space:]abcde]/IDZ 3279------------------------------------------------------------------ 3280 Bra 3281 [\x09-\x0d a-e] 3282 Ket 3283 End 3284------------------------------------------------------------------ 3285Capturing subpattern count = 0 3286No options 3287No first char 3288No need char 3289 3290/< (?: (?(R) \d++ | [^<>]*+) | (?R)) * >/Ix 3291Capturing subpattern count = 0 3292Options: extended 3293First char = '<' 3294Need char = '>' 3295 <> 3296 0: <> 3297 <abcd> 3298 0: <abcd> 3299 <abc <123> hij> 3300 0: <abc <123> hij> 3301 <abc <def> hij> 3302 0: <def> 3303 <abc<>def> 3304 0: <abc<>def> 3305 <abc<> 3306 0: <> 3307 *** Failers 3308No match 3309 <abc 3310No match 3311 3312|8J\$WE\<\.rX\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b|IDZ 3313------------------------------------------------------------------ 3314 Bra 3315 8J$WE<.rX+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDD<EjmhUZ?.akp2dF>qmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X 3316 \b 3317 Ket 3318 End 3319------------------------------------------------------------------ 3320Capturing subpattern count = 0 3321No options 3322First char = '8' 3323Need char = 'X' 3324 3325|\$\<\.X\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b|IDZ 3326------------------------------------------------------------------ 3327 Bra 3328 $<.X+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDD<EjmhUZ?.akp2dF>qmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X 3329 \b 3330 Ket 3331 End 3332------------------------------------------------------------------ 3333Capturing subpattern count = 0 3334No options 3335First char = '$' 3336Need char = 'X' 3337 3338/(.*)\d+\1/I 3339Capturing subpattern count = 1 3340Max back reference = 1 3341No options 3342No first char 3343No need char 3344 3345/(.*)\d+/I 3346Capturing subpattern count = 1 3347No options 3348First char at start or follows newline 3349No need char 3350 3351/(.*)\d+\1/Is 3352Capturing subpattern count = 1 3353Max back reference = 1 3354Options: dotall 3355No first char 3356No need char 3357 3358/(.*)\d+/Is 3359Capturing subpattern count = 1 3360Options: anchored dotall 3361No first char 3362No need char 3363 3364/(.*(xyz))\d+\2/I 3365Capturing subpattern count = 2 3366Max back reference = 2 3367No options 3368First char at start or follows newline 3369Need char = 'z' 3370 3371/((.*))\d+\1/I 3372Capturing subpattern count = 2 3373Max back reference = 1 3374No options 3375No first char 3376No need char 3377 abc123bc 3378 0: bc123bc 3379 1: bc 3380 2: bc 3381 3382/a[b]/I 3383Capturing subpattern count = 0 3384No options 3385First char = 'a' 3386Need char = 'b' 3387 3388/(?=a).*/I 3389Capturing subpattern count = 0 3390No options 3391First char = 'a' 3392No need char 3393 3394/(?=abc).xyz/IiI 3395Capturing subpattern count = 0 3396Options: caseless 3397First char = 'a' (caseless) 3398Need char = 'z' (caseless) 3399 3400/(?=abc)(?i).xyz/I 3401Capturing subpattern count = 0 3402No options 3403First char = 'a' 3404Need char = 'z' (caseless) 3405 3406/(?=a)(?=b)/I 3407Capturing subpattern count = 0 3408No options 3409First char = 'a' 3410No need char 3411 3412/(?=.)a/I 3413Capturing subpattern count = 0 3414No options 3415First char = 'a' 3416No need char 3417 3418/((?=abcda)a)/I 3419Capturing subpattern count = 1 3420No options 3421First char = 'a' 3422Need char = 'a' 3423 3424/((?=abcda)ab)/I 3425Capturing subpattern count = 1 3426No options 3427First char = 'a' 3428Need char = 'b' 3429 3430/()a/I 3431Capturing subpattern count = 1 3432No options 3433No first char 3434Need char = 'a' 3435 3436/(?(1)ab|ac)(.)/I 3437Capturing subpattern count = 1 3438No options 3439First char = 'a' 3440No need char 3441 3442/(?(1)abz|acz)(.)/I 3443Capturing subpattern count = 1 3444No options 3445First char = 'a' 3446Need char = 'z' 3447 3448/(?(1)abz)(.)/I 3449Capturing subpattern count = 1 3450No options 3451No first char 3452No need char 3453 3454/(?(1)abz)(1)23/I 3455Capturing subpattern count = 1 3456No options 3457No first char 3458Need char = '3' 3459 3460/(a)+/I 3461Capturing subpattern count = 1 3462No options 3463First char = 'a' 3464No need char 3465 3466/(a){2,3}/I 3467Capturing subpattern count = 1 3468No options 3469First char = 'a' 3470Need char = 'a' 3471 3472/(a)*/I 3473Capturing subpattern count = 1 3474No options 3475No first char 3476No need char 3477 3478/[a]/I 3479Capturing subpattern count = 0 3480No options 3481First char = 'a' 3482No need char 3483 3484/[ab]/I 3485Capturing subpattern count = 0 3486No options 3487No first char 3488No need char 3489 3490/[ab]/IS 3491Capturing subpattern count = 0 3492No options 3493No first char 3494No need char 3495Subject length lower bound = 1 3496Starting byte set: a b 3497 3498/[^a]/I 3499Capturing subpattern count = 0 3500No options 3501No first char 3502No need char 3503 3504/\d456/I 3505Capturing subpattern count = 0 3506No options 3507No first char 3508Need char = '6' 3509 3510/\d456/IS 3511Capturing subpattern count = 0 3512No options 3513No first char 3514Need char = '6' 3515Subject length lower bound = 4 3516Starting byte set: 0 1 2 3 4 5 6 7 8 9 3517 3518/a^b/I 3519Capturing subpattern count = 0 3520No options 3521First char = 'a' 3522Need char = 'b' 3523 3524/^a/Im 3525Capturing subpattern count = 0 3526Options: multiline 3527First char at start or follows newline 3528Need char = 'a' 3529 abcde 3530 0: a 3531 xy\nabc 3532 0: a 3533 *** Failers 3534No match 3535 xyabc 3536No match 3537 3538/c|abc/I 3539Capturing subpattern count = 0 3540No options 3541No first char 3542Need char = 'c' 3543 3544/(?i)[ab]/IS 3545Capturing subpattern count = 0 3546Options: caseless 3547No first char 3548No need char 3549Subject length lower bound = 1 3550Starting byte set: A B a b 3551 3552/[ab](?i)cd/IS 3553Capturing subpattern count = 0 3554No options 3555No first char 3556Need char = 'd' (caseless) 3557Subject length lower bound = 3 3558Starting byte set: a b 3559 3560/abc(?C)def/I 3561Capturing subpattern count = 0 3562No options 3563First char = 'a' 3564Need char = 'f' 3565 abcdef 3566--->abcdef 3567 0 ^ ^ d 3568 0: abcdef 3569 1234abcdef 3570--->1234abcdef 3571 0 ^ ^ d 3572 0: abcdef 3573 *** Failers 3574No match 3575 abcxyz 3576No match 3577 abcxyzf 3578--->abcxyzf 3579 0 ^ ^ d 3580No match 3581 3582/abc(?C)de(?C1)f/I 3583Capturing subpattern count = 0 3584No options 3585First char = 'a' 3586Need char = 'f' 3587 123abcdef 3588--->123abcdef 3589 0 ^ ^ d 3590 1 ^ ^ f 3591 0: abcdef 3592 3593/(?C1)\dabc(?C2)def/I 3594Capturing subpattern count = 0 3595No options 3596No first char 3597Need char = 'f' 3598 1234abcdef 3599--->1234abcdef 3600 1 ^ \d 3601 1 ^ \d 3602 1 ^ \d 3603 1 ^ \d 3604 2 ^ ^ d 3605 0: 4abcdef 3606 *** Failers 3607No match 3608 abcdef 3609--->abcdef 3610 1 ^ \d 3611 1 ^ \d 3612 1 ^ \d 3613 1 ^ \d 3614 1 ^ \d 3615 1 ^ \d 3616No match 3617 3618/(?C255)ab/I 3619Capturing subpattern count = 0 3620No options 3621First char = 'a' 3622Need char = 'b' 3623 3624/(?C256)ab/I 3625Failed: number after (?C is > 255 at offset 6 3626 3627/(?Cab)xx/I 3628Failed: closing ) for (?C expected at offset 3 3629 3630/(?C12vr)x/I 3631Failed: closing ) for (?C expected at offset 5 3632 3633/abc(?C)def/I 3634Capturing subpattern count = 0 3635No options 3636First char = 'a' 3637Need char = 'f' 3638 *** Failers 3639No match 3640 \x83\x0\x61bcdef 3641--->\x83\x00abcdef 3642 0 ^ ^ d 3643 0: abcdef 3644 3645/(abc)(?C)de(?C1)f/I 3646Capturing subpattern count = 1 3647No options 3648First char = 'a' 3649Need char = 'f' 3650 123abcdef 3651--->123abcdef 3652 0 ^ ^ d 3653 1 ^ ^ f 3654 0: abcdef 3655 1: abc 3656 123abcdef\C+ 3657Callout 0: last capture = 1 3658 0: <unset> 3659 1: abc 3660--->123abcdef 3661 ^ ^ d 3662Callout 1: last capture = 1 3663 0: <unset> 3664 1: abc 3665--->123abcdef 3666 ^ ^ f 3667 0: abcdef 3668 1: abc 3669 123abcdef\C- 3670 0: abcdef 3671 1: abc 3672 *** Failers 3673No match 3674 123abcdef\C!1 3675--->123abcdef 3676 0 ^ ^ d 3677 1 ^ ^ f 3678No match 3679 3680/(?C0)(abc(?C1))*/I 3681Capturing subpattern count = 1 3682No options 3683No first char 3684No need char 3685 abcabcabc 3686--->abcabcabc 3687 0 ^ (abc(?C1))* 3688 1 ^ ^ ) 3689 1 ^ ^ ) 3690 1 ^ ^ ) 3691 0: abcabcabc 3692 1: abc 3693 abcabc\C!1!3 3694--->abcabc 3695 0 ^ (abc(?C1))* 3696 1 ^ ^ ) 3697 1 ^ ^ ) 3698 0: abcabc 3699 1: abc 3700 *** Failers 3701--->*** Failers 3702 0 ^ (abc(?C1))* 3703 0: 3704 abcabcabc\C!1!3 3705--->abcabcabc 3706 0 ^ (abc(?C1))* 3707 1 ^ ^ ) 3708 1 ^ ^ ) 3709 1 ^ ^ ) 3710 0: abcabc 3711 1: abc 3712 3713/(\d{3}(?C))*/I 3714Capturing subpattern count = 1 3715No options 3716No first char 3717No need char 3718 123\C+ 3719Callout 0: last capture = -1 3720 0: <unset> 3721--->123 3722 ^ ^ ) 3723 0: 123 3724 1: 123 3725 123456\C+ 3726Callout 0: last capture = -1 3727 0: <unset> 3728--->123456 3729 ^ ^ ) 3730Callout 0: last capture = 1 3731 0: <unset> 3732 1: 123 3733--->123456 3734 ^ ^ ) 3735 0: 123456 3736 1: 456 3737 123456789\C+ 3738Callout 0: last capture = -1 3739 0: <unset> 3740--->123456789 3741 ^ ^ ) 3742Callout 0: last capture = 1 3743 0: <unset> 3744 1: 123 3745--->123456789 3746 ^ ^ ) 3747Callout 0: last capture = 1 3748 0: <unset> 3749 1: 456 3750--->123456789 3751 ^ ^ ) 3752 0: 123456789 3753 1: 789 3754 3755/((xyz)(?C)p|(?C1)xyzabc)/I 3756Capturing subpattern count = 2 3757No options 3758First char = 'x' 3759No need char 3760 xyzabc\C+ 3761Callout 0: last capture = 2 3762 0: <unset> 3763 1: <unset> 3764 2: xyz 3765--->xyzabc 3766 ^ ^ p 3767Callout 1: last capture = -1 3768 0: <unset> 3769--->xyzabc 3770 ^ x 3771 0: xyzabc 3772 1: xyzabc 3773 3774/(X)((xyz)(?C)p|(?C1)xyzabc)/I 3775Capturing subpattern count = 3 3776No options 3777First char = 'X' 3778Need char = 'x' 3779 Xxyzabc\C+ 3780Callout 0: last capture = 3 3781 0: <unset> 3782 1: X 3783 2: <unset> 3784 3: xyz 3785--->Xxyzabc 3786 ^ ^ p 3787Callout 1: last capture = 1 3788 0: <unset> 3789 1: X 3790--->Xxyzabc 3791 ^^ x 3792 0: Xxyzabc 3793 1: X 3794 2: xyzabc 3795 3796/(?=(abc))(?C)abcdef/I 3797Capturing subpattern count = 1 3798No options 3799First char = 'a' 3800Need char = 'f' 3801 abcdef\C+ 3802Callout 0: last capture = 1 3803 0: <unset> 3804 1: abc 3805--->abcdef 3806 ^ a 3807 0: abcdef 3808 1: abc 3809 3810/(?!(abc)(?C1)d)(?C2)abcxyz/I 3811Capturing subpattern count = 1 3812No options 3813First char = 'a' 3814Need char = 'z' 3815 abcxyz\C+ 3816Callout 1: last capture = 1 3817 0: <unset> 3818 1: abc 3819--->abcxyz 3820 ^ ^ d 3821Callout 2: last capture = -1 3822 0: <unset> 3823--->abcxyz 3824 ^ a 3825 0: abcxyz 3826 3827/(?<=(abc)(?C))xyz/I 3828Capturing subpattern count = 1 3829No options 3830First char = 'x' 3831Need char = 'z' 3832 abcxyz\C+ 3833Callout 0: last capture = 1 3834 0: <unset> 3835 1: abc 3836--->abcxyz 3837 ^ ) 3838 0: xyz 3839 1: abc 3840 3841/a(b+)(c*)(?C1)/I 3842Capturing subpattern count = 2 3843No options 3844First char = 'a' 3845Need char = 'b' 3846 abbbbbccc\C*1 3847--->abbbbbccc 3848 1 ^ ^ 3849Callout data = 1 3850 1 ^ ^ 3851Callout data = 1 3852 1 ^ ^ 3853Callout data = 1 3854 1 ^ ^ 3855Callout data = 1 3856 1 ^ ^ 3857Callout data = 1 3858 1 ^ ^ 3859Callout data = 1 3860 1 ^ ^ 3861Callout data = 1 3862 1 ^ ^ 3863Callout data = 1 3864No match 3865 3866/a(b+?)(c*?)(?C1)/I 3867Capturing subpattern count = 2 3868No options 3869First char = 'a' 3870Need char = 'b' 3871 abbbbbccc\C*1 3872--->abbbbbccc 3873 1 ^ ^ 3874Callout data = 1 3875 1 ^ ^ 3876Callout data = 1 3877 1 ^ ^ 3878Callout data = 1 3879 1 ^ ^ 3880Callout data = 1 3881 1 ^ ^ 3882Callout data = 1 3883 1 ^ ^ 3884Callout data = 1 3885 1 ^ ^ 3886Callout data = 1 3887 1 ^ ^ 3888Callout data = 1 3889No match 3890 3891/(?C)abc/I 3892Capturing subpattern count = 0 3893No options 3894First char = 'a' 3895Need char = 'c' 3896 3897/(?C)^abc/I 3898Capturing subpattern count = 0 3899Options: anchored 3900No first char 3901No need char 3902 3903/(?C)a|b/IS 3904Capturing subpattern count = 0 3905No options 3906No first char 3907No need char 3908Subject length lower bound = 1 3909Starting byte set: a b 3910 3911/(?R)/I 3912Failed: recursive call could loop indefinitely at offset 3 3913 3914/(a|(?R))/I 3915Failed: recursive call could loop indefinitely at offset 6 3916 3917/(ab|(bc|(de|(?R))))/I 3918Failed: recursive call could loop indefinitely at offset 15 3919 3920/x(ab|(bc|(de|(?R))))/I 3921Capturing subpattern count = 3 3922No options 3923First char = 'x' 3924No need char 3925 xab 3926 0: xab 3927 1: ab 3928 xbc 3929 0: xbc 3930 1: bc 3931 2: bc 3932 xde 3933 0: xde 3934 1: de 3935 2: de 3936 3: de 3937 xxab 3938 0: xxab 3939 1: xab 3940 2: xab 3941 3: xab 3942 xxxab 3943 0: xxxab 3944 1: xxab 3945 2: xxab 3946 3: xxab 3947 *** Failers 3948No match 3949 xyab 3950No match 3951 3952/(ab|(bc|(de|(?1))))/I 3953Failed: recursive call could loop indefinitely at offset 15 3954 3955/x(ab|(bc|(de|(?1)x)x)x)/I 3956Failed: recursive call could loop indefinitely at offset 16 3957 3958/^([^()]|\((?1)*\))*$/I 3959Capturing subpattern count = 1 3960Options: anchored 3961No first char 3962No need char 3963 abc 3964 0: abc 3965 1: c 3966 a(b)c 3967 0: a(b)c 3968 1: c 3969 a(b(c))d 3970 0: a(b(c))d 3971 1: d 3972 *** Failers) 3973No match 3974 a(b(c)d 3975No match 3976 3977/^>abc>([^()]|\((?1)*\))*<xyz<$/I 3978Capturing subpattern count = 1 3979Options: anchored 3980No first char 3981Need char = '<' 3982 >abc>123<xyz< 3983 0: >abc>123<xyz< 3984 1: 3 3985 >abc>1(2)3<xyz< 3986 0: >abc>1(2)3<xyz< 3987 1: 3 3988 >abc>(1(2)3)<xyz< 3989 0: >abc>(1(2)3)<xyz< 3990 1: (1(2)3) 3991 3992/(a(?1)b)/DZ 3993------------------------------------------------------------------ 3994 Bra 3995 CBra 1 3996 a 3997 Once 3998 Recurse 3999 Ket 4000 b 4001 Ket 4002 Ket 4003 End 4004------------------------------------------------------------------ 4005Capturing subpattern count = 1 4006No options 4007First char = 'a' 4008Need char = 'b' 4009 4010/(a(?1)+b)/DZ 4011------------------------------------------------------------------ 4012 Bra 4013 CBra 1 4014 a 4015 Once 4016 Recurse 4017 KetRmax 4018 b 4019 Ket 4020 Ket 4021 End 4022------------------------------------------------------------------ 4023Capturing subpattern count = 1 4024No options 4025First char = 'a' 4026Need char = 'b' 4027 4028/^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/I 4029Capturing subpattern count = 2 4030Options: anchored 4031No first char 4032No need char 4033 12 4034 0: 12 4035 1: 12 4036 (((2+2)*-3)-7) 4037 0: (((2+2)*-3)-7) 4038 1: (((2+2)*-3)-7) 4039 2: - 4040 -12 4041 0: -12 4042 1: -12 4043 *** Failers 4044No match 4045 ((2+2)*-3)-7) 4046No match 4047 4048/^(x(y|(?1){2})z)/I 4049Capturing subpattern count = 2 4050Options: anchored 4051No first char 4052No need char 4053 xyz 4054 0: xyz 4055 1: xyz 4056 2: y 4057 xxyzxyzz 4058 0: xxyzxyzz 4059 1: xxyzxyzz 4060 2: xyzxyz 4061 *** Failers 4062No match 4063 xxyzz 4064No match 4065 xxyzxyzxyzz 4066No match 4067 4068/((< (?: (?(R) \d++ | [^<>]*+) | (?2)) * >))/Ix 4069Capturing subpattern count = 2 4070Options: extended 4071First char = '<' 4072Need char = '>' 4073 <> 4074 0: <> 4075 1: <> 4076 2: <> 4077 <abcd> 4078 0: <abcd> 4079 1: <abcd> 4080 2: <abcd> 4081 <abc <123> hij> 4082 0: <abc <123> hij> 4083 1: <abc <123> hij> 4084 2: <abc <123> hij> 4085 <abc <def> hij> 4086 0: <def> 4087 1: <def> 4088 2: <def> 4089 <abc<>def> 4090 0: <abc<>def> 4091 1: <abc<>def> 4092 2: <abc<>def> 4093 <abc<> 4094 0: <> 4095 1: <> 4096 2: <> 4097 *** Failers 4098No match 4099 <abc 4100No match 4101 4102/(?1)/I 4103Failed: reference to non-existent subpattern at offset 3 4104 4105/((?2)(abc)/I 4106Failed: missing ) at offset 10 4107 4108/^(abc)def(?1)/I 4109Capturing subpattern count = 1 4110Options: anchored 4111No first char 4112No need char 4113 abcdefabc 4114 0: abcdefabc 4115 1: abc 4116 4117/^(a|b|c)=(?1)+/I 4118Capturing subpattern count = 1 4119Options: anchored 4120No first char 4121No need char 4122 a=a 4123 0: a=a 4124 1: a 4125 a=b 4126 0: a=b 4127 1: a 4128 a=bc 4129 0: a=bc 4130 1: a 4131 4132/^(a|b|c)=((?1))+/I 4133Capturing subpattern count = 2 4134Options: anchored 4135No first char 4136No need char 4137 a=a 4138 0: a=a 4139 1: a 4140 2: a 4141 a=b 4142 0: a=b 4143 1: a 4144 2: b 4145 a=bc 4146 0: a=bc 4147 1: a 4148 2: c 4149 4150/a(?P<name1>b|c)d(?P<longername2>e)/DZ 4151------------------------------------------------------------------ 4152 Bra 4153 a 4154 CBra 1 4155 b 4156 Alt 4157 c 4158 Ket 4159 d 4160 CBra 2 4161 e 4162 Ket 4163 Ket 4164 End 4165------------------------------------------------------------------ 4166Capturing subpattern count = 2 4167Named capturing subpatterns: 4168 longername2 2 4169 name1 1 4170No options 4171First char = 'a' 4172Need char = 'e' 4173 abde 4174 0: abde 4175 1: b 4176 2: e 4177 acde 4178 0: acde 4179 1: c 4180 2: e 4181 4182/(?:a(?P<c>c(?P<d>d)))(?P<a>a)/DZ 4183------------------------------------------------------------------ 4184 Bra 4185 Bra 4186 a 4187 CBra 1 4188 c 4189 CBra 2 4190 d 4191 Ket 4192 Ket 4193 Ket 4194 CBra 3 4195 a 4196 Ket 4197 Ket 4198 End 4199------------------------------------------------------------------ 4200Capturing subpattern count = 3 4201Named capturing subpatterns: 4202 a 3 4203 c 1 4204 d 2 4205No options 4206First char = 'a' 4207Need char = 'a' 4208 4209/(?P<a>a)...(?P=a)bbb(?P>a)d/DZ 4210------------------------------------------------------------------ 4211 Bra 4212 CBra 1 4213 a 4214 Ket 4215 Any 4216 Any 4217 Any 4218 \1 4219 bbb 4220 Once 4221 Recurse 4222 Ket 4223 d 4224 Ket 4225 End 4226------------------------------------------------------------------ 4227Capturing subpattern count = 1 4228Max back reference = 1 4229Named capturing subpatterns: 4230 a 1 4231No options 4232First char = 'a' 4233Need char = 'd' 4234 4235/^\W*(?:(?P<one>(?P<two>.)\W*(?P>one)\W*(?P=two)|)|(?P<three>(?P<four>.)\W*(?P>three)\W*(?P=four)|\W*.\W*))\W*$/Ii 4236Capturing subpattern count = 4 4237Max back reference = 4 4238Named capturing subpatterns: 4239 four 4 4240 one 1 4241 three 3 4242 two 2 4243Options: anchored caseless 4244No first char 4245No need char 4246 1221 4247 0: 1221 4248 1: 1221 4249 2: 1 4250 Satan, oscillate my metallic sonatas! 4251 0: Satan, oscillate my metallic sonatas! 4252 1: <unset> 4253 2: <unset> 4254 3: Satan, oscillate my metallic sonatas 4255 4: S 4256 A man, a plan, a canal: Panama! 4257 0: A man, a plan, a canal: Panama! 4258 1: <unset> 4259 2: <unset> 4260 3: A man, a plan, a canal: Panama 4261 4: A 4262 Able was I ere I saw Elba. 4263 0: Able was I ere I saw Elba. 4264 1: <unset> 4265 2: <unset> 4266 3: Able was I ere I saw Elba 4267 4: A 4268 *** Failers 4269No match 4270 The quick brown fox 4271No match 4272 4273/((?(R)a|b))\1(?1)?/I 4274Capturing subpattern count = 1 4275Max back reference = 1 4276No options 4277No first char 4278No need char 4279 bb 4280 0: bb 4281 1: b 4282 bbaa 4283 0: bba 4284 1: b 4285 4286/(.*)a/Is 4287Capturing subpattern count = 1 4288Options: anchored dotall 4289No first char 4290Need char = 'a' 4291 4292/(.*)a\1/Is 4293Capturing subpattern count = 1 4294Max back reference = 1 4295Options: dotall 4296No first char 4297Need char = 'a' 4298 4299/(.*)a(b)\2/Is 4300Capturing subpattern count = 2 4301Max back reference = 2 4302Options: anchored dotall 4303No first char 4304Need char = 'b' 4305 4306/((.*)a|(.*)b)z/Is 4307Capturing subpattern count = 3 4308Options: anchored dotall 4309No first char 4310Need char = 'z' 4311 4312/((.*)a|(.*)b)z\1/Is 4313Capturing subpattern count = 3 4314Max back reference = 1 4315Options: dotall 4316No first char 4317Need char = 'z' 4318 4319/((.*)a|(.*)b)z\2/Is 4320Capturing subpattern count = 3 4321Max back reference = 2 4322Options: dotall 4323No first char 4324Need char = 'z' 4325 4326/((.*)a|(.*)b)z\3/Is 4327Capturing subpattern count = 3 4328Max back reference = 3 4329Options: dotall 4330No first char 4331Need char = 'z' 4332 4333/((.*)a|^(.*)b)z\3/Is 4334Capturing subpattern count = 3 4335Max back reference = 3 4336Options: anchored dotall 4337No first char 4338Need char = 'z' 4339 4340/(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a/Is 4341Capturing subpattern count = 31 4342Options: anchored dotall 4343No first char 4344No need char 4345 4346/(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\31/Is 4347Capturing subpattern count = 31 4348Max back reference = 31 4349Options: dotall 4350No first char 4351No need char 4352 4353/(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\32/Is 4354Capturing subpattern count = 32 4355Max back reference = 32 4356Options: dotall 4357No first char 4358No need char 4359 4360/(a)(bc)/INDZ 4361------------------------------------------------------------------ 4362 Bra 4363 Bra 4364 a 4365 Ket 4366 Bra 4367 bc 4368 Ket 4369 Ket 4370 End 4371------------------------------------------------------------------ 4372Capturing subpattern count = 0 4373Options: no_auto_capture 4374First char = 'a' 4375Need char = 'c' 4376 abc 4377 0: abc 4378 4379/(?P<one>a)(bc)/INDZ 4380------------------------------------------------------------------ 4381 Bra 4382 CBra 1 4383 a 4384 Ket 4385 Bra 4386 bc 4387 Ket 4388 Ket 4389 End 4390------------------------------------------------------------------ 4391Capturing subpattern count = 1 4392Named capturing subpatterns: 4393 one 1 4394Options: no_auto_capture 4395First char = 'a' 4396Need char = 'c' 4397 abc 4398 0: abc 4399 1: a 4400 4401/(a)(?P<named>bc)/INDZ 4402------------------------------------------------------------------ 4403 Bra 4404 Bra 4405 a 4406 Ket 4407 CBra 1 4408 bc 4409 Ket 4410 Ket 4411 End 4412------------------------------------------------------------------ 4413Capturing subpattern count = 1 4414Named capturing subpatterns: 4415 named 1 4416Options: no_auto_capture 4417First char = 'a' 4418Need char = 'c' 4419 4420/(a+)*zz/I 4421Capturing subpattern count = 1 4422No options 4423No first char 4424Need char = 'z' 4425 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazzbbbbbb\M 4426Minimum match() limit = 8 4427Minimum match() recursion limit = 6 4428 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazz 4429 1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4430 aaaaaaaaaaaaaz\M 4431Minimum match() limit = 32768 4432Minimum match() recursion limit = 42 4433No match 4434 4435/(aaa(?C1)bbb|ab)/I 4436Capturing subpattern count = 1 4437No options 4438First char = 'a' 4439Need char = 'b' 4440 aaabbb 4441--->aaabbb 4442 1 ^ ^ b 4443 0: aaabbb 4444 1: aaabbb 4445 aaabbb\C*0 4446--->aaabbb 4447 1 ^ ^ b 4448 0: aaabbb 4449 1: aaabbb 4450 aaabbb\C*1 4451--->aaabbb 4452 1 ^ ^ b 4453Callout data = 1 4454 0: ab 4455 1: ab 4456 aaabbb\C*-1 4457--->aaabbb 4458 1 ^ ^ b 4459Callout data = -1 4460No match 4461 4462/ab(?P<one>cd)ef(?P<two>gh)/I 4463Capturing subpattern count = 2 4464Named capturing subpatterns: 4465 one 1 4466 two 2 4467No options 4468First char = 'a' 4469Need char = 'h' 4470 abcdefgh 4471 0: abcdefgh 4472 1: cd 4473 2: gh 4474 abcdefgh\C1\Gtwo 4475 0: abcdefgh 4476 1: cd 4477 2: gh 4478 1C cd (2) 4479 G gh (2) two 4480 abcdefgh\Cone\Ctwo 4481 0: abcdefgh 4482 1: cd 4483 2: gh 4484 C cd (2) one 4485 C gh (2) two 4486 abcdefgh\Cthree 4487no parentheses with name "three" 4488 0: abcdefgh 4489 1: cd 4490 2: gh 4491copy substring three failed -7 4492 4493/(?P<Tes>)(?P<Test>)/DZ 4494------------------------------------------------------------------ 4495 Bra 4496 CBra 1 4497 Ket 4498 CBra 2 4499 Ket 4500 Ket 4501 End 4502------------------------------------------------------------------ 4503Capturing subpattern count = 2 4504Named capturing subpatterns: 4505 Tes 1 4506 Test 2 4507No options 4508No first char 4509No need char 4510 4511/(?P<Test>)(?P<Tes>)/DZ 4512------------------------------------------------------------------ 4513 Bra 4514 CBra 1 4515 Ket 4516 CBra 2 4517 Ket 4518 Ket 4519 End 4520------------------------------------------------------------------ 4521Capturing subpattern count = 2 4522Named capturing subpatterns: 4523 Tes 2 4524 Test 1 4525No options 4526No first char 4527No need char 4528 4529/(?P<Z>zz)(?P<A>aa)/I 4530Capturing subpattern count = 2 4531Named capturing subpatterns: 4532 A 2 4533 Z 1 4534No options 4535First char = 'z' 4536Need char = 'a' 4537 zzaa\CZ 4538 0: zzaa 4539 1: zz 4540 2: aa 4541 C zz (2) Z 4542 zzaa\CA 4543 0: zzaa 4544 1: zz 4545 2: aa 4546 C aa (2) A 4547 4548/(?P<x>eks)(?P<x>eccs)/I 4549Failed: two named subpatterns have the same name at offset 15 4550 4551/(?P<abc>abc(?P<def>def)(?P<abc>xyz))/I 4552Failed: two named subpatterns have the same name at offset 30 4553 4554"\[((?P<elem>\d+)(,(?P>elem))*)\]"I 4555Capturing subpattern count = 3 4556Named capturing subpatterns: 4557 elem 2 4558No options 4559First char = '[' 4560Need char = ']' 4561 [10,20,30,5,5,4,4,2,43,23,4234] 4562 0: [10,20,30,5,5,4,4,2,43,23,4234] 4563 1: 10,20,30,5,5,4,4,2,43,23,4234 4564 2: 10 4565 3: ,4234 4566 *** Failers 4567No match 4568 [] 4569No match 4570 4571"\[((?P<elem>\d+)(,(?P>elem))*)?\]"I 4572Capturing subpattern count = 3 4573Named capturing subpatterns: 4574 elem 2 4575No options 4576First char = '[' 4577Need char = ']' 4578 [10,20,30,5,5,4,4,2,43,23,4234] 4579 0: [10,20,30,5,5,4,4,2,43,23,4234] 4580 1: 10,20,30,5,5,4,4,2,43,23,4234 4581 2: 10 4582 3: ,4234 4583 [] 4584 0: [] 4585 4586/(a(b(?2)c))?/DZ 4587------------------------------------------------------------------ 4588 Bra 4589 Brazero 4590 CBra 1 4591 a 4592 CBra 2 4593 b 4594 Once 4595 Recurse 4596 Ket 4597 c 4598 Ket 4599 Ket 4600 Ket 4601 End 4602------------------------------------------------------------------ 4603Capturing subpattern count = 2 4604No options 4605No first char 4606No need char 4607 4608/(a(b(?2)c))*/DZ 4609------------------------------------------------------------------ 4610 Bra 4611 Brazero 4612 CBra 1 4613 a 4614 CBra 2 4615 b 4616 Once 4617 Recurse 4618 Ket 4619 c 4620 Ket 4621 KetRmax 4622 Ket 4623 End 4624------------------------------------------------------------------ 4625Capturing subpattern count = 2 4626No options 4627No first char 4628No need char 4629 4630/(a(b(?2)c)){0,2}/DZ 4631------------------------------------------------------------------ 4632 Bra 4633 Brazero 4634 Bra 4635 CBra 1 4636 a 4637 CBra 2 4638 b 4639 Once 4640 Recurse 4641 Ket 4642 c 4643 Ket 4644 Ket 4645 Brazero 4646 CBra 1 4647 a 4648 CBra 2 4649 b 4650 Once 4651 Recurse 4652 Ket 4653 c 4654 Ket 4655 Ket 4656 Ket 4657 Ket 4658 End 4659------------------------------------------------------------------ 4660Capturing subpattern count = 2 4661No options 4662No first char 4663No need char 4664 4665/[ab]{1}+/DZ 4666------------------------------------------------------------------ 4667 Bra 4668 Once 4669 [ab]{1,1} 4670 Ket 4671 Ket 4672 End 4673------------------------------------------------------------------ 4674Capturing subpattern count = 0 4675No options 4676No first char 4677No need char 4678 4679/((w\/|-|with)*(free|immediate)*.*?shipping\s*[!.-]*)/Ii 4680Capturing subpattern count = 3 4681Options: caseless 4682No first char 4683Need char = 'g' (caseless) 4684 Baby Bjorn Active Carrier - With free SHIPPING!! 4685 0: Baby Bjorn Active Carrier - With free SHIPPING!! 4686 1: Baby Bjorn Active Carrier - With free SHIPPING!! 4687 4688/((w\/|-|with)*(free|immediate)*.*?shipping\s*[!.-]*)/IiS 4689Capturing subpattern count = 3 4690Options: caseless 4691No first char 4692Need char = 'g' (caseless) 4693Subject length lower bound = 8 4694No set of starting bytes 4695 Baby Bjorn Active Carrier - With free SHIPPING!! 4696 0: Baby Bjorn Active Carrier - With free SHIPPING!! 4697 1: Baby Bjorn Active Carrier - With free SHIPPING!! 4698 4699/a*.*b/ISDZ 4700------------------------------------------------------------------ 4701 Bra 4702 a* 4703 Any* 4704 b 4705 Ket 4706 End 4707------------------------------------------------------------------ 4708Capturing subpattern count = 0 4709No options 4710No first char 4711Need char = 'b' 4712Subject length lower bound = 1 4713No set of starting bytes 4714 4715/(a|b)*.?c/ISDZ 4716------------------------------------------------------------------ 4717 Bra 4718 Brazero 4719 CBra 1 4720 a 4721 Alt 4722 b 4723 KetRmax 4724 Any? 4725 c 4726 Ket 4727 End 4728------------------------------------------------------------------ 4729Capturing subpattern count = 1 4730No options 4731No first char 4732Need char = 'c' 4733Subject length lower bound = 1 4734No set of starting bytes 4735 4736/abc(?C255)de(?C)f/DZ 4737------------------------------------------------------------------ 4738 Bra 4739 abc 4740 Callout 255 10 1 4741 de 4742 Callout 0 16 1 4743 f 4744 Ket 4745 End 4746------------------------------------------------------------------ 4747Capturing subpattern count = 0 4748No options 4749First char = 'a' 4750Need char = 'f' 4751 4752/abcde/ICDZ 4753------------------------------------------------------------------ 4754 Bra 4755 Callout 255 0 1 4756 a 4757 Callout 255 1 1 4758 b 4759 Callout 255 2 1 4760 c 4761 Callout 255 3 1 4762 d 4763 Callout 255 4 1 4764 e 4765 Callout 255 5 0 4766 Ket 4767 End 4768------------------------------------------------------------------ 4769Capturing subpattern count = 0 4770Options: 4771First char = 'a' 4772Need char = 'e' 4773 abcde 4774--->abcde 4775 +0 ^ a 4776 +1 ^^ b 4777 +2 ^ ^ c 4778 +3 ^ ^ d 4779 +4 ^ ^ e 4780 +5 ^ ^ 4781 0: abcde 4782 abcdfe 4783--->abcdfe 4784 +0 ^ a 4785 +1 ^^ b 4786 +2 ^ ^ c 4787 +3 ^ ^ d 4788 +4 ^ ^ e 4789No match 4790 4791/a*b/ICDZ 4792------------------------------------------------------------------ 4793 Bra 4794 Callout 255 0 2 4795 a*+ 4796 Callout 255 2 1 4797 b 4798 Callout 255 3 0 4799 Ket 4800 End 4801------------------------------------------------------------------ 4802Capturing subpattern count = 0 4803Options: 4804No first char 4805Need char = 'b' 4806 ab 4807--->ab 4808 +0 ^ a* 4809 +2 ^^ b 4810 +3 ^ ^ 4811 0: ab 4812 aaaab 4813--->aaaab 4814 +0 ^ a* 4815 +2 ^ ^ b 4816 +3 ^ ^ 4817 0: aaaab 4818 aaaacb 4819--->aaaacb 4820 +0 ^ a* 4821 +2 ^ ^ b 4822 +0 ^ a* 4823 +2 ^ ^ b 4824 +0 ^ a* 4825 +2 ^ ^ b 4826 +0 ^ a* 4827 +2 ^^ b 4828 +0 ^ a* 4829 +2 ^ b 4830 +0 ^ a* 4831 +2 ^ b 4832 +3 ^^ 4833 0: b 4834 4835/a+b/ICDZ 4836------------------------------------------------------------------ 4837 Bra 4838 Callout 255 0 2 4839 a++ 4840 Callout 255 2 1 4841 b 4842 Callout 255 3 0 4843 Ket 4844 End 4845------------------------------------------------------------------ 4846Capturing subpattern count = 0 4847Options: 4848First char = 'a' 4849Need char = 'b' 4850 ab 4851--->ab 4852 +0 ^ a+ 4853 +2 ^^ b 4854 +3 ^ ^ 4855 0: ab 4856 aaaab 4857--->aaaab 4858 +0 ^ a+ 4859 +2 ^ ^ b 4860 +3 ^ ^ 4861 0: aaaab 4862 aaaacb 4863--->aaaacb 4864 +0 ^ a+ 4865 +2 ^ ^ b 4866 +0 ^ a+ 4867 +2 ^ ^ b 4868 +0 ^ a+ 4869 +2 ^ ^ b 4870 +0 ^ a+ 4871 +2 ^^ b 4872No match 4873 4874/(abc|def)x/ICDZ 4875------------------------------------------------------------------ 4876 Bra 4877 Callout 255 0 9 4878 CBra 1 4879 Callout 255 1 1 4880 a 4881 Callout 255 2 1 4882 b 4883 Callout 255 3 1 4884 c 4885 Callout 255 4 0 4886 Alt 4887 Callout 255 5 1 4888 d 4889 Callout 255 6 1 4890 e 4891 Callout 255 7 1 4892 f 4893 Callout 255 8 0 4894 Ket 4895 Callout 255 9 1 4896 x 4897 Callout 255 10 0 4898 Ket 4899 End 4900------------------------------------------------------------------ 4901Capturing subpattern count = 1 4902Options: 4903No first char 4904Need char = 'x' 4905 abcx 4906--->abcx 4907 +0 ^ (abc|def) 4908 +1 ^ a 4909 +2 ^^ b 4910 +3 ^ ^ c 4911 +4 ^ ^ | 4912 +9 ^ ^ x 4913+10 ^ ^ 4914 0: abcx 4915 1: abc 4916 defx 4917--->defx 4918 +0 ^ (abc|def) 4919 +1 ^ a 4920 +5 ^ d 4921 +6 ^^ e 4922 +7 ^ ^ f 4923 +8 ^ ^ ) 4924 +9 ^ ^ x 4925+10 ^ ^ 4926 0: defx 4927 1: def 4928 abcdefzx 4929--->abcdefzx 4930 +0 ^ (abc|def) 4931 +1 ^ a 4932 +2 ^^ b 4933 +3 ^ ^ c 4934 +4 ^ ^ | 4935 +9 ^ ^ x 4936 +5 ^ d 4937 +0 ^ (abc|def) 4938 +1 ^ a 4939 +5 ^ d 4940 +0 ^ (abc|def) 4941 +1 ^ a 4942 +5 ^ d 4943 +0 ^ (abc|def) 4944 +1 ^ a 4945 +5 ^ d 4946 +6 ^^ e 4947 +7 ^ ^ f 4948 +8 ^ ^ ) 4949 +9 ^ ^ x 4950 +0 ^ (abc|def) 4951 +1 ^ a 4952 +5 ^ d 4953 +0 ^ (abc|def) 4954 +1 ^ a 4955 +5 ^ d 4956 +0 ^ (abc|def) 4957 +1 ^ a 4958 +5 ^ d 4959 +0 ^ (abc|def) 4960 +1 ^ a 4961 +5 ^ d 4962No match 4963 4964/(ab|cd){3,4}/IC 4965Capturing subpattern count = 1 4966Options: 4967No first char 4968No need char 4969 ababab 4970--->ababab 4971 +0 ^ (ab|cd){3,4} 4972 +1 ^ a 4973 +2 ^^ b 4974 +3 ^ ^ | 4975 +1 ^ ^ a 4976 +2 ^ ^ b 4977 +3 ^ ^ | 4978 +1 ^ ^ a 4979 +2 ^ ^ b 4980 +3 ^ ^ | 4981 +1 ^ ^ a 4982 +4 ^ ^ c 4983+12 ^ ^ 4984 0: ababab 4985 1: ab 4986 abcdabcd 4987--->abcdabcd 4988 +0 ^ (ab|cd){3,4} 4989 +1 ^ a 4990 +2 ^^ b 4991 +3 ^ ^ | 4992 +1 ^ ^ a 4993 +4 ^ ^ c 4994 +5 ^ ^ d 4995 +6 ^ ^ ) 4996 +1 ^ ^ a 4997 +2 ^ ^ b 4998 +3 ^ ^ | 4999 +1 ^ ^ a 5000 +4 ^ ^ c 5001 +5 ^ ^ d 5002 +6 ^ ^ ) 5003+12 ^ ^ 5004 0: abcdabcd 5005 1: cd 5006 abcdcdcdcdcd 5007--->abcdcdcdcdcd 5008 +0 ^ (ab|cd){3,4} 5009 +1 ^ a 5010 +2 ^^ b 5011 +3 ^ ^ | 5012 +1 ^ ^ a 5013 +4 ^ ^ c 5014 +5 ^ ^ d 5015 +6 ^ ^ ) 5016 +1 ^ ^ a 5017 +4 ^ ^ c 5018 +5 ^ ^ d 5019 +6 ^ ^ ) 5020 +1 ^ ^ a 5021 +4 ^ ^ c 5022 +5 ^ ^ d 5023 +6 ^ ^ ) 5024+12 ^ ^ 5025 0: abcdcdcd 5026 1: cd 5027 5028/([ab]{,4}c|xy)/ICDZ 5029------------------------------------------------------------------ 5030 Bra 5031 Callout 255 0 14 5032 CBra 1 5033 Callout 255 1 4 5034 [ab] 5035 Callout 255 5 1 5036 { 5037 Callout 255 6 1 5038 , 5039 Callout 255 7 1 5040 4 5041 Callout 255 8 1 5042 } 5043 Callout 255 9 1 5044 c 5045 Callout 255 10 0 5046 Alt 5047 Callout 255 11 1 5048 x 5049 Callout 255 12 1 5050 y 5051 Callout 255 13 0 5052 Ket 5053 Callout 255 14 0 5054 Ket 5055 End 5056------------------------------------------------------------------ 5057Capturing subpattern count = 1 5058Options: 5059No first char 5060No need char 5061 Note: that { does NOT introduce a quantifier 5062--->Note: that { does NOT introduce a quantifier 5063 +0 ^ ([ab]{,4}c|xy) 5064 +1 ^ [ab] 5065+11 ^ x 5066 +0 ^ ([ab]{,4}c|xy) 5067 +1 ^ [ab] 5068+11 ^ x 5069 +0 ^ ([ab]{,4}c|xy) 5070 +1 ^ [ab] 5071+11 ^ x 5072 +0 ^ ([ab]{,4}c|xy) 5073 +1 ^ [ab] 5074+11 ^ x 5075 +0 ^ ([ab]{,4}c|xy) 5076 +1 ^ [ab] 5077+11 ^ x 5078 +0 ^ ([ab]{,4}c|xy) 5079 +1 ^ [ab] 5080+11 ^ x 5081 +0 ^ ([ab]{,4}c|xy) 5082 +1 ^ [ab] 5083+11 ^ x 5084 +0 ^ ([ab]{,4}c|xy) 5085 +1 ^ [ab] 5086+11 ^ x 5087 +0 ^ ([ab]{,4}c|xy) 5088 +1 ^ [ab] 5089 +5 ^^ { 5090+11 ^ x 5091 +0 ^ ([ab]{,4}c|xy) 5092 +1 ^ [ab] 5093+11 ^ x 5094 +0 ^ ([ab]{,4}c|xy) 5095 +1 ^ [ab] 5096+11 ^ x 5097 +0 ^ ([ab]{,4}c|xy) 5098 +1 ^ [ab] 5099+11 ^ x 5100 +0 ^ ([ab]{,4}c|xy) 5101 +1 ^ [ab] 5102+11 ^ x 5103 +0 ^ ([ab]{,4}c|xy) 5104 +1 ^ [ab] 5105+11 ^ x 5106 +0 ^ ([ab]{,4}c|xy) 5107 +1 ^ [ab] 5108+11 ^ x 5109 +0 ^ ([ab]{,4}c|xy) 5110 +1 ^ [ab] 5111+11 ^ x 5112 +0 ^ ([ab]{,4}c|xy) 5113 +1 ^ [ab] 5114+11 ^ x 5115 +0 ^ ([ab]{,4}c|xy) 5116 +1 ^ [ab] 5117+11 ^ x 5118 +0 ^ ([ab]{,4}c|xy) 5119 +1 ^ [ab] 5120+11 ^ x 5121 +0 ^ ([ab]{,4}c|xy) 5122 +1 ^ [ab] 5123+11 ^ x 5124 +0 ^ ([ab]{,4}c|xy) 5125 +1 ^ [ab] 5126+11 ^ x 5127 +0 ^ ([ab]{,4}c|xy) 5128 +1 ^ [ab] 5129+11 ^ x 5130 +0 ^ ([ab]{,4}c|xy) 5131 +1 ^ [ab] 5132+11 ^ x 5133 +0 ^ ([ab]{,4}c|xy) 5134 +1 ^ [ab] 5135+11 ^ x 5136 +0 ^ ([ab]{,4}c|xy) 5137 +1 ^ [ab] 5138+11 ^ x 5139 +0 ^ ([ab]{,4}c|xy) 5140 +1 ^ [ab] 5141+11 ^ x 5142 +0 ^ ([ab]{,4}c|xy) 5143 +1 ^ [ab] 5144+11 ^ x 5145 +0 ^ ([ab]{,4}c|xy) 5146 +1 ^ [ab] 5147+11 ^ x 5148 +0 ^ ([ab]{,4}c|xy) 5149 +1 ^ [ab] 5150+11 ^ x 5151 +0 ^ ([ab]{,4}c|xy) 5152 +1 ^ [ab] 5153+11 ^ x 5154 +0 ^ ([ab]{,4}c|xy) 5155 +1 ^ [ab] 5156+11 ^ x 5157 +0 ^ ([ab]{,4}c|xy) 5158 +1 ^ [ab] 5159+11 ^ x 5160 +0 ^ ([ab]{,4}c|xy) 5161 +1 ^ [ab] 5162 +5 ^^ { 5163+11 ^ x 5164 +0 ^ ([ab]{,4}c|xy) 5165 +1 ^ [ab] 5166+11 ^ x 5167 +0 ^ ([ab]{,4}c|xy) 5168 +1 ^ [ab] 5169+11 ^ x 5170 +0 ^ ([ab]{,4}c|xy) 5171 +1 ^ [ab] 5172+11 ^ x 5173 +0 ^ ([ab]{,4}c|xy) 5174 +1 ^ [ab] 5175 +5 ^^ { 5176+11 ^ x 5177 +0 ^ ([ab]{,4}c|xy) 5178 +1 ^ [ab] 5179+11 ^ x 5180 +0 ^ ([ab]{,4}c|xy) 5181 +1 ^ [ab] 5182+11 ^ x 5183 +0 ^ ([ab]{,4}c|xy) 5184 +1 ^ [ab] 5185+11 ^ x 5186 +0 ^ ([ab]{,4}c|xy) 5187 +1 ^ [ab] 5188+11 ^ x 5189 +0 ^ ([ab]{,4}c|xy) 5190 +1 ^ [ab] 5191+11 ^ x 5192 +0 ^ ([ab]{,4}c|xy) 5193 +1 ^ [ab] 5194+11 ^ x 5195 +0 ^ ([ab]{,4}c|xy) 5196 +1 ^ [ab] 5197+11 ^ x 5198 +0 ^ ([ab]{,4}c|xy) 5199 +1 ^ [ab] 5200+11 ^ x 5201No match 5202 5203/([ab]{1,4}c|xy){4,5}?123/ICDZ 5204------------------------------------------------------------------ 5205 Bra 5206 Callout 255 0 21 5207 CBra 1 5208 Callout 255 1 9 5209 [ab]{1,4} 5210 Callout 255 10 1 5211 c 5212 Callout 255 11 0 5213 Alt 5214 Callout 255 12 1 5215 x 5216 Callout 255 13 1 5217 y 5218 Callout 255 14 0 5219 Ket 5220 CBra 1 5221 Callout 255 1 9 5222 [ab]{1,4} 5223 Callout 255 10 1 5224 c 5225 Callout 255 11 0 5226 Alt 5227 Callout 255 12 1 5228 x 5229 Callout 255 13 1 5230 y 5231 Callout 255 14 0 5232 Ket 5233 CBra 1 5234 Callout 255 1 9 5235 [ab]{1,4} 5236 Callout 255 10 1 5237 c 5238 Callout 255 11 0 5239 Alt 5240 Callout 255 12 1 5241 x 5242 Callout 255 13 1 5243 y 5244 Callout 255 14 0 5245 Ket 5246 CBra 1 5247 Callout 255 1 9 5248 [ab]{1,4} 5249 Callout 255 10 1 5250 c 5251 Callout 255 11 0 5252 Alt 5253 Callout 255 12 1 5254 x 5255 Callout 255 13 1 5256 y 5257 Callout 255 14 0 5258 Ket 5259 Braminzero 5260 CBra 1 5261 Callout 255 1 9 5262 [ab]{1,4} 5263 Callout 255 10 1 5264 c 5265 Callout 255 11 0 5266 Alt 5267 Callout 255 12 1 5268 x 5269 Callout 255 13 1 5270 y 5271 Callout 255 14 0 5272 Ket 5273 Callout 255 21 1 5274 1 5275 Callout 255 22 1 5276 2 5277 Callout 255 23 1 5278 3 5279 Callout 255 24 0 5280 Ket 5281 End 5282------------------------------------------------------------------ 5283Capturing subpattern count = 1 5284Options: 5285No first char 5286Need char = '3' 5287 aacaacaacaacaac123 5288--->aacaacaacaacaac123 5289 +0 ^ ([ab]{1,4}c|xy){4,5}? 5290 +1 ^ [ab]{1,4} 5291+10 ^ ^ c 5292+11 ^ ^ | 5293 +1 ^ ^ [ab]{1,4} 5294+10 ^ ^ c 5295+11 ^ ^ | 5296 +1 ^ ^ [ab]{1,4} 5297+10 ^ ^ c 5298+11 ^ ^ | 5299 +1 ^ ^ [ab]{1,4} 5300+10 ^ ^ c 5301+11 ^ ^ | 5302+21 ^ ^ 1 5303 +1 ^ ^ [ab]{1,4} 5304+10 ^ ^ c 5305+11 ^ ^ | 5306+21 ^ ^ 1 5307+22 ^ ^ 2 5308+23 ^ ^ 3 5309+24 ^ ^ 5310 0: aacaacaacaacaac123 5311 1: aac 5312 5313/\b.*/I 5314Capturing subpattern count = 0 5315No options 5316No first char 5317No need char 5318 ab cd\>1 5319 0: cd 5320 5321/\b.*/Is 5322Capturing subpattern count = 0 5323Options: dotall 5324No first char 5325No need char 5326 ab cd\>1 5327 0: cd 5328 5329/(?!.bcd).*/I 5330Capturing subpattern count = 0 5331No options 5332No first char 5333No need char 5334 Xbcd12345 5335 0: bcd12345 5336 5337/abcde/I 5338Capturing subpattern count = 0 5339No options 5340First char = 'a' 5341Need char = 'e' 5342 ab\P 5343Partial match: ab 5344 abc\P 5345Partial match: abc 5346 abcd\P 5347Partial match: abcd 5348 abcde\P 5349 0: abcde 5350 the quick brown abc\P 5351Partial match: abc 5352 ** Failers\P 5353No match 5354 the quick brown abxyz fox\P 5355No match 5356 5357"^(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])/(20)?\d\d$"I 5358Capturing subpattern count = 3 5359Options: anchored 5360No first char 5361Need char = '/' 5362 13/05/04\P 5363 0: 13/05/04 5364 1: 13 5365 2: 05 5366 13/5/2004\P 5367 0: 13/5/2004 5368 1: 13 5369 2: 5 5370 3: 20 5371 02/05/09\P 5372 0: 02/05/09 5373 1: 02 5374 2: 05 5375 1\P 5376Partial match: 1 5377 1/2\P 5378Partial match: 1/2 5379 1/2/0\P 5380Partial match: 1/2/0 5381 1/2/04\P 5382 0: 1/2/04 5383 1: 1 5384 2: 2 5385 0\P 5386Partial match: 0 5387 02/\P 5388Partial match: 02/ 5389 02/0\P 5390Partial match: 02/0 5391 02/1\P 5392Partial match: 02/1 5393 ** Failers\P 5394No match 5395 \P 5396No match 5397 123\P 5398No match 5399 33/4/04\P 5400No match 5401 3/13/04\P 5402No match 5403 0/1/2003\P 5404No match 5405 0/\P 5406No match 5407 02/0/\P 5408No match 5409 02/13\P 5410No match 5411 5412/0{0,2}ABC/I 5413Capturing subpattern count = 0 5414No options 5415No first char 5416Need char = 'C' 5417 5418/\d{3,}ABC/I 5419Capturing subpattern count = 0 5420No options 5421No first char 5422Need char = 'C' 5423 5424/\d*ABC/I 5425Capturing subpattern count = 0 5426No options 5427No first char 5428Need char = 'C' 5429 5430/[abc]+DE/I 5431Capturing subpattern count = 0 5432No options 5433No first char 5434Need char = 'E' 5435 5436/[abc]?123/I 5437Capturing subpattern count = 0 5438No options 5439No first char 5440Need char = '3' 5441 123\P 5442 0: 123 5443 a\P 5444Partial match: a 5445 b\P 5446Partial match: b 5447 c\P 5448Partial match: c 5449 c12\P 5450Partial match: c12 5451 c123\P 5452 0: c123 5453 5454/^(?:\d){3,5}X/I 5455Capturing subpattern count = 0 5456Options: anchored 5457No first char 5458Need char = 'X' 5459 1\P 5460Partial match: 1 5461 123\P 5462Partial match: 123 5463 123X 5464 0: 123X 5465 1234\P 5466Partial match: 1234 5467 1234X 5468 0: 1234X 5469 12345\P 5470Partial match: 12345 5471 12345X 5472 0: 12345X 5473 *** Failers 5474No match 5475 1X 5476No match 5477 123456\P 5478No match 5479 5480/abc/I>testsavedregex 5481Capturing subpattern count = 0 5482No options 5483First char = 'a' 5484Need char = 'c' 5485Compiled regex written to testsavedregex 5486<testsavedregex 5487Compiled regex loaded from testsavedregex 5488No study data 5489 abc 5490 0: abc 5491 ** Failers 5492No match 5493 bca 5494No match 5495 5496/abc/IF>testsavedregex 5497Capturing subpattern count = 0 5498No options 5499First char = 'a' 5500Need char = 'c' 5501Compiled regex written to testsavedregex 5502<testsavedregex 5503Compiled regex (byte-inverted) loaded from testsavedregex 5504No study data 5505 abc 5506 0: abc 5507 ** Failers 5508No match 5509 bca 5510No match 5511 5512/(a|b)/IS>testsavedregex 5513Capturing subpattern count = 1 5514No options 5515No first char 5516No need char 5517Subject length lower bound = 1 5518Starting byte set: a b 5519Compiled regex written to testsavedregex 5520Study data written to testsavedregex 5521<testsavedregex 5522Compiled regex loaded from testsavedregex 5523Study data loaded from testsavedregex 5524 abc 5525 0: a 5526 1: a 5527 ** Failers 5528 0: a 5529 1: a 5530 def 5531No match 5532 5533/(a|b)/ISF>testsavedregex 5534Capturing subpattern count = 1 5535No options 5536No first char 5537No need char 5538Subject length lower bound = 1 5539Starting byte set: a b 5540Compiled regex written to testsavedregex 5541Study data written to testsavedregex 5542<testsavedregex 5543Compiled regex (byte-inverted) loaded from testsavedregex 5544Study data loaded from testsavedregex 5545 abc 5546 0: a 5547 1: a 5548 ** Failers 5549 0: a 5550 1: a 5551 def 5552No match 5553 5554~<(\w+)/?>(.)*</(\1)>~smgI 5555Capturing subpattern count = 3 5556Max back reference = 1 5557Options: multiline dotall 5558First char = '<' 5559Need char = '>' 5560 <!DOCTYPE seite SYSTEM "http://www.lco.lineas.de/xmlCms.dtd">\n<seite>\n<dokumenteninformation>\n<seitentitel>Partner der LCO</seitentitel>\n<sprache>de</sprache>\n<seitenbeschreibung>Partner der LINEAS Consulting\nGmbH</seitenbeschreibung>\n<schluesselworte>LINEAS Consulting GmbH Hamburg\nPartnerfirmen</schluesselworte>\n<revisit>30 days</revisit>\n<robots>index,follow</robots>\n<menueinformation>\n<aktiv>ja</aktiv>\n<menueposition>3</menueposition>\n<menuetext>Partner</menuetext>\n</menueinformation>\n<lastedited>\n<autor>LCO</autor>\n<firma>LINEAS Consulting</firma>\n<datum>15.10.2003</datum>\n</lastedited>\n</dokumenteninformation>\n<inhalt>\n\n<absatzueberschrift>Die Partnerfirmen der LINEAS Consulting\nGmbH</absatzueberschrift>\n\n<absatz><link ziel="http://www.ca.com/" zielfenster="_blank">\n<bild name="logo_ca.gif" rahmen="no"/></link> <link\nziel="http://www.ey.com/" zielfenster="_blank"><bild\nname="logo_euy.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><link ziel="http://www.cisco.de/" zielfenster="_blank">\n<bild name="logo_cisco.gif" rahmen="ja"/></link></absatz>\n\n<absatz><link ziel="http://www.atelion.de/"\nzielfenster="_blank"><bild\nname="logo_atelion.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><link ziel="http://www.line-information.de/"\nzielfenster="_blank">\n<bild name="logo_line_information.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><bild name="logo_aw.gif" rahmen="no"/></absatz>\n\n<absatz><link ziel="http://www.incognis.de/"\nzielfenster="_blank"><bild\nname="logo_incognis.gif" rahmen="no"/></link></absatz>\n\n<absatz><link ziel="http://www.addcraft.com/"\nzielfenster="_blank"><bild\nname="logo_addcraft.gif" rahmen="no"/></link></absatz>\n\n<absatz><link ziel="http://www.comendo.com/"\nzielfenster="_blank"><bild\nname="logo_comendo.gif" rahmen="no"/></link></absatz>\n\n</inhalt>\n</seite> 5561 0: <seite>\x0a<dokumenteninformation>\x0a<seitentitel>Partner der LCO</seitentitel>\x0a<sprache>de</sprache>\x0a<seitenbeschreibung>Partner der LINEAS Consulting\x0aGmbH</seitenbeschreibung>\x0a<schluesselworte>LINEAS Consulting GmbH Hamburg\x0aPartnerfirmen</schluesselworte>\x0a<revisit>30 days</revisit>\x0a<robots>index,follow</robots>\x0a<menueinformation>\x0a<aktiv>ja</aktiv>\x0a<menueposition>3</menueposition>\x0a<menuetext>Partner</menuetext>\x0a</menueinformation>\x0a<lastedited>\x0a<autor>LCO</autor>\x0a<firma>LINEAS Consulting</firma>\x0a<datum>15.10.2003</datum>\x0a</lastedited>\x0a</dokumenteninformation>\x0a<inhalt>\x0a\x0a<absatzueberschrift>Die Partnerfirmen der LINEAS Consulting\x0aGmbH</absatzueberschrift>\x0a\x0a<absatz><link ziel="http://www.ca.com/" zielfenster="_blank">\x0a<bild name="logo_ca.gif" rahmen="no"/></link> <link\x0aziel="http://www.ey.com/" zielfenster="_blank"><bild\x0aname="logo_euy.gif" rahmen="no"/></link>\x0a</absatz>\x0a\x0a<absatz><link ziel="http://www.cisco.de/" zielfenster="_blank">\x0a<bild name="logo_cisco.gif" rahmen="ja"/></link></absatz>\x0a\x0a<absatz><link ziel="http://www.atelion.de/"\x0azielfenster="_blank"><bild\x0aname="logo_atelion.gif" rahmen="no"/></link>\x0a</absatz>\x0a\x0a<absatz><link ziel="http://www.line-information.de/"\x0azielfenster="_blank">\x0a<bild name="logo_line_information.gif" rahmen="no"/></link>\x0a</absatz>\x0a\x0a<absatz><bild name="logo_aw.gif" rahmen="no"/></absatz>\x0a\x0a<absatz><link ziel="http://www.incognis.de/"\x0azielfenster="_blank"><bild\x0aname="logo_incognis.gif" rahmen="no"/></link></absatz>\x0a\x0a<absatz><link ziel="http://www.addcraft.com/"\x0azielfenster="_blank"><bild\x0aname="logo_addcraft.gif" rahmen="no"/></link></absatz>\x0a\x0a<absatz><link ziel="http://www.comendo.com/"\x0azielfenster="_blank"><bild\x0aname="logo_comendo.gif" rahmen="no"/></link></absatz>\x0a\x0a</inhalt>\x0a</seite> 5562 1: seite 5563 2: \x0a 5564 3: seite 5565 5566/^a/IF 5567Capturing subpattern count = 0 5568Options: anchored 5569No first char 5570No need char 5571 5572/line\nbreak/I 5573Capturing subpattern count = 0 5574Contains explicit CR or LF match 5575No options 5576First char = 'l' 5577Need char = 'k' 5578 this is a line\nbreak 5579 0: line\x0abreak 5580 line one\nthis is a line\nbreak in the second line 5581 0: line\x0abreak 5582 5583/line\nbreak/If 5584Capturing subpattern count = 0 5585Contains explicit CR or LF match 5586Options: firstline 5587First char = 'l' 5588Need char = 'k' 5589 this is a line\nbreak 5590 0: line\x0abreak 5591 ** Failers 5592No match 5593 line one\nthis is a line\nbreak in the second line 5594No match 5595 5596/line\nbreak/Imf 5597Capturing subpattern count = 0 5598Contains explicit CR or LF match 5599Options: multiline firstline 5600First char = 'l' 5601Need char = 'k' 5602 this is a line\nbreak 5603 0: line\x0abreak 5604 ** Failers 5605No match 5606 line one\nthis is a line\nbreak in the second line 5607No match 5608 5609/ab.cd/P 5610 ab-cd 5611 0: ab-cd 5612 ab=cd 5613 0: ab=cd 5614 ** Failers 5615No match: POSIX code 17: match failed 5616 ab\ncd 5617No match: POSIX code 17: match failed 5618 5619/ab.cd/Ps 5620 ab-cd 5621 0: ab-cd 5622 ab=cd 5623 0: ab=cd 5624 ab\ncd 5625 0: ab\x0acd 5626 5627/(?i)(?-i)AbCd/I 5628Capturing subpattern count = 0 5629No options 5630First char = 'A' 5631Need char = 'd' 5632 AbCd 5633 0: AbCd 5634 ** Failers 5635No match 5636 abcd 5637No match 5638 5639/a{11111111111111111111}/I 5640Failed: number too big in {} quantifier at offset 22 5641 5642/(){64294967295}/I 5643Failed: number too big in {} quantifier at offset 14 5644 5645/(){2,4294967295}/I 5646Failed: number too big in {} quantifier at offset 15 5647 5648"(?i:a)(?i:b)(?i:c)(?i:d)(?i:e)(?i:f)(?i:g)(?i:h)(?i:i)(?i:j)(k)(?i:l)A\1B"I 5649Capturing subpattern count = 1 5650Max back reference = 1 5651No options 5652First char = 'a' (caseless) 5653Need char = 'B' 5654 abcdefghijklAkB 5655 0: abcdefghijklAkB 5656 1: k 5657 5658"(?P<n0>a)(?P<n1>b)(?P<n2>c)(?P<n3>d)(?P<n4>e)(?P<n5>f)(?P<n6>g)(?P<n7>h)(?P<n8>i)(?P<n9>j)(?P<n10>k)(?P<n11>l)A\11B"I 5659Capturing subpattern count = 12 5660Max back reference = 11 5661Named capturing subpatterns: 5662 n0 1 5663 n1 2 5664 n10 11 5665 n11 12 5666 n2 3 5667 n3 4 5668 n4 5 5669 n5 6 5670 n6 7 5671 n7 8 5672 n8 9 5673 n9 10 5674No options 5675First char = 'a' 5676Need char = 'B' 5677 abcdefghijklAkB 5678 0: abcdefghijklAkB 5679 1: a 5680 2: b 5681 3: c 5682 4: d 5683 5: e 5684 6: f 5685 7: g 5686 8: h 5687 9: i 568810: j 568911: k 569012: l 5691 5692"(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)A\11B"I 5693Capturing subpattern count = 12 5694Max back reference = 11 5695No options 5696First char = 'a' 5697Need char = 'B' 5698 abcdefghijklAkB 5699 0: abcdefghijklAkB 5700 1: a 5701 2: b 5702 3: c 5703 4: d 5704 5: e 5705 6: f 5706 7: g 5707 8: h 5708 9: i 570910: j 571011: k 571112: l 5712 5713"(?P<name0>a)(?P<name1>a)(?P<name2>a)(?P<name3>a)(?P<name4>a)(?P<name5>a)(?P<name6>a)(?P<name7>a)(?P<name8>a)(?P<name9>a)(?P<name10>a)(?P<name11>a)(?P<name12>a)(?P<name13>a)(?P<name14>a)(?P<name15>a)(?P<name16>a)(?P<name17>a)(?P<name18>a)(?P<name19>a)(?P<name20>a)(?P<name21>a)(?P<name22>a)(?P<name23>a)(?P<name24>a)(?P<name25>a)(?P<name26>a)(?P<name27>a)(?P<name28>a)(?P<name29>a)(?P<name30>a)(?P<name31>a)(?P<name32>a)(?P<name33>a)(?P<name34>a)(?P<name35>a)(?P<name36>a)(?P<name37>a)(?P<name38>a)(?P<name39>a)(?P<name40>a)(?P<name41>a)(?P<name42>a)(?P<name43>a)(?P<name44>a)(?P<name45>a)(?P<name46>a)(?P<name47>a)(?P<name48>a)(?P<name49>a)(?P<name50>a)(?P<name51>a)(?P<name52>a)(?P<name53>a)(?P<name54>a)(?P<name55>a)(?P<name56>a)(?P<name57>a)(?P<name58>a)(?P<name59>a)(?P<name60>a)(?P<name61>a)(?P<name62>a)(?P<name63>a)(?P<name64>a)(?P<name65>a)(?P<name66>a)(?P<name67>a)(?P<name68>a)(?P<name69>a)(?P<name70>a)(?P<name71>a)(?P<name72>a)(?P<name73>a)(?P<name74>a)(?P<name75>a)(?P<name76>a)(?P<name77>a)(?P<name78>a)(?P<name79>a)(?P<name80>a)(?P<name81>a)(?P<name82>a)(?P<name83>a)(?P<name84>a)(?P<name85>a)(?P<name86>a)(?P<name87>a)(?P<name88>a)(?P<name89>a)(?P<name90>a)(?P<name91>a)(?P<name92>a)(?P<name93>a)(?P<name94>a)(?P<name95>a)(?P<name96>a)(?P<name97>a)(?P<name98>a)(?P<name99>a)(?P<name100>a)"I 5714Capturing subpattern count = 101 5715Named capturing subpatterns: 5716 name0 1 5717 name1 2 5718 name10 11 5719 name100 101 5720 name11 12 5721 name12 13 5722 name13 14 5723 name14 15 5724 name15 16 5725 name16 17 5726 name17 18 5727 name18 19 5728 name19 20 5729 name2 3 5730 name20 21 5731 name21 22 5732 name22 23 5733 name23 24 5734 name24 25 5735 name25 26 5736 name26 27 5737 name27 28 5738 name28 29 5739 name29 30 5740 name3 4 5741 name30 31 5742 name31 32 5743 name32 33 5744 name33 34 5745 name34 35 5746 name35 36 5747 name36 37 5748 name37 38 5749 name38 39 5750 name39 40 5751 name4 5 5752 name40 41 5753 name41 42 5754 name42 43 5755 name43 44 5756 name44 45 5757 name45 46 5758 name46 47 5759 name47 48 5760 name48 49 5761 name49 50 5762 name5 6 5763 name50 51 5764 name51 52 5765 name52 53 5766 name53 54 5767 name54 55 5768 name55 56 5769 name56 57 5770 name57 58 5771 name58 59 5772 name59 60 5773 name6 7 5774 name60 61 5775 name61 62 5776 name62 63 5777 name63 64 5778 name64 65 5779 name65 66 5780 name66 67 5781 name67 68 5782 name68 69 5783 name69 70 5784 name7 8 5785 name70 71 5786 name71 72 5787 name72 73 5788 name73 74 5789 name74 75 5790 name75 76 5791 name76 77 5792 name77 78 5793 name78 79 5794 name79 80 5795 name8 9 5796 name80 81 5797 name81 82 5798 name82 83 5799 name83 84 5800 name84 85 5801 name85 86 5802 name86 87 5803 name87 88 5804 name88 89 5805 name89 90 5806 name9 10 5807 name90 91 5808 name91 92 5809 name92 93 5810 name93 94 5811 name94 95 5812 name95 96 5813 name96 97 5814 name97 98 5815 name98 99 5816 name99 100 5817No options 5818First char = 'a' 5819Need char = 'a' 5820 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5821Matched, but too many substrings 5822 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5823 1: a 5824 2: a 5825 3: a 5826 4: a 5827 5: a 5828 6: a 5829 7: a 5830 8: a 5831 9: a 583210: a 583311: a 583412: a 583513: a 583614: a 5837 5838"(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)"I 5839Capturing subpattern count = 101 5840No options 5841First char = 'a' 5842Need char = 'a' 5843 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5844Matched, but too many substrings 5845 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5846 1: a 5847 2: a 5848 3: a 5849 4: a 5850 5: a 5851 6: a 5852 7: a 5853 8: a 5854 9: a 585510: a 585611: a 585712: a 585813: a 585914: a 5860 5861/[^()]*(?:\((?R)\)[^()]*)*/I 5862Capturing subpattern count = 0 5863No options 5864No first char 5865No need char 5866 (this(and)that 5867 0: 5868 (this(and)that) 5869 0: (this(and)that) 5870 (this(and)that)stuff 5871 0: (this(and)that)stuff 5872 5873/[^()]*(?:\((?>(?R))\)[^()]*)*/I 5874Capturing subpattern count = 0 5875No options 5876No first char 5877No need char 5878 (this(and)that 5879 0: 5880 (this(and)that) 5881 0: (this(and)that) 5882 5883/[^()]*(?:\((?R)\))*[^()]*/I 5884Capturing subpattern count = 0 5885No options 5886No first char 5887No need char 5888 (this(and)that 5889 0: 5890 (this(and)that) 5891 0: (this(and)that) 5892 5893/(?:\((?R)\))*[^()]*/I 5894Capturing subpattern count = 0 5895No options 5896No first char 5897No need char 5898 (this(and)that 5899 0: 5900 (this(and)that) 5901 0: 5902 ((this)) 5903 0: ((this)) 5904 5905/(?:\((?R)\))|[^()]*/I 5906Capturing subpattern count = 0 5907No options 5908No first char 5909No need char 5910 (this(and)that 5911 0: 5912 (this(and)that) 5913 0: 5914 (this) 5915 0: (this) 5916 ((this)) 5917 0: ((this)) 5918 5919/a(b)c/PN 5920 abc 5921Matched with REG_NOSUB 5922 5923/a(?P<name>b)c/PN 5924 abc 5925Matched with REG_NOSUB 5926 5927/\x{100}/I 5928Failed: character value in \x{...} sequence is too large at offset 6 5929 5930/\x{0000ff}/I 5931Capturing subpattern count = 0 5932No options 5933First char = 255 5934No need char 5935 5936/^((?P<A>a1)|(?P<A>a2)b)/I 5937Failed: two named subpatterns have the same name at offset 17 5938 5939/^((?P<A>a1)|(?P<A>a2)b)/IJ 5940Capturing subpattern count = 3 5941Named capturing subpatterns: 5942 A 2 5943 A 3 5944Options: anchored dupnames 5945No first char 5946No need char 5947 a1b\CA 5948 0: a1 5949 1: a1 5950 2: a1 5951 C a1 (2) A 5952 a2b\CA 5953 0: a2b 5954 1: a2b 5955 2: <unset> 5956 3: a2 5957 C a2 (2) A 5958 ** Failers 5959No match 5960 a1b\CZ\CA 5961no parentheses with name "Z" 5962 0: a1 5963 1: a1 5964 2: a1 5965copy substring Z failed -7 5966 C a1 (2) A 5967 5968/^(?P<A>a)(?P<A>b)/IJ 5969Capturing subpattern count = 2 5970Named capturing subpatterns: 5971 A 1 5972 A 2 5973Options: anchored dupnames 5974No first char 5975No need char 5976 ab\CA 5977 0: ab 5978 1: a 5979 2: b 5980 C a (1) A 5981 5982/^(?P<A>a)(?P<A>b)|cd/IJ 5983Capturing subpattern count = 2 5984Named capturing subpatterns: 5985 A 1 5986 A 2 5987Options: dupnames 5988No first char 5989No need char 5990 ab\CA 5991 0: ab 5992 1: a 5993 2: b 5994 C a (1) A 5995 cd\CA 5996 0: cd 5997copy substring A failed -7 5998 5999/^(?P<A>a)(?P<A>b)|cd(?P<A>ef)(?P<A>gh)/IJ 6000Capturing subpattern count = 4 6001Named capturing subpatterns: 6002 A 1 6003 A 2 6004 A 3 6005 A 4 6006Options: dupnames 6007No first char 6008No need char 6009 cdefgh\CA 6010 0: cdefgh 6011 1: <unset> 6012 2: <unset> 6013 3: ef 6014 4: gh 6015 C ef (2) A 6016 6017/^((?P<A>a1)|(?P<A>a2)b)/IJ 6018Capturing subpattern count = 3 6019Named capturing subpatterns: 6020 A 2 6021 A 3 6022Options: anchored dupnames 6023No first char 6024No need char 6025 a1b\GA 6026 0: a1 6027 1: a1 6028 2: a1 6029 G a1 (2) A 6030 a2b\GA 6031 0: a2b 6032 1: a2b 6033 2: <unset> 6034 3: a2 6035 G a2 (2) A 6036 ** Failers 6037No match 6038 a1b\GZ\GA 6039no parentheses with name "Z" 6040 0: a1 6041 1: a1 6042 2: a1 6043copy substring Z failed -7 6044 G a1 (2) A 6045 6046/^(?P<A>a)(?P<A>b)/IJ 6047Capturing subpattern count = 2 6048Named capturing subpatterns: 6049 A 1 6050 A 2 6051Options: anchored dupnames 6052No first char 6053No need char 6054 ab\GA 6055 0: ab 6056 1: a 6057 2: b 6058 G a (1) A 6059 6060/^(?P<A>a)(?P<A>b)|cd/IJ 6061Capturing subpattern count = 2 6062Named capturing subpatterns: 6063 A 1 6064 A 2 6065Options: dupnames 6066No first char 6067No need char 6068 ab\GA 6069 0: ab 6070 1: a 6071 2: b 6072 G a (1) A 6073 cd\GA 6074 0: cd 6075copy substring A failed -7 6076 6077/^(?P<A>a)(?P<A>b)|cd(?P<A>ef)(?P<A>gh)/IJ 6078Capturing subpattern count = 4 6079Named capturing subpatterns: 6080 A 1 6081 A 2 6082 A 3 6083 A 4 6084Options: dupnames 6085No first char 6086No need char 6087 cdefgh\GA 6088 0: cdefgh 6089 1: <unset> 6090 2: <unset> 6091 3: ef 6092 4: gh 6093 G ef (2) A 6094 6095/(?J)^((?P<A>a1)|(?P<A>a2)b)/I 6096Capturing subpattern count = 3 6097Named capturing subpatterns: 6098 A 2 6099 A 3 6100Options: anchored dupnames 6101Duplicate name status changes 6102No first char 6103No need char 6104 a1b\CA 6105 0: a1 6106 1: a1 6107 2: a1 6108 C a1 (2) A 6109 a2b\CA 6110 0: a2b 6111 1: a2b 6112 2: <unset> 6113 3: a2 6114 C a2 (2) A 6115 6116/^(?P<A>a) (?J:(?P<B>b)(?P<B>c)) (?P<A>d)/I 6117Failed: two named subpatterns have the same name at offset 37 6118 6119/ In this next test, J is not set at the outer level; consequently it isn't 6120set in the pattern's options; consequently pcre_get_named_substring() produces 6121a random value. /Ix 6122Capturing subpattern count = 1 6123Options: extended 6124First char = 'I' 6125Need char = 'e' 6126 6127/^(?P<A>a) (?J:(?P<B>b)(?P<B>c)) (?P<C>d)/I 6128Capturing subpattern count = 4 6129Named capturing subpatterns: 6130 A 1 6131 B 2 6132 B 3 6133 C 4 6134Options: anchored 6135Duplicate name status changes 6136No first char 6137No need char 6138 a bc d\CA\CB\CC 6139 0: a bc d 6140 1: a 6141 2: b 6142 3: c 6143 4: d 6144 C a (1) A 6145 C b (1) B 6146 C d (1) C 6147 6148/^(?P<A>a)?(?(A)a|b)/I 6149Capturing subpattern count = 1 6150Named capturing subpatterns: 6151 A 1 6152Options: anchored 6153No first char 6154No need char 6155 aabc 6156 0: aa 6157 1: a 6158 bc 6159 0: b 6160 ** Failers 6161No match 6162 abc 6163No match 6164 6165/(?:(?(ZZ)a|b)(?P<ZZ>X))+/I 6166Capturing subpattern count = 1 6167Named capturing subpatterns: 6168 ZZ 1 6169No options 6170No first char 6171Need char = 'X' 6172 bXaX 6173 0: bXaX 6174 1: X 6175 6176/(?:(?(2y)a|b)(X))+/I 6177Failed: reference to non-existent subpattern at offset 9 6178 6179/(?:(?(ZA)a|b)(?P<ZZ>X))+/I 6180Failed: reference to non-existent subpattern at offset 9 6181 6182/(?:(?(ZZ)a|b)(?(ZZ)a|b)(?P<ZZ>X))+/I 6183Capturing subpattern count = 1 6184Named capturing subpatterns: 6185 ZZ 1 6186No options 6187No first char 6188Need char = 'X' 6189 bbXaaX 6190 0: bbXaaX 6191 1: X 6192 6193/(?:(?(ZZ)a|\(b\))\\(?P<ZZ>X))+/I 6194Capturing subpattern count = 1 6195Named capturing subpatterns: 6196 ZZ 1 6197No options 6198No first char 6199Need char = 'X' 6200 (b)\\Xa\\X 6201 0: (b)\Xa\X 6202 1: X 6203 6204/(?P<ABC/I 6205Failed: syntax error in subpattern name (missing terminator) at offset 7 6206 6207/(?:(?(A)(?P=A)a|b)(?P<A>X|Y))+/I 6208Capturing subpattern count = 1 6209Max back reference = 1 6210Named capturing subpatterns: 6211 A 1 6212No options 6213No first char 6214No need char 6215 bXXaYYaY 6216 0: bXXaYYaY 6217 1: Y 6218 bXYaXXaX 6219 0: bX 6220 1: X 6221 6222/()()()()()()()()()(?:(?(A)(?P=A)a|b)(?P<A>X|Y))+/I 6223Capturing subpattern count = 10 6224Max back reference = 10 6225Named capturing subpatterns: 6226 A 10 6227No options 6228No first char 6229No need char 6230 bXXaYYaY 6231 0: bXXaYYaY 6232 1: 6233 2: 6234 3: 6235 4: 6236 5: 6237 6: 6238 7: 6239 8: 6240 9: 624110: Y 6242 6243/\777/I 6244Failed: octal value is greater than \377 (not in UTF-8 mode) at offset 3 6245 6246/\s*,\s*/IS 6247Capturing subpattern count = 0 6248No options 6249No first char 6250Need char = ',' 6251Subject length lower bound = 1 6252Starting byte set: \x09 \x0a \x0c \x0d \x20 , 6253 \x0b,\x0b 6254 0: , 6255 \x0c,\x0d 6256 0: \x0c,\x0d 6257 6258/^abc/Im 6259Capturing subpattern count = 0 6260Options: multiline 6261First char at start or follows newline 6262Need char = 'c' 6263 xyz\nabc 6264 0: abc 6265 xyz\nabc\<lf> 6266 0: abc 6267 xyz\r\nabc\<lf> 6268 0: abc 6269 xyz\rabc\<cr> 6270 0: abc 6271 xyz\r\nabc\<crlf> 6272 0: abc 6273 ** Failers 6274No match 6275 xyz\nabc\<cr> 6276No match 6277 xyz\r\nabc\<cr> 6278No match 6279 xyz\nabc\<crlf> 6280No match 6281 xyz\rabc\<crlf> 6282No match 6283 xyz\rabc\<lf> 6284No match 6285 6286/abc$/Im<lf> 6287Capturing subpattern count = 0 6288Options: multiline 6289Forced newline sequence: LF 6290First char = 'a' 6291Need char = 'c' 6292 xyzabc 6293 0: abc 6294 xyzabc\n 6295 0: abc 6296 xyzabc\npqr 6297 0: abc 6298 xyzabc\r\<cr> 6299 0: abc 6300 xyzabc\rpqr\<cr> 6301 0: abc 6302 xyzabc\r\n\<crlf> 6303 0: abc 6304 xyzabc\r\npqr\<crlf> 6305 0: abc 6306 ** Failers 6307No match 6308 xyzabc\r 6309No match 6310 xyzabc\rpqr 6311No match 6312 xyzabc\r\n 6313No match 6314 xyzabc\r\npqr 6315No match 6316 6317/^abc/Im<cr> 6318Capturing subpattern count = 0 6319Options: multiline 6320Forced newline sequence: CR 6321First char at start or follows newline 6322Need char = 'c' 6323 xyz\rabcdef 6324 0: abc 6325 xyz\nabcdef\<lf> 6326 0: abc 6327 ** Failers 6328No match 6329 xyz\nabcdef 6330No match 6331 6332/^abc/Im<lf> 6333Capturing subpattern count = 0 6334Options: multiline 6335Forced newline sequence: LF 6336First char at start or follows newline 6337Need char = 'c' 6338 xyz\nabcdef 6339 0: abc 6340 xyz\rabcdef\<cr> 6341 0: abc 6342 ** Failers 6343No match 6344 xyz\rabcdef 6345No match 6346 6347/^abc/Im<crlf> 6348Capturing subpattern count = 0 6349Options: multiline 6350Forced newline sequence: CRLF 6351First char at start or follows newline 6352Need char = 'c' 6353 xyz\r\nabcdef 6354 0: abc 6355 xyz\rabcdef\<cr> 6356 0: abc 6357 ** Failers 6358No match 6359 xyz\rabcdef 6360No match 6361 6362/^abc/Im<bad> 6363Unknown newline type at: <bad> 6364 6365 6366/abc/I 6367Capturing subpattern count = 0 6368No options 6369First char = 'a' 6370Need char = 'c' 6371 xyz\rabc\<bad> 6372Unknown newline type at: <bad> 6373 abc 6374 0: abc 6375 6376/.*/I<lf> 6377Capturing subpattern count = 0 6378Options: 6379Forced newline sequence: LF 6380First char at start or follows newline 6381No need char 6382 abc\ndef 6383 0: abc 6384 abc\rdef 6385 0: abc\x0ddef 6386 abc\r\ndef 6387 0: abc\x0d 6388 \<cr>abc\ndef 6389 0: abc\x0adef 6390 \<cr>abc\rdef 6391 0: abc 6392 \<cr>abc\r\ndef 6393 0: abc 6394 \<crlf>abc\ndef 6395 0: abc\x0adef 6396 \<crlf>abc\rdef 6397 0: abc\x0ddef 6398 \<crlf>abc\r\ndef 6399 0: abc 6400 6401/\w+(.)(.)?def/Is 6402Capturing subpattern count = 2 6403Options: dotall 6404No first char 6405Need char = 'f' 6406 abc\ndef 6407 0: abc\x0adef 6408 1: \x0a 6409 abc\rdef 6410 0: abc\x0ddef 6411 1: \x0d 6412 abc\r\ndef 6413 0: abc\x0d\x0adef 6414 1: \x0d 6415 2: \x0a 6416 6417+((?:\s|//.*\\n|/[*](?:\\n|.)*?[*]/)*)+I 6418Capturing subpattern count = 1 6419No options 6420No first char 6421No need char 6422 /* this is a C style comment */\M 6423Minimum match() limit = 120 6424Minimum match() recursion limit = 6 6425 0: /* this is a C style comment */ 6426 1: /* this is a C style comment */ 6427 6428/(?P<B>25[0-5]|2[0-4]\d|[01]?\d?\d)(?:\.(?P>B)){3}/I 6429Capturing subpattern count = 1 6430Named capturing subpatterns: 6431 B 1 6432No options 6433No first char 6434Need char = '.' 6435 6436/()()()()()()()()()()()()()()()()()()()() 6437 ()()()()()()()()()()()()()()()()()()()() 6438 ()()()()()()()()()()()()()()()()()()()() 6439 ()()()()()()()()()()()()()()()()()()()() 6440 ()()()()()()()()()()()()()()()()()()()() 6441 (.(.))/Ix 6442Capturing subpattern count = 102 6443Options: extended 6444No first char 6445No need char 6446 XY\O400 6447 0: XY 6448 1: 6449 2: 6450 3: 6451 4: 6452 5: 6453 6: 6454 7: 6455 8: 6456 9: 645710: 645811: 645912: 646013: 646114: 646215: 646316: 646417: 646518: 646619: 646720: 646821: 646922: 647023: 647124: 647225: 647326: 647427: 647528: 647629: 647730: 647831: 647932: 648033: 648134: 648235: 648336: 648437: 648538: 648639: 648740: 648841: 648942: 649043: 649144: 649245: 649346: 649447: 649548: 649649: 649750: 649851: 649952: 650053: 650154: 650255: 650356: 650457: 650558: 650659: 650760: 650861: 650962: 651063: 651164: 651265: 651366: 651467: 651568: 651669: 651770: 651871: 651972: 652073: 652174: 652275: 652376: 652477: 652578: 652679: 652780: 652881: 652982: 653083: 653184: 653285: 653386: 653487: 653588: 653689: 653790: 653891: 653992: 654093: 654194: 654295: 654396: 654497: 654598: 654699: 6547100: 6548101: XY 6549102: Y 6550 6551/(a*b|(?i:c*(?-i)d))/IS 6552Capturing subpattern count = 1 6553No options 6554No first char 6555No need char 6556Subject length lower bound = 1 6557Starting byte set: C a b c d 6558 6559/()[ab]xyz/IS 6560Capturing subpattern count = 1 6561No options 6562No first char 6563Need char = 'z' 6564Subject length lower bound = 4 6565Starting byte set: a b 6566 6567/(|)[ab]xyz/IS 6568Capturing subpattern count = 1 6569No options 6570No first char 6571Need char = 'z' 6572Subject length lower bound = 4 6573Starting byte set: a b 6574 6575/(|c)[ab]xyz/IS 6576Capturing subpattern count = 1 6577No options 6578No first char 6579Need char = 'z' 6580Subject length lower bound = 4 6581Starting byte set: a b c 6582 6583/(|c?)[ab]xyz/IS 6584Capturing subpattern count = 1 6585No options 6586No first char 6587Need char = 'z' 6588Subject length lower bound = 4 6589Starting byte set: a b c 6590 6591/(d?|c?)[ab]xyz/IS 6592Capturing subpattern count = 1 6593No options 6594No first char 6595Need char = 'z' 6596Subject length lower bound = 4 6597Starting byte set: a b c d 6598 6599/(d?|c)[ab]xyz/IS 6600Capturing subpattern count = 1 6601No options 6602No first char 6603Need char = 'z' 6604Subject length lower bound = 4 6605Starting byte set: a b c d 6606 6607/^a*b\d/DZ 6608------------------------------------------------------------------ 6609 Bra 6610 ^ 6611 a*+ 6612 b 6613 \d 6614 Ket 6615 End 6616------------------------------------------------------------------ 6617Capturing subpattern count = 0 6618Options: anchored 6619No first char 6620Need char = 'b' 6621 6622/^a*+b\d/DZ 6623------------------------------------------------------------------ 6624 Bra 6625 ^ 6626 a*+ 6627 b 6628 \d 6629 Ket 6630 End 6631------------------------------------------------------------------ 6632Capturing subpattern count = 0 6633Options: anchored 6634No first char 6635Need char = 'b' 6636 6637/^a*?b\d/DZ 6638------------------------------------------------------------------ 6639 Bra 6640 ^ 6641 a*+ 6642 b 6643 \d 6644 Ket 6645 End 6646------------------------------------------------------------------ 6647Capturing subpattern count = 0 6648Options: anchored 6649No first char 6650Need char = 'b' 6651 6652/^a+A\d/DZ 6653------------------------------------------------------------------ 6654 Bra 6655 ^ 6656 a++ 6657 A 6658 \d 6659 Ket 6660 End 6661------------------------------------------------------------------ 6662Capturing subpattern count = 0 6663Options: anchored 6664No first char 6665Need char = 'A' 6666 aaaA5 6667 0: aaaA5 6668 ** Failers 6669No match 6670 aaaa5 6671No match 6672 6673/^a*A\d/IiDZ 6674------------------------------------------------------------------ 6675 Bra 6676 ^ 6677 a* 6678 NC A 6679 \d 6680 Ket 6681 End 6682------------------------------------------------------------------ 6683Capturing subpattern count = 0 6684Options: anchored caseless 6685No first char 6686Need char = 'A' (caseless) 6687 aaaA5 6688 0: aaaA5 6689 aaaa5 6690 0: aaaa5 6691 6692/(a*|b*)[cd]/IS 6693Capturing subpattern count = 1 6694No options 6695No first char 6696No need char 6697Subject length lower bound = 1 6698Starting byte set: a b c d 6699 6700/(a+|b*)[cd]/IS 6701Capturing subpattern count = 1 6702No options 6703No first char 6704No need char 6705Subject length lower bound = 1 6706Starting byte set: a b c d 6707 6708/(a*|b+)[cd]/IS 6709Capturing subpattern count = 1 6710No options 6711No first char 6712No need char 6713Subject length lower bound = 1 6714Starting byte set: a b c d 6715 6716/(a+|b+)[cd]/IS 6717Capturing subpattern count = 1 6718No options 6719No first char 6720No need char 6721Subject length lower bound = 2 6722Starting byte set: a b 6723 6724/(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 6725 (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 6726 ((( 6727 a 6728 )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 6729 )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 6730 ))) 6731/Ix 6732Capturing subpattern count = 203 6733Options: extended 6734First char = 'a' 6735No need char 6736 large nest 6737Matched, but too many substrings 6738 0: a 6739 1: a 6740 2: a 6741 3: a 6742 4: a 6743 5: a 6744 6: a 6745 7: a 6746 8: a 6747 9: a 674810: a 674911: a 675012: a 675113: a 675214: a 6753 6754/a*\d/BZ 6755------------------------------------------------------------------ 6756 Bra 6757 a*+ 6758 \d 6759 Ket 6760 End 6761------------------------------------------------------------------ 6762 6763/a*\D/BZ 6764------------------------------------------------------------------ 6765 Bra 6766 a* 6767 \D 6768 Ket 6769 End 6770------------------------------------------------------------------ 6771 6772/0*\d/BZ 6773------------------------------------------------------------------ 6774 Bra 6775 0* 6776 \d 6777 Ket 6778 End 6779------------------------------------------------------------------ 6780 6781/0*\D/BZ 6782------------------------------------------------------------------ 6783 Bra 6784 0*+ 6785 \D 6786 Ket 6787 End 6788------------------------------------------------------------------ 6789 6790/a*\s/BZ 6791------------------------------------------------------------------ 6792 Bra 6793 a*+ 6794 \s 6795 Ket 6796 End 6797------------------------------------------------------------------ 6798 6799/a*\S/BZ 6800------------------------------------------------------------------ 6801 Bra 6802 a* 6803 \S 6804 Ket 6805 End 6806------------------------------------------------------------------ 6807 6808/ *\s/BZ 6809------------------------------------------------------------------ 6810 Bra 6811 * 6812 \s 6813 Ket 6814 End 6815------------------------------------------------------------------ 6816 6817/ *\S/BZ 6818------------------------------------------------------------------ 6819 Bra 6820 *+ 6821 \S 6822 Ket 6823 End 6824------------------------------------------------------------------ 6825 6826/a*\w/BZ 6827------------------------------------------------------------------ 6828 Bra 6829 a* 6830 \w 6831 Ket 6832 End 6833------------------------------------------------------------------ 6834 6835/a*\W/BZ 6836------------------------------------------------------------------ 6837 Bra 6838 a*+ 6839 \W 6840 Ket 6841 End 6842------------------------------------------------------------------ 6843 6844/=*\w/BZ 6845------------------------------------------------------------------ 6846 Bra 6847 =*+ 6848 \w 6849 Ket 6850 End 6851------------------------------------------------------------------ 6852 6853/=*\W/BZ 6854------------------------------------------------------------------ 6855 Bra 6856 =* 6857 \W 6858 Ket 6859 End 6860------------------------------------------------------------------ 6861 6862/\d*a/BZ 6863------------------------------------------------------------------ 6864 Bra 6865 \d*+ 6866 a 6867 Ket 6868 End 6869------------------------------------------------------------------ 6870 6871/\d*2/BZ 6872------------------------------------------------------------------ 6873 Bra 6874 \d* 6875 2 6876 Ket 6877 End 6878------------------------------------------------------------------ 6879 6880/\d*\d/BZ 6881------------------------------------------------------------------ 6882 Bra 6883 \d* 6884 \d 6885 Ket 6886 End 6887------------------------------------------------------------------ 6888 6889/\d*\D/BZ 6890------------------------------------------------------------------ 6891 Bra 6892 \d*+ 6893 \D 6894 Ket 6895 End 6896------------------------------------------------------------------ 6897 6898/\d*\s/BZ 6899------------------------------------------------------------------ 6900 Bra 6901 \d*+ 6902 \s 6903 Ket 6904 End 6905------------------------------------------------------------------ 6906 6907/\d*\S/BZ 6908------------------------------------------------------------------ 6909 Bra 6910 \d* 6911 \S 6912 Ket 6913 End 6914------------------------------------------------------------------ 6915 6916/\d*\w/BZ 6917------------------------------------------------------------------ 6918 Bra 6919 \d* 6920 \w 6921 Ket 6922 End 6923------------------------------------------------------------------ 6924 6925/\d*\W/BZ 6926------------------------------------------------------------------ 6927 Bra 6928 \d*+ 6929 \W 6930 Ket 6931 End 6932------------------------------------------------------------------ 6933 6934/\D*a/BZ 6935------------------------------------------------------------------ 6936 Bra 6937 \D* 6938 a 6939 Ket 6940 End 6941------------------------------------------------------------------ 6942 6943/\D*2/BZ 6944------------------------------------------------------------------ 6945 Bra 6946 \D*+ 6947 2 6948 Ket 6949 End 6950------------------------------------------------------------------ 6951 6952/\D*\d/BZ 6953------------------------------------------------------------------ 6954 Bra 6955 \D*+ 6956 \d 6957 Ket 6958 End 6959------------------------------------------------------------------ 6960 6961/\D*\D/BZ 6962------------------------------------------------------------------ 6963 Bra 6964 \D* 6965 \D 6966 Ket 6967 End 6968------------------------------------------------------------------ 6969 6970/\D*\s/BZ 6971------------------------------------------------------------------ 6972 Bra 6973 \D* 6974 \s 6975 Ket 6976 End 6977------------------------------------------------------------------ 6978 6979/\D*\S/BZ 6980------------------------------------------------------------------ 6981 Bra 6982 \D* 6983 \S 6984 Ket 6985 End 6986------------------------------------------------------------------ 6987 6988/\D*\w/BZ 6989------------------------------------------------------------------ 6990 Bra 6991 \D* 6992 \w 6993 Ket 6994 End 6995------------------------------------------------------------------ 6996 6997/\D*\W/BZ 6998------------------------------------------------------------------ 6999 Bra 7000 \D* 7001 \W 7002 Ket 7003 End 7004------------------------------------------------------------------ 7005 7006/\s*a/BZ 7007------------------------------------------------------------------ 7008 Bra 7009 \s*+ 7010 a 7011 Ket 7012 End 7013------------------------------------------------------------------ 7014 7015/\s*2/BZ 7016------------------------------------------------------------------ 7017 Bra 7018 \s*+ 7019 2 7020 Ket 7021 End 7022------------------------------------------------------------------ 7023 7024/\s*\d/BZ 7025------------------------------------------------------------------ 7026 Bra 7027 \s*+ 7028 \d 7029 Ket 7030 End 7031------------------------------------------------------------------ 7032 7033/\s*\D/BZ 7034------------------------------------------------------------------ 7035 Bra 7036 \s* 7037 \D 7038 Ket 7039 End 7040------------------------------------------------------------------ 7041 7042/\s*\s/BZ 7043------------------------------------------------------------------ 7044 Bra 7045 \s* 7046 \s 7047 Ket 7048 End 7049------------------------------------------------------------------ 7050 7051/\s*\S/BZ 7052------------------------------------------------------------------ 7053 Bra 7054 \s*+ 7055 \S 7056 Ket 7057 End 7058------------------------------------------------------------------ 7059 7060/\s*\w/BZ 7061------------------------------------------------------------------ 7062 Bra 7063 \s*+ 7064 \w 7065 Ket 7066 End 7067------------------------------------------------------------------ 7068 7069/\s*\W/BZ 7070------------------------------------------------------------------ 7071 Bra 7072 \s* 7073 \W 7074 Ket 7075 End 7076------------------------------------------------------------------ 7077 7078/\S*a/BZ 7079------------------------------------------------------------------ 7080 Bra 7081 \S* 7082 a 7083 Ket 7084 End 7085------------------------------------------------------------------ 7086 7087/\S*2/BZ 7088------------------------------------------------------------------ 7089 Bra 7090 \S* 7091 2 7092 Ket 7093 End 7094------------------------------------------------------------------ 7095 7096/\S*\d/BZ 7097------------------------------------------------------------------ 7098 Bra 7099 \S* 7100 \d 7101 Ket 7102 End 7103------------------------------------------------------------------ 7104 7105/\S*\D/BZ 7106------------------------------------------------------------------ 7107 Bra 7108 \S* 7109 \D 7110 Ket 7111 End 7112------------------------------------------------------------------ 7113 7114/\S*\s/BZ 7115------------------------------------------------------------------ 7116 Bra 7117 \S*+ 7118 \s 7119 Ket 7120 End 7121------------------------------------------------------------------ 7122 7123/\S*\S/BZ 7124------------------------------------------------------------------ 7125 Bra 7126 \S* 7127 \S 7128 Ket 7129 End 7130------------------------------------------------------------------ 7131 7132/\S*\w/BZ 7133------------------------------------------------------------------ 7134 Bra 7135 \S* 7136 \w 7137 Ket 7138 End 7139------------------------------------------------------------------ 7140 7141/\S*\W/BZ 7142------------------------------------------------------------------ 7143 Bra 7144 \S* 7145 \W 7146 Ket 7147 End 7148------------------------------------------------------------------ 7149 7150/\w*a/BZ 7151------------------------------------------------------------------ 7152 Bra 7153 \w* 7154 a 7155 Ket 7156 End 7157------------------------------------------------------------------ 7158 7159/\w*2/BZ 7160------------------------------------------------------------------ 7161 Bra 7162 \w* 7163 2 7164 Ket 7165 End 7166------------------------------------------------------------------ 7167 7168/\w*\d/BZ 7169------------------------------------------------------------------ 7170 Bra 7171 \w* 7172 \d 7173 Ket 7174 End 7175------------------------------------------------------------------ 7176 7177/\w*\D/BZ 7178------------------------------------------------------------------ 7179 Bra 7180 \w* 7181 \D 7182 Ket 7183 End 7184------------------------------------------------------------------ 7185 7186/\w*\s/BZ 7187------------------------------------------------------------------ 7188 Bra 7189 \w*+ 7190 \s 7191 Ket 7192 End 7193------------------------------------------------------------------ 7194 7195/\w*\S/BZ 7196------------------------------------------------------------------ 7197 Bra 7198 \w* 7199 \S 7200 Ket 7201 End 7202------------------------------------------------------------------ 7203 7204/\w*\w/BZ 7205------------------------------------------------------------------ 7206 Bra 7207 \w* 7208 \w 7209 Ket 7210 End 7211------------------------------------------------------------------ 7212 7213/\w*\W/BZ 7214------------------------------------------------------------------ 7215 Bra 7216 \w*+ 7217 \W 7218 Ket 7219 End 7220------------------------------------------------------------------ 7221 7222/\W*a/BZ 7223------------------------------------------------------------------ 7224 Bra 7225 \W*+ 7226 a 7227 Ket 7228 End 7229------------------------------------------------------------------ 7230 7231/\W*2/BZ 7232------------------------------------------------------------------ 7233 Bra 7234 \W*+ 7235 2 7236 Ket 7237 End 7238------------------------------------------------------------------ 7239 7240/\W*\d/BZ 7241------------------------------------------------------------------ 7242 Bra 7243 \W*+ 7244 \d 7245 Ket 7246 End 7247------------------------------------------------------------------ 7248 7249/\W*\D/BZ 7250------------------------------------------------------------------ 7251 Bra 7252 \W* 7253 \D 7254 Ket 7255 End 7256------------------------------------------------------------------ 7257 7258/\W*\s/BZ 7259------------------------------------------------------------------ 7260 Bra 7261 \W* 7262 \s 7263 Ket 7264 End 7265------------------------------------------------------------------ 7266 7267/\W*\S/BZ 7268------------------------------------------------------------------ 7269 Bra 7270 \W* 7271 \S 7272 Ket 7273 End 7274------------------------------------------------------------------ 7275 7276/\W*\w/BZ 7277------------------------------------------------------------------ 7278 Bra 7279 \W*+ 7280 \w 7281 Ket 7282 End 7283------------------------------------------------------------------ 7284 7285/\W*\W/BZ 7286------------------------------------------------------------------ 7287 Bra 7288 \W* 7289 \W 7290 Ket 7291 End 7292------------------------------------------------------------------ 7293 7294/[^a]+a/BZ 7295------------------------------------------------------------------ 7296 Bra 7297 [^a]++ 7298 a 7299 Ket 7300 End 7301------------------------------------------------------------------ 7302 7303/[^a]+a/BZi 7304------------------------------------------------------------------ 7305 Bra 7306 [^A]++ 7307 NC a 7308 Ket 7309 End 7310------------------------------------------------------------------ 7311 7312/[^a]+A/BZi 7313------------------------------------------------------------------ 7314 Bra 7315 [^A]++ 7316 NC A 7317 Ket 7318 End 7319------------------------------------------------------------------ 7320 7321/[^a]+b/BZ 7322------------------------------------------------------------------ 7323 Bra 7324 [^a]+ 7325 b 7326 Ket 7327 End 7328------------------------------------------------------------------ 7329 7330/[^a]+\d/BZ 7331------------------------------------------------------------------ 7332 Bra 7333 [^a]+ 7334 \d 7335 Ket 7336 End 7337------------------------------------------------------------------ 7338 7339/a*[^a]/BZ 7340------------------------------------------------------------------ 7341 Bra 7342 a* 7343 [^a] 7344 Ket 7345 End 7346------------------------------------------------------------------ 7347 7348/(?P<abc>x)(?P<xyz>y)/I 7349Capturing subpattern count = 2 7350Named capturing subpatterns: 7351 abc 1 7352 xyz 2 7353No options 7354First char = 'x' 7355Need char = 'y' 7356 xy\Cabc\Cxyz 7357 0: xy 7358 1: x 7359 2: y 7360 C x (1) abc 7361 C y (1) xyz 7362 7363/(?<abc>x)(?'xyz'y)/I 7364Capturing subpattern count = 2 7365Named capturing subpatterns: 7366 abc 1 7367 xyz 2 7368No options 7369First char = 'x' 7370Need char = 'y' 7371 xy\Cabc\Cxyz 7372 0: xy 7373 1: x 7374 2: y 7375 C x (1) abc 7376 C y (1) xyz 7377 7378/(?<abc'x)(?'xyz'y)/I 7379Failed: syntax error in subpattern name (missing terminator) at offset 6 7380 7381/(?<abc>x)(?'xyz>y)/I 7382Failed: syntax error in subpattern name (missing terminator) at offset 15 7383 7384/(?P'abc'x)(?P<xyz>y)/I 7385Failed: unrecognized character after (?P at offset 3 7386 7387/^(?:(?(ZZ)a|b)(?<ZZ>X))+/ 7388 bXaX 7389 0: bXaX 7390 1: X 7391 bXbX 7392 0: bX 7393 1: X 7394 ** Failers 7395No match 7396 aXaX 7397No match 7398 aXbX 7399No match 7400 7401/^(?P>abc)(?<abcd>xxx)/ 7402Failed: reference to non-existent subpattern at offset 8 7403 7404/^(?P>abc)(?<abc>x|y)/ 7405 xx 7406 0: xx 7407 1: x 7408 xy 7409 0: xy 7410 1: y 7411 yy 7412 0: yy 7413 1: y 7414 yx 7415 0: yx 7416 1: x 7417 7418/^(?P>abc)(?P<abc>x|y)/ 7419 xx 7420 0: xx 7421 1: x 7422 xy 7423 0: xy 7424 1: y 7425 yy 7426 0: yy 7427 1: y 7428 yx 7429 0: yx 7430 1: x 7431 7432/^((?(abc)a|b)(?<abc>x|y))+/ 7433 bxay 7434 0: bxay 7435 1: ay 7436 2: y 7437 bxby 7438 0: bx 7439 1: bx 7440 2: x 7441 ** Failers 7442No match 7443 axby 7444No match 7445 7446/^(((?P=abc)|X)(?<abc>x|y))+/ 7447 XxXxxx 7448 0: XxXxxx 7449 1: xx 7450 2: x 7451 3: x 7452 XxXyyx 7453 0: XxXyyx 7454 1: yx 7455 2: y 7456 3: x 7457 XxXyxx 7458 0: XxXy 7459 1: Xy 7460 2: X 7461 3: y 7462 ** Failers 7463No match 7464 x 7465No match 7466 7467/^(?1)(abc)/ 7468 abcabc 7469 0: abcabc 7470 1: abc 7471 7472/^(?:(?:\1|X)(a|b))+/ 7473 Xaaa 7474 0: Xaaa 7475 1: a 7476 Xaba 7477 0: Xa 7478 1: a 7479 7480/^[\E\Qa\E-\Qz\E]+/BZ 7481------------------------------------------------------------------ 7482 Bra 7483 ^ 7484 [a-z]+ 7485 Ket 7486 End 7487------------------------------------------------------------------ 7488 7489/^[a\Q]bc\E]/BZ 7490------------------------------------------------------------------ 7491 Bra 7492 ^ 7493 [\]a-c] 7494 Ket 7495 End 7496------------------------------------------------------------------ 7497 7498/^[a-\Q\E]/BZ 7499------------------------------------------------------------------ 7500 Bra 7501 ^ 7502 [\-a] 7503 Ket 7504 End 7505------------------------------------------------------------------ 7506 7507/^(?P>abc)[()](?<abc>)/BZ 7508------------------------------------------------------------------ 7509 Bra 7510 ^ 7511 Once 7512 Recurse 7513 Ket 7514 [()] 7515 CBra 1 7516 Ket 7517 Ket 7518 End 7519------------------------------------------------------------------ 7520 7521/^((?(abc)y)[()](?P<abc>x))+/BZ 7522------------------------------------------------------------------ 7523 Bra 7524 ^ 7525 CBra 1 7526 Cond 7527 2 Cond nref 7528 y 7529 Ket 7530 [()] 7531 CBra 2 7532 x 7533 Ket 7534 KetRmax 7535 Ket 7536 End 7537------------------------------------------------------------------ 7538 (xy)x 7539 0: (xy)x 7540 1: y)x 7541 2: x 7542 7543/^(?P>abc)\Q()\E(?<abc>)/BZ 7544------------------------------------------------------------------ 7545 Bra 7546 ^ 7547 Once 7548 Recurse 7549 Ket 7550 () 7551 CBra 1 7552 Ket 7553 Ket 7554 End 7555------------------------------------------------------------------ 7556 7557/^(?P>abc)[a\Q(]\E(](?<abc>)/BZ 7558------------------------------------------------------------------ 7559 Bra 7560 ^ 7561 Once 7562 Recurse 7563 Ket 7564 [(\]a] 7565 CBra 1 7566 Ket 7567 Ket 7568 End 7569------------------------------------------------------------------ 7570 7571/^(?P>abc) # this is (a comment) 7572 (?<abc>)/BZx 7573------------------------------------------------------------------ 7574 Bra 7575 ^ 7576 Once 7577 Recurse 7578 Ket 7579 CBra 1 7580 Ket 7581 Ket 7582 End 7583------------------------------------------------------------------ 7584 7585/^\W*(?:(?<one>(?<two>.)\W*(?&one)\W*\k<two>|)|(?<three>(?<four>.)\W*(?&three)\W*\k'four'|\W*.\W*))\W*$/Ii 7586Capturing subpattern count = 4 7587Max back reference = 4 7588Named capturing subpatterns: 7589 four 4 7590 one 1 7591 three 3 7592 two 2 7593Options: anchored caseless 7594No first char 7595No need char 7596 1221 7597 0: 1221 7598 1: 1221 7599 2: 1 7600 Satan, oscillate my metallic sonatas! 7601 0: Satan, oscillate my metallic sonatas! 7602 1: <unset> 7603 2: <unset> 7604 3: Satan, oscillate my metallic sonatas 7605 4: S 7606 A man, a plan, a canal: Panama! 7607 0: A man, a plan, a canal: Panama! 7608 1: <unset> 7609 2: <unset> 7610 3: A man, a plan, a canal: Panama 7611 4: A 7612 Able was I ere I saw Elba. 7613 0: Able was I ere I saw Elba. 7614 1: <unset> 7615 2: <unset> 7616 3: Able was I ere I saw Elba 7617 4: A 7618 *** Failers 7619No match 7620 The quick brown fox 7621No match 7622 7623/(?=(\w+))\1:/I 7624Capturing subpattern count = 1 7625Max back reference = 1 7626No options 7627No first char 7628Need char = ':' 7629 abcd: 7630 0: abcd: 7631 1: abcd 7632 7633/(?=(?'abc'\w+))\k<abc>:/I 7634Capturing subpattern count = 1 7635Max back reference = 1 7636Named capturing subpatterns: 7637 abc 1 7638No options 7639No first char 7640Need char = ':' 7641 abcd: 7642 0: abcd: 7643 1: abcd 7644 7645/(?'abc'a|b)(?<abc>d|e)\k<abc>{2}/J 7646 adaa 7647 0: adaa 7648 1: a 7649 2: d 7650 ** Failers 7651No match 7652 addd 7653No match 7654 adbb 7655No match 7656 7657/(?'abc'a|b)(?<abc>d|e)(?&abc){2}/J 7658 bdaa 7659 0: bdaa 7660 1: b 7661 2: d 7662 bdab 7663 0: bdab 7664 1: b 7665 2: d 7666 ** Failers 7667No match 7668 bddd 7669No match 7670 7671/(?(<bc))/ 7672Failed: malformed number or name after (?( at offset 6 7673 7674/(?(''))/ 7675Failed: assertion expected after (?( at offset 4 7676 7677/(?('R')stuff)/ 7678Failed: reference to non-existent subpattern at offset 7 7679 7680/((abc (?(R) (?(R1)1) (?(R2)2) X | (?1) (?2) (?R) ))) /x 7681 abcabc1Xabc2XabcXabcabc 7682 0: abcabc1Xabc2XabcX 7683 1: abcabc1Xabc2XabcX 7684 2: abcabc1Xabc2XabcX 7685 7686/(?<A> (?'B' abc (?(R) (?(R&A)1) (?(R&B)2) X | (?1) (?2) (?R) ))) /x 7687 abcabc1Xabc2XabcXabcabc 7688 0: abcabc1Xabc2XabcX 7689 1: abcabc1Xabc2XabcX 7690 2: abcabc1Xabc2XabcX 7691 7692/(?<A> (?'B' abc (?(R) (?(R&1)1) (?(R&B)2) X | (?1) (?2) (?R) ))) /x 7693Failed: reference to non-existent subpattern at offset 29 7694 7695/(?<1> (?'B' abc (?(R) (?(R&1)1) (?(R&B)2) X | (?1) (?2) (?R) ))) /x 7696 abcabc1Xabc2XabcXabcabc 7697 0: abcabc1Xabc2XabcX 7698 1: abcabc1Xabc2XabcX 7699 2: abcabc1Xabc2XabcX 7700 7701/^(?(DEFINE) abc | xyz ) /x 7702Failed: DEFINE group contains more than one branch at offset 22 7703 7704/(?(DEFINE) abc) xyz/xI 7705Capturing subpattern count = 0 7706Options: extended 7707First char = 'x' 7708Need char = 'z' 7709 7710/(?(DEFINE) abc){3} xyz/x 7711Failed: repeating a DEFINE group is not allowed at offset 17 7712 7713/(a|)*\d/ 7714 \O0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7715No match 7716 \O0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 7717Matched, but too many substrings 7718 7719/^a.b/<lf> 7720 a\rb 7721 0: a\x0db 7722 a\nb\<cr> 7723 0: a\x0ab 7724 a\x85b\<anycrlf> 7725 0: a\x85b 7726 ** Failers 7727No match 7728 a\nb 7729No match 7730 a\nb\<any> 7731No match 7732 a\rb\<cr> 7733No match 7734 a\rb\<any> 7735No match 7736 a\x85b\<any> 7737No match 7738 a\rb\<anycrlf> 7739No match 7740 7741/^abc./mgx<any> 7742 abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x85abc7 JUNK 7743 0: abc1 7744 0: abc2 7745 0: abc3 7746 0: abc4 7747 0: abc5 7748 0: abc6 7749 0: abc7 7750 7751/abc.$/mgx<any> 7752 abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc7 abc9 7753 0: abc1 7754 0: abc2 7755 0: abc3 7756 0: abc4 7757 0: abc5 7758 0: abc6 7759 0: abc9 7760 7761/a/<cr><any> 7762 7763/a/<any><crlf> 7764Failed: inconsistent NEWLINE options at offset 0 7765 7766/^a\Rb/<bsr_unicode> 7767 a\nb 7768 0: a\x0ab 7769 a\rb 7770 0: a\x0db 7771 a\r\nb 7772 0: a\x0d\x0ab 7773 a\x0bb 7774 0: a\x0bb 7775 a\x0cb 7776 0: a\x0cb 7777 a\x85b 7778 0: a\x85b 7779 ** Failers 7780No match 7781 a\n\rb 7782No match 7783 7784/^a\R*b/<bsr_unicode> 7785 ab 7786 0: ab 7787 a\nb 7788 0: a\x0ab 7789 a\rb 7790 0: a\x0db 7791 a\r\nb 7792 0: a\x0d\x0ab 7793 a\x0bb 7794 0: a\x0bb 7795 a\x0cb 7796 0: a\x0cb 7797 a\x85b 7798 0: a\x85b 7799 a\n\rb 7800 0: a\x0a\x0db 7801 a\n\r\x85\x0cb 7802 0: a\x0a\x0d\x85\x0cb 7803 7804/^a\R+b/<bsr_unicode> 7805 a\nb 7806 0: a\x0ab 7807 a\rb 7808 0: a\x0db 7809 a\r\nb 7810 0: a\x0d\x0ab 7811 a\x0bb 7812 0: a\x0bb 7813 a\x0cb 7814 0: a\x0cb 7815 a\x85b 7816 0: a\x85b 7817 a\n\rb 7818 0: a\x0a\x0db 7819 a\n\r\x85\x0cb 7820 0: a\x0a\x0d\x85\x0cb 7821 ** Failers 7822No match 7823 ab 7824No match 7825 7826/^a\R{1,3}b/<bsr_unicode> 7827 a\nb 7828 0: a\x0ab 7829 a\n\rb 7830 0: a\x0a\x0db 7831 a\n\r\x85b 7832 0: a\x0a\x0d\x85b 7833 a\r\n\r\nb 7834 0: a\x0d\x0a\x0d\x0ab 7835 a\r\n\r\n\r\nb 7836 0: a\x0d\x0a\x0d\x0a\x0d\x0ab 7837 a\n\r\n\rb 7838 0: a\x0a\x0d\x0a\x0db 7839 a\n\n\r\nb 7840 0: a\x0a\x0a\x0d\x0ab 7841 ** Failers 7842No match 7843 a\n\n\n\rb 7844No match 7845 a\r 7846No match 7847 7848/^a[\R]b/<bsr_unicode> 7849 aRb 7850 0: aRb 7851 ** Failers 7852No match 7853 a\nb 7854No match 7855 7856/(?&abc)X(?<abc>P)/I 7857Capturing subpattern count = 1 7858Named capturing subpatterns: 7859 abc 1 7860No options 7861No first char 7862Need char = 'P' 7863 abcPXP123 7864 0: PXP 7865 1: P 7866 7867/(?1)X(?<abc>P)/I 7868Capturing subpattern count = 1 7869Named capturing subpatterns: 7870 abc 1 7871No options 7872No first char 7873Need char = 'P' 7874 abcPXP123 7875 0: PXP 7876 1: P 7877 7878/(?:a(?&abc)b)*(?<abc>x)/ 7879 123axbaxbaxbx456 7880 0: axbaxbaxbx 7881 1: x 7882 123axbaxbaxb456 7883 0: x 7884 1: x 7885 7886/(?:a(?&abc)b){1,5}(?<abc>x)/ 7887 123axbaxbaxbx456 7888 0: axbaxbaxbx 7889 1: x 7890 7891/(?:a(?&abc)b){2,5}(?<abc>x)/ 7892 123axbaxbaxbx456 7893 0: axbaxbaxbx 7894 1: x 7895 7896/(?:a(?&abc)b){2,}(?<abc>x)/ 7897 123axbaxbaxbx456 7898 0: axbaxbaxbx 7899 1: x 7900 7901/(abc)(?i:(?1))/ 7902 defabcabcxyz 7903 0: abcabc 7904 1: abc 7905 DEFabcABCXYZ 7906No match 7907 7908/(abc)(?:(?i)(?1))/ 7909 defabcabcxyz 7910 0: abcabc 7911 1: abc 7912 DEFabcABCXYZ 7913No match 7914 7915/^(a)\g-2/ 7916Failed: reference to non-existent subpattern at offset 7 7917 7918/^(a)\g/ 7919Failed: a numbered reference must not be zero at offset 5 7920 7921/^(a)\g{0}/ 7922Failed: a numbered reference must not be zero at offset 8 7923 7924/^(a)\g{3/ 7925Failed: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number at offset 8 7926 7927/^(a)\g{4a}/ 7928Failed: reference to non-existent subpattern at offset 9 7929 7930/^a.b/<lf> 7931 a\rb 7932 0: a\x0db 7933 *** Failers 7934No match 7935 a\nb 7936No match 7937 7938/.+foo/ 7939 afoo 7940 0: afoo 7941 ** Failers 7942No match 7943 \r\nfoo 7944No match 7945 \nfoo 7946No match 7947 7948/.+foo/<crlf> 7949 afoo 7950 0: afoo 7951 \nfoo 7952 0: \x0afoo 7953 ** Failers 7954No match 7955 \r\nfoo 7956No match 7957 7958/.+foo/<any> 7959 afoo 7960 0: afoo 7961 ** Failers 7962No match 7963 \nfoo 7964No match 7965 \r\nfoo 7966No match 7967 7968/.+foo/s 7969 afoo 7970 0: afoo 7971 \r\nfoo 7972 0: \x0d\x0afoo 7973 \nfoo 7974 0: \x0afoo 7975 7976/^$/mg<any> 7977 abc\r\rxyz 7978 0: 7979 abc\n\rxyz 7980 0: 7981 ** Failers 7982No match 7983 abc\r\nxyz 7984No match 7985 7986/(?m)^$/<any>g+ 7987 abc\r\n\r\n 7988 0: 7989 0+ \x0d\x0a 7990 7991/(?m)^$|^\r\n/<any>g+ 7992 abc\r\n\r\n 7993 0: 7994 0+ \x0d\x0a 7995 0: \x0d\x0a 7996 0+ 7997 7998/(?m)$/<any>g+ 7999 abc\r\n\r\n 8000 0: 8001 0+ \x0d\x0a\x0d\x0a 8002 0: 8003 0+ \x0d\x0a 8004 0: 8005 0+ 8006 8007/abc.$/mgx<anycrlf> 8008 abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc9 8009 0: abc1 8010 0: abc4 8011 0: abc5 8012 0: abc9 8013 8014/^X/m 8015 XABC 8016 0: X 8017 ** Failers 8018No match 8019 XABC\B 8020No match 8021 8022/(ab|c)(?-1)/BZ 8023------------------------------------------------------------------ 8024 Bra 8025 CBra 1 8026 ab 8027 Alt 8028 c 8029 Ket 8030 Once 8031 Recurse 8032 Ket 8033 Ket 8034 End 8035------------------------------------------------------------------ 8036 abc 8037 0: abc 8038 1: ab 8039 8040/xy(?+1)(abc)/BZ 8041------------------------------------------------------------------ 8042 Bra 8043 xy 8044 Once 8045 Recurse 8046 Ket 8047 CBra 1 8048 abc 8049 Ket 8050 Ket 8051 End 8052------------------------------------------------------------------ 8053 xyabcabc 8054 0: xyabcabc 8055 1: abc 8056 ** Failers 8057No match 8058 xyabc 8059No match 8060 8061/x(?-0)y/ 8062Failed: a numbered reference must not be zero at offset 5 8063 8064/x(?-1)y/ 8065Failed: reference to non-existent subpattern at offset 5 8066 8067/x(?+0)y/ 8068Failed: a numbered reference must not be zero at offset 5 8069 8070/x(?+1)y/ 8071Failed: reference to non-existent subpattern at offset 5 8072 8073/^(abc)?(?(-1)X|Y)/BZ 8074------------------------------------------------------------------ 8075 Bra 8076 ^ 8077 Brazero 8078 CBra 1 8079 abc 8080 Ket 8081 Cond 8082 1 Cond ref 8083 X 8084 Alt 8085 Y 8086 Ket 8087 Ket 8088 End 8089------------------------------------------------------------------ 8090 abcX 8091 0: abcX 8092 1: abc 8093 Y 8094 0: Y 8095 ** Failers 8096No match 8097 abcY 8098No match 8099 8100/^((?(+1)X|Y)(abc))+/BZ 8101------------------------------------------------------------------ 8102 Bra 8103 ^ 8104 CBra 1 8105 Cond 8106 2 Cond ref 8107 X 8108 Alt 8109 Y 8110 Ket 8111 CBra 2 8112 abc 8113 Ket 8114 KetRmax 8115 Ket 8116 End 8117------------------------------------------------------------------ 8118 YabcXabc 8119 0: YabcXabc 8120 1: Xabc 8121 2: abc 8122 YabcXabcXabc 8123 0: YabcXabcXabc 8124 1: Xabc 8125 2: abc 8126 ** Failers 8127No match 8128 XabcXabc 8129No match 8130 8131/(?(-1)a)/BZ 8132Failed: reference to non-existent subpattern at offset 6 8133 8134/((?(-1)a))/BZ 8135------------------------------------------------------------------ 8136 Bra 8137 CBra 1 8138 Cond 8139 1 Cond ref 8140 a 8141 Ket 8142 Ket 8143 Ket 8144 End 8145------------------------------------------------------------------ 8146 8147/((?(-2)a))/BZ 8148Failed: reference to non-existent subpattern at offset 7 8149 8150/^(?(+1)X|Y)(.)/BZ 8151------------------------------------------------------------------ 8152 Bra 8153 ^ 8154 Cond 8155 1 Cond ref 8156 X 8157 Alt 8158 Y 8159 Ket 8160 CBra 1 8161 Any 8162 Ket 8163 Ket 8164 End 8165------------------------------------------------------------------ 8166 Y! 8167 0: Y! 8168 1: ! 8169 8170/(?<A>tom|bon)-\k{A}/ 8171 tom-tom 8172 0: tom-tom 8173 1: tom 8174 bon-bon 8175 0: bon-bon 8176 1: bon 8177 ** Failers 8178No match 8179 tom-bon 8180No match 8181 8182/\g{A/ 8183Failed: syntax error in subpattern name (missing terminator) at offset 4 8184 8185/(?|(abc)|(xyz))/BZ 8186------------------------------------------------------------------ 8187 Bra 8188 Bra 8189 CBra 1 8190 abc 8191 Ket 8192 Alt 8193 CBra 1 8194 xyz 8195 Ket 8196 Ket 8197 Ket 8198 End 8199------------------------------------------------------------------ 8200 >abc< 8201 0: abc 8202 1: abc 8203 >xyz< 8204 0: xyz 8205 1: xyz 8206 8207/(x)(?|(abc)|(xyz))(x)/BZ 8208------------------------------------------------------------------ 8209 Bra 8210 CBra 1 8211 x 8212 Ket 8213 Bra 8214 CBra 2 8215 abc 8216 Ket 8217 Alt 8218 CBra 2 8219 xyz 8220 Ket 8221 Ket 8222 CBra 3 8223 x 8224 Ket 8225 Ket 8226 End 8227------------------------------------------------------------------ 8228 xabcx 8229 0: xabcx 8230 1: x 8231 2: abc 8232 3: x 8233 xxyzx 8234 0: xxyzx 8235 1: x 8236 2: xyz 8237 3: x 8238 8239/(x)(?|(abc)(pqr)|(xyz))(x)/BZ 8240------------------------------------------------------------------ 8241 Bra 8242 CBra 1 8243 x 8244 Ket 8245 Bra 8246 CBra 2 8247 abc 8248 Ket 8249 CBra 3 8250 pqr 8251 Ket 8252 Alt 8253 CBra 2 8254 xyz 8255 Ket 8256 Ket 8257 CBra 4 8258 x 8259 Ket 8260 Ket 8261 End 8262------------------------------------------------------------------ 8263 xabcpqrx 8264 0: xabcpqrx 8265 1: x 8266 2: abc 8267 3: pqr 8268 4: x 8269 xxyzx 8270 0: xxyzx 8271 1: x 8272 2: xyz 8273 3: <unset> 8274 4: x 8275 8276/[\h]/BZ 8277------------------------------------------------------------------ 8278 Bra 8279 [\x09 \xa0] 8280 Ket 8281 End 8282------------------------------------------------------------------ 8283 >\x09< 8284 0: \x09 8285 8286/[\h]+/BZ 8287------------------------------------------------------------------ 8288 Bra 8289 [\x09 \xa0]+ 8290 Ket 8291 End 8292------------------------------------------------------------------ 8293 >\x09\x20\xa0< 8294 0: \x09 \xa0 8295 8296/[\v]/BZ 8297------------------------------------------------------------------ 8298 Bra 8299 [\x0a-\x0d\x85] 8300 Ket 8301 End 8302------------------------------------------------------------------ 8303 8304/[\H]/BZ 8305------------------------------------------------------------------ 8306 Bra 8307 [\x00-\x08\x0a-\x1f!-\x9f\xa1-\xff] 8308 Ket 8309 End 8310------------------------------------------------------------------ 8311 8312/[^\h]/BZ 8313------------------------------------------------------------------ 8314 Bra 8315 [\x00-\x08\x0a-\x1f!-\x9f\xa1-\xff] (neg) 8316 Ket 8317 End 8318------------------------------------------------------------------ 8319 8320/[\V]/BZ 8321------------------------------------------------------------------ 8322 Bra 8323 [\x00-\x09\x0e-\x84\x86-\xff] 8324 Ket 8325 End 8326------------------------------------------------------------------ 8327 8328/[\x0a\V]/BZ 8329------------------------------------------------------------------ 8330 Bra 8331 [\x00-\x0a\x0e-\x84\x86-\xff] 8332 Ket 8333 End 8334------------------------------------------------------------------ 8335 8336/\H++X/BZ 8337------------------------------------------------------------------ 8338 Bra 8339 \H++ 8340 X 8341 Ket 8342 End 8343------------------------------------------------------------------ 8344 ** Failers 8345No match 8346 XXXX 8347No match 8348 8349/\H+\hY/BZ 8350------------------------------------------------------------------ 8351 Bra 8352 \H++ 8353 \h 8354 Y 8355 Ket 8356 End 8357------------------------------------------------------------------ 8358 XXXX Y 8359 0: XXXX Y 8360 8361/\H+ Y/BZ 8362------------------------------------------------------------------ 8363 Bra 8364 \H++ 8365 Y 8366 Ket 8367 End 8368------------------------------------------------------------------ 8369 8370/\h+A/BZ 8371------------------------------------------------------------------ 8372 Bra 8373 \h++ 8374 A 8375 Ket 8376 End 8377------------------------------------------------------------------ 8378 8379/\v*B/BZ 8380------------------------------------------------------------------ 8381 Bra 8382 \v*+ 8383 B 8384 Ket 8385 End 8386------------------------------------------------------------------ 8387 8388/\V+\x0a/BZ 8389------------------------------------------------------------------ 8390 Bra 8391 \V++ 8392 \x0a 8393 Ket 8394 End 8395------------------------------------------------------------------ 8396 8397/A+\h/BZ 8398------------------------------------------------------------------ 8399 Bra 8400 A++ 8401 \h 8402 Ket 8403 End 8404------------------------------------------------------------------ 8405 8406/ *\H/BZ 8407------------------------------------------------------------------ 8408 Bra 8409 *+ 8410 \H 8411 Ket 8412 End 8413------------------------------------------------------------------ 8414 8415/A*\v/BZ 8416------------------------------------------------------------------ 8417 Bra 8418 A*+ 8419 \v 8420 Ket 8421 End 8422------------------------------------------------------------------ 8423 8424/\x0b*\V/BZ 8425------------------------------------------------------------------ 8426 Bra 8427 \x0b*+ 8428 \V 8429 Ket 8430 End 8431------------------------------------------------------------------ 8432 8433/\d+\h/BZ 8434------------------------------------------------------------------ 8435 Bra 8436 \d++ 8437 \h 8438 Ket 8439 End 8440------------------------------------------------------------------ 8441 8442/\d*\v/BZ 8443------------------------------------------------------------------ 8444 Bra 8445 \d*+ 8446 \v 8447 Ket 8448 End 8449------------------------------------------------------------------ 8450 8451/S+\h\S+\v/BZ 8452------------------------------------------------------------------ 8453 Bra 8454 S++ 8455 \h 8456 \S++ 8457 \v 8458 Ket 8459 End 8460------------------------------------------------------------------ 8461 8462/\w{3,}\h\w+\v/BZ 8463------------------------------------------------------------------ 8464 Bra 8465 \w{3} 8466 \w*+ 8467 \h 8468 \w++ 8469 \v 8470 Ket 8471 End 8472------------------------------------------------------------------ 8473 8474/\h+\d\h+\w\h+\S\h+\H/BZ 8475------------------------------------------------------------------ 8476 Bra 8477 \h++ 8478 \d 8479 \h++ 8480 \w 8481 \h++ 8482 \S 8483 \h++ 8484 \H 8485 Ket 8486 End 8487------------------------------------------------------------------ 8488 8489/\v+\d\v+\w\v+\S\v+\V/BZ 8490------------------------------------------------------------------ 8491 Bra 8492 \v++ 8493 \d 8494 \v++ 8495 \w 8496 \v+ 8497 \S 8498 \v++ 8499 \V 8500 Ket 8501 End 8502------------------------------------------------------------------ 8503 8504/\H+\h\H+\d/BZ 8505------------------------------------------------------------------ 8506 Bra 8507 \H++ 8508 \h 8509 \H+ 8510 \d 8511 Ket 8512 End 8513------------------------------------------------------------------ 8514 8515/\V+\v\V+\w/BZ 8516------------------------------------------------------------------ 8517 Bra 8518 \V++ 8519 \v 8520 \V+ 8521 \w 8522 Ket 8523 End 8524------------------------------------------------------------------ 8525 8526/\( (?: [^()]* | (?R) )* \)/x 8527(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(00)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0) 8528 0: (0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(00)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0) 8529 8530/[\E]AAA/ 8531Failed: missing terminating ] for character class at offset 7 8532 8533/[\Q\E]AAA/ 8534Failed: missing terminating ] for character class at offset 9 8535 8536/[^\E]AAA/ 8537Failed: missing terminating ] for character class at offset 8 8538 8539/[^\Q\E]AAA/ 8540Failed: missing terminating ] for character class at offset 10 8541 8542/[\E^]AAA/ 8543Failed: missing terminating ] for character class at offset 8 8544 8545/[\Q\E^]AAA/ 8546Failed: missing terminating ] for character class at offset 10 8547 8548/A(*PRUNE)B(*SKIP)C(*THEN)D(*COMMIT)E(*F)F(*FAIL)G(?!)H(*ACCEPT)I/BZ 8549------------------------------------------------------------------ 8550 Bra 8551 A 8552 *PRUNE 8553 B 8554 *SKIP 8555 C 8556 *THEN 8557 D 8558 *COMMIT 8559 E 8560 *FAIL 8561 F 8562 *FAIL 8563 G 8564 *FAIL 8565 H 8566 *ACCEPT 8567 I 8568 Ket 8569 End 8570------------------------------------------------------------------ 8571 8572/^a+(*FAIL)/C 8573 aaaaaa 8574--->aaaaaa 8575 +0 ^ ^ 8576 +1 ^ a+ 8577 +3 ^ ^ (*FAIL) 8578 +3 ^ ^ (*FAIL) 8579 +3 ^ ^ (*FAIL) 8580 +3 ^ ^ (*FAIL) 8581 +3 ^ ^ (*FAIL) 8582 +3 ^^ (*FAIL) 8583No match 8584 8585/a+b?c+(*FAIL)/C 8586 aaabccc 8587--->aaabccc 8588 +0 ^ a+ 8589 +2 ^ ^ b? 8590 +4 ^ ^ c+ 8591 +6 ^ ^ (*FAIL) 8592 +6 ^ ^ (*FAIL) 8593 +6 ^ ^ (*FAIL) 8594 +4 ^ ^ c+ 8595 +2 ^ ^ b? 8596 +4 ^ ^ c+ 8597 +2 ^^ b? 8598 +4 ^^ c+ 8599 +0 ^ a+ 8600 +2 ^ ^ b? 8601 +4 ^ ^ c+ 8602 +6 ^ ^ (*FAIL) 8603 +6 ^ ^ (*FAIL) 8604 +6 ^ ^ (*FAIL) 8605 +4 ^ ^ c+ 8606 +2 ^^ b? 8607 +4 ^^ c+ 8608 +0 ^ a+ 8609 +2 ^^ b? 8610 +4 ^ ^ c+ 8611 +6 ^ ^ (*FAIL) 8612 +6 ^ ^ (*FAIL) 8613 +6 ^ ^ (*FAIL) 8614 +4 ^^ c+ 8615No match 8616 8617/a+b?(*PRUNE)c+(*FAIL)/C 8618 aaabccc 8619--->aaabccc 8620 +0 ^ a+ 8621 +2 ^ ^ b? 8622 +4 ^ ^ (*PRUNE) 8623+12 ^ ^ c+ 8624+14 ^ ^ (*FAIL) 8625+14 ^ ^ (*FAIL) 8626+14 ^ ^ (*FAIL) 8627 +0 ^ a+ 8628 +2 ^ ^ b? 8629 +4 ^ ^ (*PRUNE) 8630+12 ^ ^ c+ 8631+14 ^ ^ (*FAIL) 8632+14 ^ ^ (*FAIL) 8633+14 ^ ^ (*FAIL) 8634 +0 ^ a+ 8635 +2 ^^ b? 8636 +4 ^ ^ (*PRUNE) 8637+12 ^ ^ c+ 8638+14 ^ ^ (*FAIL) 8639+14 ^ ^ (*FAIL) 8640+14 ^ ^ (*FAIL) 8641No match 8642 8643/a+b?(*COMMIT)c+(*FAIL)/C 8644 aaabccc 8645--->aaabccc 8646 +0 ^ a+ 8647 +2 ^ ^ b? 8648 +4 ^ ^ (*COMMIT) 8649+13 ^ ^ c+ 8650+15 ^ ^ (*FAIL) 8651+15 ^ ^ (*FAIL) 8652+15 ^ ^ (*FAIL) 8653No match 8654 8655/a+b?(*SKIP)c+(*FAIL)/C 8656 aaabcccaaabccc 8657--->aaabcccaaabccc 8658 +0 ^ a+ 8659 +2 ^ ^ b? 8660 +4 ^ ^ (*SKIP) 8661+11 ^ ^ c+ 8662+13 ^ ^ (*FAIL) 8663+13 ^ ^ (*FAIL) 8664+13 ^ ^ (*FAIL) 8665 +0 ^ a+ 8666 +2 ^ ^ b? 8667 +4 ^ ^ (*SKIP) 8668+11 ^ ^ c+ 8669+13 ^ ^ (*FAIL) 8670+13 ^ ^ (*FAIL) 8671+13 ^ ^ (*FAIL) 8672No match 8673 8674/a+b?(*THEN)c+(*FAIL)/C 8675 aaabccc 8676--->aaabccc 8677 +0 ^ a+ 8678 +2 ^ ^ b? 8679 +4 ^ ^ (*THEN) 8680+11 ^ ^ c+ 8681+13 ^ ^ (*FAIL) 8682+13 ^ ^ (*FAIL) 8683+13 ^ ^ (*FAIL) 8684 +0 ^ a+ 8685 +2 ^ ^ b? 8686 +4 ^ ^ (*THEN) 8687+11 ^ ^ c+ 8688+13 ^ ^ (*FAIL) 8689+13 ^ ^ (*FAIL) 8690+13 ^ ^ (*FAIL) 8691 +0 ^ a+ 8692 +2 ^^ b? 8693 +4 ^ ^ (*THEN) 8694+11 ^ ^ c+ 8695+13 ^ ^ (*FAIL) 8696+13 ^ ^ (*FAIL) 8697+13 ^ ^ (*FAIL) 8698No match 8699 8700/a(*MARK)b/ 8701Failed: (*MARK) must have an argument at offset 7 8702 8703/(?i:A{1,}\6666666666)/ 8704Failed: number is too big at offset 19 8705 8706/\g6666666666/ 8707Failed: number is too big at offset 11 8708 8709/[\g6666666666]/ 8710Failed: number is too big at offset 12 8711 8712/(?1)\c[/ 8713Failed: reference to non-existent subpattern at offset 3 8714 8715/.+A/<crlf> 8716 \r\nA 8717No match 8718 8719/\nA/<crlf> 8720 \r\nA 8721 0: \x0aA 8722 8723/[\r\n]A/<crlf> 8724 \r\nA 8725 0: \x0aA 8726 8727/(\r|\n)A/<crlf> 8728 \r\nA 8729 0: \x0aA 8730 1: \x0a 8731 8732/a(*CR)b/ 8733Failed: (*VERB) not recognized at offset 5 8734 8735/(*CR)a.b/ 8736 a\nb 8737 0: a\x0ab 8738 ** Failers 8739No match 8740 a\rb 8741No match 8742 8743/(*CR)a.b/<lf> 8744 a\nb 8745 0: a\x0ab 8746 ** Failers 8747No match 8748 a\rb 8749No match 8750 8751/(*LF)a.b/<CRLF> 8752 a\rb 8753 0: a\x0db 8754 ** Failers 8755No match 8756 a\nb 8757No match 8758 8759/(*CRLF)a.b/ 8760 a\rb 8761 0: a\x0db 8762 a\nb 8763 0: a\x0ab 8764 ** Failers 8765No match 8766 a\r\nb 8767No match 8768 8769/(*ANYCRLF)a.b/<CR> 8770 ** Failers 8771No match 8772 a\rb 8773No match 8774 a\nb 8775No match 8776 a\r\nb 8777No match 8778 8779/(*ANY)a.b/<cr> 8780 ** Failers 8781No match 8782 a\rb 8783No match 8784 a\nb 8785No match 8786 a\r\nb 8787No match 8788 a\x85b 8789No match 8790 8791/(*ANY).*/g 8792 abc\r\ndef 8793 0: abc 8794 0: 8795 0: def 8796 0: 8797 8798/(*ANYCRLF).*/g 8799 abc\r\ndef 8800 0: abc 8801 0: 8802 0: def 8803 0: 8804 8805/(*CRLF).*/g 8806 abc\r\ndef 8807 0: abc 8808 0: 8809 0: def 8810 0: 8811 8812/a\Rb/I<bsr_anycrlf> 8813Capturing subpattern count = 0 8814Options: bsr_anycrlf 8815First char = 'a' 8816Need char = 'b' 8817 a\rb 8818 0: a\x0db 8819 a\nb 8820 0: a\x0ab 8821 a\r\nb 8822 0: a\x0d\x0ab 8823 ** Failers 8824No match 8825 a\x85b 8826No match 8827 a\x0bb 8828No match 8829 8830/a\Rb/I<bsr_unicode> 8831Capturing subpattern count = 0 8832Options: bsr_unicode 8833First char = 'a' 8834Need char = 'b' 8835 a\rb 8836 0: a\x0db 8837 a\nb 8838 0: a\x0ab 8839 a\r\nb 8840 0: a\x0d\x0ab 8841 a\x85b 8842 0: a\x85b 8843 a\x0bb 8844 0: a\x0bb 8845 ** Failers 8846No match 8847 a\x85b\<bsr_anycrlf> 8848No match 8849 a\x0bb\<bsr_anycrlf> 8850No match 8851 8852/a\R?b/I<bsr_anycrlf> 8853Capturing subpattern count = 0 8854Options: bsr_anycrlf 8855First char = 'a' 8856Need char = 'b' 8857 a\rb 8858 0: a\x0db 8859 a\nb 8860 0: a\x0ab 8861 a\r\nb 8862 0: a\x0d\x0ab 8863 ** Failers 8864No match 8865 a\x85b 8866No match 8867 a\x0bb 8868No match 8869 8870/a\R?b/I<bsr_unicode> 8871Capturing subpattern count = 0 8872Options: bsr_unicode 8873First char = 'a' 8874Need char = 'b' 8875 a\rb 8876 0: a\x0db 8877 a\nb 8878 0: a\x0ab 8879 a\r\nb 8880 0: a\x0d\x0ab 8881 a\x85b 8882 0: a\x85b 8883 a\x0bb 8884 0: a\x0bb 8885 ** Failers 8886No match 8887 a\x85b\<bsr_anycrlf> 8888No match 8889 a\x0bb\<bsr_anycrlf> 8890No match 8891 8892/a\R{2,4}b/I<bsr_anycrlf> 8893Capturing subpattern count = 0 8894Options: bsr_anycrlf 8895First char = 'a' 8896Need char = 'b' 8897 a\r\n\nb 8898 0: a\x0d\x0a\x0ab 8899 a\n\r\rb 8900 0: a\x0a\x0d\x0db 8901 a\r\n\r\n\r\n\r\nb 8902 0: a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0ab 8903 ** Failers 8904No match 8905 a\x85\85b 8906No match 8907 a\x0b\0bb 8908No match 8909 8910/a\R{2,4}b/I<bsr_unicode> 8911Capturing subpattern count = 0 8912Options: bsr_unicode 8913First char = 'a' 8914Need char = 'b' 8915 a\r\rb 8916 0: a\x0d\x0db 8917 a\n\n\nb 8918 0: a\x0a\x0a\x0ab 8919 a\r\n\n\r\rb 8920 0: a\x0d\x0a\x0a\x0d\x0db 8921 a\x85\85b 8922No match 8923 a\x0b\0bb 8924No match 8925 ** Failers 8926No match 8927 a\r\r\r\r\rb 8928No match 8929 a\x85\85b\<bsr_anycrlf> 8930No match 8931 a\x0b\0bb\<bsr_anycrlf> 8932No match 8933 8934/(*BSR_ANYCRLF)a\Rb/I 8935Capturing subpattern count = 0 8936Options: bsr_anycrlf 8937First char = 'a' 8938Need char = 'b' 8939 a\nb 8940 0: a\x0ab 8941 a\rb 8942 0: a\x0db 8943 8944/(*BSR_UNICODE)a\Rb/I 8945Capturing subpattern count = 0 8946Options: bsr_unicode 8947First char = 'a' 8948Need char = 'b' 8949 a\x85b 8950 0: a\x85b 8951 8952/(*BSR_ANYCRLF)(*CRLF)a\Rb/I 8953Capturing subpattern count = 0 8954Options: bsr_anycrlf 8955Forced newline sequence: CRLF 8956First char = 'a' 8957Need char = 'b' 8958 a\nb 8959 0: a\x0ab 8960 a\rb 8961 0: a\x0db 8962 8963/(*CRLF)(*BSR_UNICODE)a\Rb/I 8964Capturing subpattern count = 0 8965Options: bsr_unicode 8966Forced newline sequence: CRLF 8967First char = 'a' 8968Need char = 'b' 8969 a\x85b 8970 0: a\x85b 8971 8972/(*CRLF)(*BSR_ANYCRLF)(*CR)ab/I 8973Capturing subpattern count = 0 8974Options: bsr_anycrlf 8975Forced newline sequence: CR 8976First char = 'a' 8977Need char = 'b' 8978 8979/(?<a>)(?&)/ 8980Failed: subpattern name expected at offset 9 8981 8982/(?<abc>)(?&a)/ 8983Failed: reference to non-existent subpattern at offset 12 8984 8985/(?<a>)(?&aaaaaaaaaaaaaaaaaaaaaaa)/ 8986Failed: reference to non-existent subpattern at offset 32 8987 8988/(?+-a)/ 8989Failed: digit expected after (?+ at offset 3 8990 8991/(?-+a)/ 8992Failed: unrecognized character after (? or (?- at offset 3 8993 8994/(?(-1))/ 8995Failed: reference to non-existent subpattern at offset 6 8996 8997/(?(+10))/ 8998Failed: reference to non-existent subpattern at offset 7 8999 9000/(?(10))/ 9001Failed: reference to non-existent subpattern at offset 6 9002 9003/(?(+2))()()/ 9004 9005/(?(2))()()/ 9006 9007/\k''/ 9008Failed: subpattern name expected at offset 3 9009 9010/\k<>/ 9011Failed: subpattern name expected at offset 3 9012 9013/\k{}/ 9014Failed: subpattern name expected at offset 3 9015 9016/(?P=)/ 9017Failed: subpattern name expected at offset 4 9018 9019/(?P>)/ 9020Failed: subpattern name expected at offset 4 9021 9022/(?!\w)(?R)/ 9023Failed: recursive call could loop indefinitely at offset 9 9024 9025/(?=\w)(?R)/ 9026Failed: recursive call could loop indefinitely at offset 9 9027 9028/(?<!\w)(?R)/ 9029Failed: recursive call could loop indefinitely at offset 10 9030 9031/(?<=\w)(?R)/ 9032Failed: recursive call could loop indefinitely at offset 10 9033 9034/[[:foo:]]/ 9035Failed: unknown POSIX class name at offset 3 9036 9037/[[:1234:]]/ 9038Failed: unknown POSIX class name at offset 3 9039 9040/[[:f\oo:]]/ 9041Failed: unknown POSIX class name at offset 3 9042 9043/[[: :]]/ 9044Failed: unknown POSIX class name at offset 3 9045 9046/[[:...:]]/ 9047Failed: unknown POSIX class name at offset 3 9048 9049/[[:l\ower:]]/ 9050Failed: unknown POSIX class name at offset 3 9051 9052/[[:abc\:]]/ 9053Failed: unknown POSIX class name at offset 3 9054 9055/[abc[:x\]pqr:]]/ 9056Failed: unknown POSIX class name at offset 6 9057 9058/[[:a\dz:]]/ 9059Failed: unknown POSIX class name at offset 3 9060 9061/(^(a|b\g<-1'c))/ 9062Failed: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number at offset 15 9063 9064/^(?+1)(?<a>x|y){0}z/ 9065 xzxx 9066 0: xz 9067 yzyy 9068 0: yz 9069 ** Failers 9070No match 9071 xxz 9072No match 9073 9074/(\3)(\1)(a)/ 9075 cat 9076No match 9077 9078/(\3)(\1)(a)/<JS> 9079 cat 9080 0: a 9081 1: 9082 2: 9083 3: a 9084 9085/TA]/ 9086 The ACTA] comes 9087 0: TA] 9088 9089/TA]/<JS> 9090Failed: ] is an invalid data character in JavaScript compatibility mode at offset 2 9091 9092/(?2)[]a()b](abc)/ 9093Failed: reference to non-existent subpattern at offset 3 9094 9095/(?2)[^]a()b](abc)/ 9096Failed: reference to non-existent subpattern at offset 3 9097 9098/(?1)[]a()b](abc)/ 9099 abcbabc 9100 0: abcbabc 9101 1: abc 9102 ** Failers 9103No match 9104 abcXabc 9105No match 9106 9107/(?1)[^]a()b](abc)/ 9108 abcXabc 9109 0: abcXabc 9110 1: abc 9111 ** Failers 9112No match 9113 abcbabc 9114No match 9115 9116/(?2)[]a()b](abc)(xyz)/ 9117 xyzbabcxyz 9118 0: xyzbabcxyz 9119 1: abc 9120 2: xyz 9121 9122/(?&N)[]a(?<N>)](?<M>abc)/ 9123Failed: reference to non-existent subpattern at offset 4 9124 9125/(?&N)[]a(?<N>)](abc)/ 9126Failed: reference to non-existent subpattern at offset 4 9127 9128/a[]b/ 9129Failed: missing terminating ] for character class at offset 4 9130 9131/a[^]b/ 9132Failed: missing terminating ] for character class at offset 5 9133 9134/a[]b/<JS> 9135 ** Failers 9136No match 9137 ab 9138No match 9139 9140/a[]+b/<JS> 9141 ** Failers 9142No match 9143 ab 9144No match 9145 9146/a[]*+b/<JS> 9147 ** Failers 9148No match 9149 ab 9150No match 9151 9152/a[^]b/<JS> 9153 aXb 9154 0: aXb 9155 a\nb 9156 0: a\x0ab 9157 ** Failers 9158No match 9159 ab 9160No match 9161 9162/a[^]+b/<JS> 9163 aXb 9164 0: aXb 9165 a\nX\nXb 9166 0: a\x0aX\x0aXb 9167 ** Failers 9168No match 9169 ab 9170No match 9171 9172/a(?!)+b/ 9173Failed: nothing to repeat at offset 5 9174 9175/a(*FAIL)+b/ 9176Failed: nothing to repeat at offset 8 9177 9178/(abc|pqr|123){0}[xyz]/SI 9179Capturing subpattern count = 1 9180No options 9181No first char 9182No need char 9183Subject length lower bound = 1 9184Starting byte set: x y z 9185 9186/(?(?=.*b)b|^)/CI 9187Capturing subpattern count = 0 9188Options: 9189No first char 9190No need char 9191 adc 9192--->adc 9193 +0 ^ (?(?=.*b)b|^) 9194 +2 ^ (?=.*b) 9195 +5 ^ .* 9196 +7 ^ ^ b 9197 +7 ^ ^ b 9198 +7 ^^ b 9199 +7 ^ b 9200+12 ^ ) 9201+13 ^ 9202 0: 9203 abc 9204--->abc 9205 +0 ^ (?(?=.*b)b|^) 9206 +2 ^ (?=.*b) 9207 +5 ^ .* 9208 +7 ^ ^ b 9209 +7 ^ ^ b 9210 +7 ^^ b 9211 +8 ^ ^ ) 9212 +9 ^ b 9213 +0 ^ (?(?=.*b)b|^) 9214 +2 ^ (?=.*b) 9215 +5 ^ .* 9216 +7 ^ ^ b 9217 +7 ^^ b 9218 +7 ^ b 9219 +8 ^^ ) 9220 +9 ^ b 9221+10 ^^ | 9222+13 ^^ 9223 0: b 9224 9225/(?(?=b).*b|^d)/I 9226Capturing subpattern count = 0 9227No options 9228No first char 9229No need char 9230 9231/(?(?=.*b).*b|^d)/I 9232Capturing subpattern count = 0 9233No options 9234First char at start or follows newline 9235No need char 9236 9237/a?|b?/P 9238 abc 9239 0: a 9240 ** Failers 9241 0: 9242 ddd\N 9243No match: POSIX code 17: match failed 9244 9245/xyz/C 9246 xyz 9247--->xyz 9248 +0 ^ x 9249 +1 ^^ y 9250 +2 ^ ^ z 9251 +3 ^ ^ 9252 0: xyz 9253 abcxyz 9254--->abcxyz 9255 +0 ^ x 9256 +1 ^^ y 9257 +2 ^ ^ z 9258 +3 ^ ^ 9259 0: xyz 9260 abcxyz\Y 9261--->abcxyz 9262 +0 ^ x 9263 +0 ^ x 9264 +0 ^ x 9265 +0 ^ x 9266 +1 ^^ y 9267 +2 ^ ^ z 9268 +3 ^ ^ 9269 0: xyz 9270 ** Failers 9271No match 9272 abc 9273No match 9274 abc\Y 9275--->abc 9276 +0 ^ x 9277 +0 ^ x 9278 +0 ^ x 9279 +0 ^ x 9280No match 9281 abcxypqr 9282No match 9283 abcxypqr\Y 9284--->abcxypqr 9285 +0 ^ x 9286 +0 ^ x 9287 +0 ^ x 9288 +0 ^ x 9289 +1 ^^ y 9290 +2 ^ ^ z 9291 +0 ^ x 9292 +0 ^ x 9293 +0 ^ x 9294 +0 ^ x 9295 +0 ^ x 9296No match 9297 9298/(*NO_START_OPT)xyz/C 9299 abcxyz 9300--->abcxyz 9301+15 ^ x 9302+15 ^ x 9303+15 ^ x 9304+15 ^ x 9305+16 ^^ y 9306+17 ^ ^ z 9307+18 ^ ^ 9308 0: xyz 9309 9310/xyz/CY 9311 abcxyz 9312--->abcxyz 9313 +0 ^ x 9314 +0 ^ x 9315 +0 ^ x 9316 +0 ^ x 9317 +1 ^^ y 9318 +2 ^ ^ z 9319 +3 ^ ^ 9320 0: xyz 9321 9322/^"((?(?=[a])[^"])|b)*"$/C 9323 "ab" 9324--->"ab" 9325 +0 ^ ^ 9326 +1 ^ " 9327 +2 ^^ ((?(?=[a])[^"])|b)* 9328 +3 ^^ (?(?=[a])[^"]) 9329 +5 ^^ (?=[a]) 9330 +8 ^^ [a] 9331+11 ^ ^ ) 9332+12 ^^ [^"] 9333+16 ^ ^ ) 9334+17 ^ ^ | 9335 +3 ^ ^ (?(?=[a])[^"]) 9336 +5 ^ ^ (?=[a]) 9337 +8 ^ ^ [a] 9338+21 ^ ^ " 9339+18 ^ ^ b 9340+19 ^ ^ ) 9341 +3 ^ ^ (?(?=[a])[^"]) 9342 +5 ^ ^ (?=[a]) 9343 +8 ^ ^ [a] 9344+21 ^ ^ " 9345+22 ^ ^ $ 9346+23 ^ ^ 9347 0: "ab" 9348 1: 9349 9350/^"((?(?=[a])[^"])|b)*"$/ 9351 "ab" 9352 0: "ab" 9353 1: 9354 9355/^X(?5)(a)(?|(b)|(q))(c)(d)Y/ 9356Failed: reference to non-existent subpattern at offset 5 9357 9358/^X(?&N)(a)(?|(b)|(q))(c)(d)(?<N>Y)/ 9359 XYabcdY 9360 0: XYabcdY 9361 1: a 9362 2: b 9363 3: c 9364 4: d 9365 5: Y 9366 9367/Xa{2,4}b/ 9368 X\P 9369Partial match: X 9370 Xa\P 9371Partial match: Xa 9372 Xaa\P 9373Partial match: Xaa 9374 Xaaa\P 9375Partial match: Xaaa 9376 Xaaaa\P 9377Partial match: Xaaaa 9378 9379/Xa{2,4}?b/ 9380 X\P 9381Partial match: X 9382 Xa\P 9383Partial match: Xa 9384 Xaa\P 9385Partial match: Xaa 9386 Xaaa\P 9387Partial match: Xaaa 9388 Xaaaa\P 9389Partial match: Xaaaa 9390 9391/Xa{2,4}+b/ 9392 X\P 9393Partial match: X 9394 Xa\P 9395Partial match: Xa 9396 Xaa\P 9397Partial match: Xaa 9398 Xaaa\P 9399Partial match: Xaaa 9400 Xaaaa\P 9401Partial match: Xaaaa 9402 9403/X\d{2,4}b/ 9404 X\P 9405Partial match: X 9406 X3\P 9407Partial match: X3 9408 X33\P 9409Partial match: X33 9410 X333\P 9411Partial match: X333 9412 X3333\P 9413Partial match: X3333 9414 9415/X\d{2,4}?b/ 9416 X\P 9417Partial match: X 9418 X3\P 9419Partial match: X3 9420 X33\P 9421Partial match: X33 9422 X333\P 9423Partial match: X333 9424 X3333\P 9425Partial match: X3333 9426 9427/X\d{2,4}+b/ 9428 X\P 9429Partial match: X 9430 X3\P 9431Partial match: X3 9432 X33\P 9433Partial match: X33 9434 X333\P 9435Partial match: X333 9436 X3333\P 9437Partial match: X3333 9438 9439/X\D{2,4}b/ 9440 X\P 9441Partial match: X 9442 Xa\P 9443Partial match: Xa 9444 Xaa\P 9445Partial match: Xaa 9446 Xaaa\P 9447Partial match: Xaaa 9448 Xaaaa\P 9449Partial match: Xaaaa 9450 9451/X\D{2,4}?b/ 9452 X\P 9453Partial match: X 9454 Xa\P 9455Partial match: Xa 9456 Xaa\P 9457Partial match: Xaa 9458 Xaaa\P 9459Partial match: Xaaa 9460 Xaaaa\P 9461Partial match: Xaaaa 9462 9463/X\D{2,4}+b/ 9464 X\P 9465Partial match: X 9466 Xa\P 9467Partial match: Xa 9468 Xaa\P 9469Partial match: Xaa 9470 Xaaa\P 9471Partial match: Xaaa 9472 Xaaaa\P 9473Partial match: Xaaaa 9474 9475/X[abc]{2,4}b/ 9476 X\P 9477Partial match: X 9478 Xa\P 9479Partial match: Xa 9480 Xaa\P 9481Partial match: Xaa 9482 Xaaa\P 9483Partial match: Xaaa 9484 Xaaaa\P 9485Partial match: Xaaaa 9486 9487/X[abc]{2,4}?b/ 9488 X\P 9489Partial match: X 9490 Xa\P 9491Partial match: Xa 9492 Xaa\P 9493Partial match: Xaa 9494 Xaaa\P 9495Partial match: Xaaa 9496 Xaaaa\P 9497Partial match: Xaaaa 9498 9499/X[abc]{2,4}+b/ 9500 X\P 9501Partial match: X 9502 Xa\P 9503Partial match: Xa 9504 Xaa\P 9505Partial match: Xaa 9506 Xaaa\P 9507Partial match: Xaaa 9508 Xaaaa\P 9509Partial match: Xaaaa 9510 9511/X[^a]{2,4}b/ 9512 X\P 9513Partial match: X 9514 Xz\P 9515Partial match: Xz 9516 Xzz\P 9517Partial match: Xzz 9518 Xzzz\P 9519Partial match: Xzzz 9520 Xzzzz\P 9521Partial match: Xzzzz 9522 9523/X[^a]{2,4}?b/ 9524 X\P 9525Partial match: X 9526 Xz\P 9527Partial match: Xz 9528 Xzz\P 9529Partial match: Xzz 9530 Xzzz\P 9531Partial match: Xzzz 9532 Xzzzz\P 9533Partial match: Xzzzz 9534 9535/X[^a]{2,4}+b/ 9536 X\P 9537Partial match: X 9538 Xz\P 9539Partial match: Xz 9540 Xzz\P 9541Partial match: Xzz 9542 Xzzz\P 9543Partial match: Xzzz 9544 Xzzzz\P 9545Partial match: Xzzzz 9546 9547/(Y)X\1{2,4}b/ 9548 YX\P 9549Partial match: YX 9550 YXY\P 9551Partial match: YXY 9552 YXYY\P 9553Partial match: YXYY 9554 YXYYY\P 9555Partial match: YXYYY 9556 YXYYYY\P 9557Partial match: YXYYYY 9558 9559/(Y)X\1{2,4}?b/ 9560 YX\P 9561Partial match: YX 9562 YXY\P 9563Partial match: YXY 9564 YXYY\P 9565Partial match: YXYY 9566 YXYYY\P 9567Partial match: YXYYY 9568 YXYYYY\P 9569Partial match: YXYYYY 9570 9571/(Y)X\1{2,4}+b/ 9572 YX\P 9573Partial match: YX 9574 YXY\P 9575Partial match: YXY 9576 YXYY\P 9577Partial match: YXYY 9578 YXYYY\P 9579Partial match: YXYYY 9580 YXYYYY\P 9581Partial match: YXYYYY 9582 9583/\++\KZ|\d+X|9+Y/ 9584 ++++123999\P 9585Partial match: 123999 9586 ++++123999Y\P 9587 0: 999Y 9588 ++++Z1234\P 9589 0: Z 9590 9591/Z(*F)/ 9592 Z\P 9593No match 9594 ZA\P 9595No match 9596 9597/Z(?!)/ 9598 Z\P 9599No match 9600 ZA\P 9601No match 9602 9603/dog(sbody)?/ 9604 dogs\P 9605 0: dog 9606 dogs\P\P 9607Partial match: dogs 9608 9609/dog(sbody)??/ 9610 dogs\P 9611 0: dog 9612 dogs\P\P 9613 0: dog 9614 9615/dog|dogsbody/ 9616 dogs\P 9617 0: dog 9618 dogs\P\P 9619 0: dog 9620 9621/dogsbody|dog/ 9622 dogs\P 9623 0: dog 9624 dogs\P\P 9625Partial match: dogs 9626 9627/\bthe cat\b/ 9628 the cat\P 9629 0: the cat 9630 the cat\P\P 9631Partial match: the cat 9632 9633/abc/ 9634 abc\P 9635 0: abc 9636 abc\P\P 9637 0: abc 9638 9639/\w+A/P 9640 CDAAAAB 9641 0: CDAAAA 9642 9643/\w+A/PU 9644 CDAAAAB 9645 0: CDA 9646 9647/abc\K123/ 9648 xyzabc123pqr 9649 0: 123 9650 xyzabc12\P 9651Partial match: abc12 9652 xyzabc12\P\P 9653Partial match: abc12 9654 9655/(?<=abc)123/ 9656 xyzabc123pqr 9657 0: 123 9658 xyzabc12\P 9659Partial match: abc12 9660 xyzabc12\P\P 9661Partial match: abc12 9662 9663/\babc\b/ 9664 +++abc+++ 9665 0: abc 9666 +++ab\P 9667Partial match: +ab 9668 +++ab\P\P 9669Partial match: +ab 9670 9671/(?&word)(?&element)(?(DEFINE)(?<element><[^m][^>]>[^<])(?<word>\w*+))/BZ 9672------------------------------------------------------------------ 9673 Bra 9674 Once 9675 Recurse 9676 Ket 9677 Once 9678 Recurse 9679 Ket 9680 Cond 9681 Cond def 9682 CBra 1 9683 < 9684 [^m] 9685 [^>] 9686 > 9687 [^<] 9688 Ket 9689 CBra 2 9690 \w*+ 9691 Ket 9692 Ket 9693 Ket 9694 End 9695------------------------------------------------------------------ 9696 9697/(?&word)(?&element)(?(DEFINE)(?<element><[^\d][^>]>[^<])(?<word>\w*+))/BZ 9698------------------------------------------------------------------ 9699 Bra 9700 Once 9701 Recurse 9702 Ket 9703 Once 9704 Recurse 9705 Ket 9706 Cond 9707 Cond def 9708 CBra 1 9709 < 9710 [\x00-/:-\xff] (neg) 9711 [^>] 9712 > 9713 [^<] 9714 Ket 9715 CBra 2 9716 \w*+ 9717 Ket 9718 Ket 9719 Ket 9720 End 9721------------------------------------------------------------------ 9722 9723/(ab)(x(y)z(cd(*ACCEPT)))pq/BZ 9724------------------------------------------------------------------ 9725 Bra 9726 CBra 1 9727 ab 9728 Ket 9729 CBra 2 9730 x 9731 CBra 3 9732 y 9733 Ket 9734 z 9735 CBra 4 9736 cd 9737 Close 4 9738 Close 2 9739 *ACCEPT 9740 Ket 9741 Ket 9742 pq 9743 Ket 9744 End 9745------------------------------------------------------------------ 9746 9747/abc\K/+ 9748 abcdef 9749 0: 9750 0+ def 9751 abcdef\N\N 9752 0: 9753 0+ def 9754 xyzabcdef\N\N 9755 0: 9756 0+ def 9757 ** Failers 9758No match 9759 abcdef\N 9760No match 9761 xyzabcdef\N 9762No match 9763 9764/^(?:(?=abc)|abc\K)/+ 9765 abcdef 9766 0: 9767 0+ abcdef 9768 abcdef\N\N 9769 0: 9770 0+ def 9771 ** Failers 9772No match 9773 abcdef\N 9774No match 9775 9776/a?b?/+ 9777 xyz 9778 0: 9779 0+ xyz 9780 xyzabc 9781 0: 9782 0+ xyzabc 9783 xyzabc\N 9784 0: ab 9785 0+ c 9786 xyzabc\N\N 9787 0: 9788 0+ yzabc 9789 xyz\N\N 9790 0: 9791 0+ yz 9792 ** Failers 9793 0: 9794 0+ ** Failers 9795 xyz\N 9796No match 9797 9798/^a?b?/+ 9799 xyz 9800 0: 9801 0+ xyz 9802 xyzabc 9803 0: 9804 0+ xyzabc 9805 ** Failers 9806 0: 9807 0+ ** Failers 9808 xyzabc\N 9809No match 9810 xyzabc\N\N 9811No match 9812 xyz\N\N 9813No match 9814 xyz\N 9815No match 9816 9817/^(?<name>a|b\g<name>c)/ 9818 aaaa 9819 0: a 9820 1: a 9821 bacxxx 9822 0: bac 9823 1: bac 9824 bbaccxxx 9825 0: bbacc 9826 1: bbacc 9827 bbbacccxx 9828 0: bbbaccc 9829 1: bbbaccc 9830 9831/^(?<name>a|b\g'name'c)/ 9832 aaaa 9833 0: a 9834 1: a 9835 bacxxx 9836 0: bac 9837 1: bac 9838 bbaccxxx 9839 0: bbacc 9840 1: bbacc 9841 bbbacccxx 9842 0: bbbaccc 9843 1: bbbaccc 9844 9845/^(a|b\g<1>c)/ 9846 aaaa 9847 0: a 9848 1: a 9849 bacxxx 9850 0: bac 9851 1: bac 9852 bbaccxxx 9853 0: bbacc 9854 1: bbacc 9855 bbbacccxx 9856 0: bbbaccc 9857 1: bbbaccc 9858 9859/^(a|b\g'1'c)/ 9860 aaaa 9861 0: a 9862 1: a 9863 bacxxx 9864 0: bac 9865 1: bac 9866 bbaccxxx 9867 0: bbacc 9868 1: bbacc 9869 bbbacccxx 9870 0: bbbaccc 9871 1: bbbaccc 9872 9873/^(a|b\g'-1'c)/ 9874 aaaa 9875 0: a 9876 1: a 9877 bacxxx 9878 0: bac 9879 1: bac 9880 bbaccxxx 9881 0: bbacc 9882 1: bbacc 9883 bbbacccxx 9884 0: bbbaccc 9885 1: bbbaccc 9886 9887/(^(a|b\g<-1>c))/ 9888 aaaa 9889 0: a 9890 1: a 9891 2: a 9892 bacxxx 9893 0: bac 9894 1: bac 9895 2: bac 9896 bbaccxxx 9897 0: bbacc 9898 1: bbacc 9899 2: bbacc 9900 bbbacccxx 9901 0: bbbaccc 9902 1: bbbaccc 9903 2: bbbaccc 9904 9905/(?-i:\g<name>)(?i:(?<name>a))/ 9906 XaaX 9907 0: aa 9908 1: a 9909 XAAX 9910 0: AA 9911 1: A 9912 9913/(?i:\g<name>)(?-i:(?<name>a))/ 9914 XaaX 9915 0: aa 9916 1: a 9917 ** Failers 9918No match 9919 XAAX 9920No match 9921 9922/(?-i:\g<+1>)(?i:(a))/ 9923 XaaX 9924 0: aa 9925 1: a 9926 XAAX 9927 0: AA 9928 1: A 9929 9930/(?=(?<regex>(?#simplesyntax)\$(?<name>[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)(?:\[(?<index>[a-zA-Z0-9_\x{7f}-\x{ff}]+|\$\g<name>)\]|->\g<name>(\(.*?\))?)?|(?#simple syntax withbraces)\$\{(?:\g<name>(?<indices>\[(?:\g<index>|'(?:\\.|[^'\\])*'|"(?:\g<regex>|\\.|[^"\\])*")\])?|\g<complex>|\$\{\g<complex>\})\}|(?#complexsyntax)\{(?<complex>\$(?<segment>\g<name>(\g<indices>*|\(.*?\))?)(?:->\g<segment>)*|\$\g<complex>|\$\{\g<complex>\})\}))\{/ 9931 9932/(?<n>a|b|c)\g<n>*/ 9933 abc 9934 0: abc 9935 1: a 9936 accccbbb 9937 0: accccbbb 9938 1: a 9939 9940/^X(?7)(a)(?|(b)|(q)(r)(s))(c)(d)(Y)/ 9941 XYabcdY 9942 0: XYabcdY 9943 1: a 9944 2: b 9945 3: <unset> 9946 4: <unset> 9947 5: c 9948 6: d 9949 7: Y 9950 9951/(?<=b(?1)|zzz)(a)/ 9952 xbaax 9953 0: a 9954 1: a 9955 xzzzax 9956 0: a 9957 1: a 9958 9959/(a)(?<=b\1)/ 9960Failed: lookbehind assertion is not fixed length at offset 10 9961 9962/(a)(?<=b+(?1))/ 9963Failed: lookbehind assertion is not fixed length at offset 13 9964 9965/(a+)(?<=b(?1))/ 9966Failed: lookbehind assertion is not fixed length at offset 14 9967 9968/(a(?<=b(?1)))/ 9969Failed: lookbehind assertion is not fixed length at offset 13 9970 9971/(?<=b(?1))xyz/ 9972Failed: reference to non-existent subpattern at offset 8 9973 9974/(?<=b(?1))xyz(b+)pqrstuvew/ 9975Failed: lookbehind assertion is not fixed length at offset 26 9976 9977/(a|bc)\1/SI 9978Capturing subpattern count = 1 9979Max back reference = 1 9980No options 9981No first char 9982No need char 9983Subject length lower bound = 2 9984Starting byte set: a b 9985 9986/(a|bc)\1{2,3}/SI 9987Capturing subpattern count = 1 9988Max back reference = 1 9989No options 9990No first char 9991No need char 9992Subject length lower bound = 3 9993Starting byte set: a b 9994 9995/(a|bc)(?1)/SI 9996Capturing subpattern count = 1 9997No options 9998No first char 9999No need char 10000Subject length lower bound = 2 10001Starting byte set: a b 10002 10003/(a|b\1)(a|b\1)/SI 10004Capturing subpattern count = 2 10005Max back reference = 1 10006No options 10007No first char 10008No need char 10009Subject length lower bound = 2 10010Starting byte set: a b 10011 10012/(a|b\1){2}/SI 10013Capturing subpattern count = 1 10014Max back reference = 1 10015No options 10016No first char 10017No need char 10018Subject length lower bound = 2 10019Starting byte set: a b 10020 10021/(a|bbbb\1)(a|bbbb\1)/SI 10022Capturing subpattern count = 2 10023Max back reference = 1 10024No options 10025No first char 10026No need char 10027Subject length lower bound = 2 10028Starting byte set: a b 10029 10030/(a|bbbb\1){2}/SI 10031Capturing subpattern count = 1 10032Max back reference = 1 10033No options 10034No first char 10035No need char 10036Subject length lower bound = 2 10037Starting byte set: a b 10038 10039/^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]/SI 10040Capturing subpattern count = 1 10041Options: anchored 10042No first char 10043Need char = ':' 10044Subject length lower bound = 22 10045No set of starting bytes 10046 10047/ (?: [\040\t] | \( 10048(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10049\) )* # optional leading comment 10050(?: (?: 10051[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 10052(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 10053| 10054" (?: # opening quote... 10055[^\\\x80-\xff\n\015"] # Anything except backslash and quote 10056| # or 10057\\ [^\x80-\xff] # Escaped something (something != CR) 10058)* " # closing quote 10059) # initial word 10060(?: (?: [\040\t] | \( 10061(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10062\) )* \. (?: [\040\t] | \( 10063(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10064\) )* (?: 10065[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 10066(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 10067| 10068" (?: # opening quote... 10069[^\\\x80-\xff\n\015"] # Anything except backslash and quote 10070| # or 10071\\ [^\x80-\xff] # Escaped something (something != CR) 10072)* " # closing quote 10073) )* # further okay, if led by a period 10074(?: [\040\t] | \( 10075(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10076\) )* @ (?: [\040\t] | \( 10077(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10078\) )* (?: 10079[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 10080(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 10081| \[ # [ 10082(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 10083\] # ] 10084) # initial subdomain 10085(?: # 10086(?: [\040\t] | \( 10087(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10088\) )* \. # if led by a period... 10089(?: [\040\t] | \( 10090(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10091\) )* (?: 10092[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 10093(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 10094| \[ # [ 10095(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 10096\] # ] 10097) # ...further okay 10098)* 10099# address 10100| # or 10101(?: 10102[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 10103(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 10104| 10105" (?: # opening quote... 10106[^\\\x80-\xff\n\015"] # Anything except backslash and quote 10107| # or 10108\\ [^\x80-\xff] # Escaped something (something != CR) 10109)* " # closing quote 10110) # one word, optionally followed by.... 10111(?: 10112[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] | # atom and space parts, or... 10113\( 10114(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10115\) | # comments, or... 10116 10117" (?: # opening quote... 10118[^\\\x80-\xff\n\015"] # Anything except backslash and quote 10119| # or 10120\\ [^\x80-\xff] # Escaped something (something != CR) 10121)* " # closing quote 10122# quoted strings 10123)* 10124< (?: [\040\t] | \( 10125(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10126\) )* # leading < 10127(?: @ (?: [\040\t] | \( 10128(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10129\) )* (?: 10130[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 10131(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 10132| \[ # [ 10133(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 10134\] # ] 10135) # initial subdomain 10136(?: # 10137(?: [\040\t] | \( 10138(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10139\) )* \. # if led by a period... 10140(?: [\040\t] | \( 10141(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10142\) )* (?: 10143[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 10144(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 10145| \[ # [ 10146(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 10147\] # ] 10148) # ...further okay 10149)* 10150 10151(?: (?: [\040\t] | \( 10152(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10153\) )* , (?: [\040\t] | \( 10154(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10155\) )* @ (?: [\040\t] | \( 10156(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10157\) )* (?: 10158[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 10159(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 10160| \[ # [ 10161(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 10162\] # ] 10163) # initial subdomain 10164(?: # 10165(?: [\040\t] | \( 10166(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10167\) )* \. # if led by a period... 10168(?: [\040\t] | \( 10169(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10170\) )* (?: 10171[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 10172(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 10173| \[ # [ 10174(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 10175\] # ] 10176) # ...further okay 10177)* 10178)* # further okay, if led by comma 10179: # closing colon 10180(?: [\040\t] | \( 10181(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10182\) )* )? # optional route 10183(?: 10184[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 10185(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 10186| 10187" (?: # opening quote... 10188[^\\\x80-\xff\n\015"] # Anything except backslash and quote 10189| # or 10190\\ [^\x80-\xff] # Escaped something (something != CR) 10191)* " # closing quote 10192) # initial word 10193(?: (?: [\040\t] | \( 10194(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10195\) )* \. (?: [\040\t] | \( 10196(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10197\) )* (?: 10198[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 10199(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 10200| 10201" (?: # opening quote... 10202[^\\\x80-\xff\n\015"] # Anything except backslash and quote 10203| # or 10204\\ [^\x80-\xff] # Escaped something (something != CR) 10205)* " # closing quote 10206) )* # further okay, if led by a period 10207(?: [\040\t] | \( 10208(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10209\) )* @ (?: [\040\t] | \( 10210(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10211\) )* (?: 10212[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 10213(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 10214| \[ # [ 10215(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 10216\] # ] 10217) # initial subdomain 10218(?: # 10219(?: [\040\t] | \( 10220(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10221\) )* \. # if led by a period... 10222(?: [\040\t] | \( 10223(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10224\) )* (?: 10225[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 10226(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 10227| \[ # [ 10228(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 10229\] # ] 10230) # ...further okay 10231)* 10232# address spec 10233(?: [\040\t] | \( 10234(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10235\) )* > # trailing > 10236# name and address 10237) (?: [\040\t] | \( 10238(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10239\) )* # optional trailing comment 10240/xSI 10241Capturing subpattern count = 0 10242Contains explicit CR or LF match 10243Options: extended 10244No first char 10245No need char 10246Subject length lower bound = 3 10247Starting byte set: \x09 \x20 ! " # $ % & ' ( * + - / 0 1 2 3 4 5 6 7 8 10248 9 = ? A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ^ _ ` a b c d e 10249 f g h i j k l m n o p q r s t u v w x y z { | } ~ \x7f 10250 10251/<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>/isIS 10252Capturing subpattern count = 11 10253Options: caseless dotall 10254First char = '<' 10255Need char = '>' 10256Subject length lower bound = 47 10257No set of starting bytes 10258 10259"(?>.*/)foo"SI 10260Capturing subpattern count = 0 10261No options 10262First char at start or follows newline 10263Need char = 'o' 10264Subject length lower bound = 4 10265No set of starting bytes 10266 10267/(?(?=[^a-z]+[a-z]) \d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} ) /xSI 10268Capturing subpattern count = 0 10269Options: extended 10270No first char 10271Need char = '-' 10272Subject length lower bound = 8 10273No set of starting bytes 10274 10275/(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/iSI 10276Capturing subpattern count = 1 10277Options: caseless 10278No first char 10279No need char 10280Subject length lower bound = 1 10281Starting byte set: A B C a b c 10282 10283/(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/SI 10284Capturing subpattern count = 0 10285No options 10286No first char 10287Need char = 'b' 10288Subject length lower bound = 41 10289Starting byte set: c d 10290 10291/<a[\s]+href[\s]*=[\s]* # find <a href= 10292 ([\"\'])? # find single or double quote 10293 (?(1) (.*?)\1 | ([^\s]+)) # if quote found, match up to next matching 10294 # quote, otherwise match up to next space 10295/isxSI 10296Capturing subpattern count = 3 10297Max back reference = 1 10298Options: caseless extended dotall 10299First char = '<' 10300Need char = '=' 10301Subject length lower bound = 9 10302No set of starting bytes 10303 10304/^(?!:) # colon disallowed at start 10305 (?: # start of item 10306 (?: [0-9a-f]{1,4} | # 1-4 hex digits or 10307 (?(1)0 | () ) ) # if null previously matched, fail; else null 10308 : # followed by colon 10309 ){1,7} # end item; 1-7 of them required 10310 [0-9a-f]{1,4} $ # final hex number at end of string 10311 (?(1)|.) # check that there was an empty component 10312 /xiIS 10313Capturing subpattern count = 1 10314Options: anchored caseless extended 10315No first char 10316Need char = ':' 10317Subject length lower bound = 2 10318No set of starting bytes 10319 10320/(?|(?<a>A)|(?<a>B))/I 10321Capturing subpattern count = 1 10322Named capturing subpatterns: 10323 a 1 10324 a 1 10325No options 10326No first char 10327No need char 10328 AB\Ca 10329 0: A 10330 1: A 10331 C A (1) a 10332 BA\Ca 10333 0: B 10334 1: B 10335 C B (1) a 10336 10337/(?|(?<a>A)|(?<b>B))/ 10338Failed: different names for subpatterns of the same number are not allowed at offset 15 10339 10340/(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) | 10341 b(?<quote> (?<apostrophe>')|(?<realquote>")) ) 10342 (?('quote')[a-z]+|[0-9]+)/JIx 10343Capturing subpattern count = 6 10344Named capturing subpatterns: 10345 apostrophe 2 10346 apostrophe 5 10347 quote 1 10348 quote 4 10349 realquote 3 10350 realquote 6 10351Options: extended dupnames 10352No first char 10353No need char 10354 a"aaaaa 10355 0: a"aaaaa 10356 1: " 10357 2: <unset> 10358 3: " 10359 b"aaaaa 10360 0: b"aaaaa 10361 1: <unset> 10362 2: <unset> 10363 3: <unset> 10364 4: " 10365 5: <unset> 10366 6: " 10367 ** Failers 10368No match 10369 b"11111 10370No match 10371 a"11111 10372No match 10373 10374/^(?|(a)(b)(c)(?<D>d)|(?<D>e)) (?('D')X|Y)/JDZx 10375------------------------------------------------------------------ 10376 Bra 10377 ^ 10378 Bra 10379 CBra 1 10380 a 10381 Ket 10382 CBra 2 10383 b 10384 Ket 10385 CBra 3 10386 c 10387 Ket 10388 CBra 4 10389 d 10390 Ket 10391 Alt 10392 CBra 1 10393 e 10394 Ket 10395 Ket 10396 Cond 10397 4 Cond nref 10398 X 10399 Alt 10400 Y 10401 Ket 10402 Ket 10403 End 10404------------------------------------------------------------------ 10405Capturing subpattern count = 4 10406Named capturing subpatterns: 10407 D 4 10408 D 1 10409Options: anchored extended dupnames 10410No first char 10411No need char 10412 abcdX 10413 0: abcdX 10414 1: a 10415 2: b 10416 3: c 10417 4: d 10418 eX 10419 0: eX 10420 1: e 10421 ** Failers 10422No match 10423 abcdY 10424No match 10425 ey 10426No match 10427 10428/(?<A>a) (b)(c) (?<A>d (?(R&A)$ | (?4)) )/JDZx 10429------------------------------------------------------------------ 10430 Bra 10431 CBra 1 10432 a 10433 Ket 10434 CBra 2 10435 b 10436 Ket 10437 CBra 3 10438 c 10439 Ket 10440 CBra 4 10441 d 10442 Cond 10443 Cond nrecurse 1 10444 $ 10445 Alt 10446 Once 10447 Recurse 10448 Ket 10449 Ket 10450 Ket 10451 Ket 10452 End 10453------------------------------------------------------------------ 10454Capturing subpattern count = 4 10455Named capturing subpatterns: 10456 A 1 10457 A 4 10458Options: extended dupnames 10459First char = 'a' 10460Need char = 'd' 10461 abcdd 10462 0: abcdd 10463 1: a 10464 2: b 10465 3: c 10466 4: dd 10467 ** Failers 10468No match 10469 abcdde 10470No match 10471 10472/abcd*/ 10473 xxxxabcd\P 10474 0: abcd 10475 xxxxabcd\P\P 10476Partial match: abcd 10477 10478/abcd*/i 10479 xxxxabcd\P 10480 0: abcd 10481 xxxxabcd\P\P 10482Partial match: abcd 10483 XXXXABCD\P 10484 0: ABCD 10485 XXXXABCD\P\P 10486Partial match: ABCD 10487 10488/abc\d*/ 10489 xxxxabc1\P 10490 0: abc1 10491 xxxxabc1\P\P 10492Partial match: abc1 10493 10494/(a)bc\1*/ 10495 xxxxabca\P 10496 0: abca 10497 1: a 10498 xxxxabca\P\P 10499Partial match: abca 10500 10501/abc[de]*/ 10502 xxxxabcde\P 10503 0: abcde 10504 xxxxabcde\P\P 10505Partial match: abcde 10506 10507/-- This is not in the Perl >= 5.10 test because Perl seems currently to be 10508 broken and not behaving as specified in that it *does* bumpalong after 10509 hitting (*COMMIT). --/ 10510 10511/(?1)(A(*COMMIT)|B)D/ 10512 ABD 10513 0: ABD 10514 1: B 10515 XABD 10516 0: ABD 10517 1: B 10518 BAD 10519 0: BAD 10520 1: A 10521 ABXABD 10522 0: ABD 10523 1: B 10524 ** Failers 10525No match 10526 ABX 10527No match 10528 BAXBAD 10529No match 10530 10531/(\3)(\1)(a)/<JS> 10532 cat 10533 0: a 10534 1: 10535 2: 10536 3: a 10537 10538/(\3)(\1)(a)/SI<JS> 10539Capturing subpattern count = 3 10540Max back reference = 3 10541Options: 10542No first char 10543Need char = 'a' 10544Subject length lower bound = 1 10545No set of starting bytes 10546 cat 10547 0: a 10548 1: 10549 2: 10550 3: a 10551 10552/(\3)(\1)(a)/SI 10553Capturing subpattern count = 3 10554Max back reference = 3 10555No options 10556No first char 10557Need char = 'a' 10558Subject length lower bound = 3 10559No set of starting bytes 10560 cat 10561No match 10562 10563/i(?(DEFINE)(?<s>a))/SI 10564Capturing subpattern count = 1 10565Named capturing subpatterns: 10566 s 1 10567No options 10568First char = 'i' 10569No need char 10570Subject length lower bound = 1 10571No set of starting bytes 10572 i 10573 0: i 10574 10575/()i(?(1)a)/SI 10576Capturing subpattern count = 1 10577No options 10578No first char 10579Need char = 'i' 10580Subject length lower bound = 1 10581Starting byte set: i 10582 ia 10583 0: ia 10584 1: 10585 10586/(?i)a(?-i)b|c/BZ 10587------------------------------------------------------------------ 10588 Bra 10589 NC a 10590 00 Opt 10591 b 10592 Alt 10593 00 Opt 10594 c 10595 Ket 10596 End 10597------------------------------------------------------------------ 10598 XabX 10599 0: ab 10600 XAbX 10601 0: Ab 10602 CcC 10603 0: c 10604 ** Failers 10605No match 10606 XABX 10607No match 10608 10609/(?i)a(?s)b|c/BZ 10610------------------------------------------------------------------ 10611 Bra 10612 NC a 10613 05 Opt 10614 NC b 10615 Alt 10616 05 Opt 10617 NC c 10618 Ket 10619 End 10620------------------------------------------------------------------ 10621 10622/(?i)a(?s-i)b|c/BZ 10623------------------------------------------------------------------ 10624 Bra 10625 NC a 10626 04 Opt 10627 b 10628 Alt 10629 04 Opt 10630 c 10631 Ket 10632 End 10633------------------------------------------------------------------ 10634 10635/^(ab(c\1)d|x){2}$/BZ 10636------------------------------------------------------------------ 10637 Bra 10638 ^ 10639 Once 10640 CBra 1 10641 ab 10642 CBra 2 10643 c 10644 \1 10645 Ket 10646 d 10647 Alt 10648 x 10649 Ket 10650 Ket 10651 Once 10652 CBra 1 10653 ab 10654 CBra 2 10655 c 10656 \1 10657 Ket 10658 d 10659 Alt 10660 x 10661 Ket 10662 Ket 10663 $ 10664 Ket 10665 End 10666------------------------------------------------------------------ 10667 xabcxd 10668 0: xabcxd 10669 1: abcxd 10670 2: cx 10671 10672/^(?&t)*+(?(DEFINE)(?<t>.))$/BZ 10673------------------------------------------------------------------ 10674 Bra 10675 ^ 10676 Once 10677 Brazero 10678 Once 10679 Recurse 10680 KetRmax 10681 Ket 10682 Cond 10683 Cond def 10684 CBra 1 10685 Any 10686 Ket 10687 Ket 10688 $ 10689 Ket 10690 End 10691------------------------------------------------------------------ 10692 10693/^(?&t)*(?(DEFINE)(?<t>.))$/BZ 10694------------------------------------------------------------------ 10695 Bra 10696 ^ 10697 Brazero 10698 Once 10699 Recurse 10700 KetRmax 10701 Cond 10702 Cond def 10703 CBra 1 10704 Any 10705 Ket 10706 Ket 10707 $ 10708 Ket 10709 End 10710------------------------------------------------------------------ 10711 10712/ -- The first four of these are not in the Perl >= 5.10 test because Perl 10713 documents that the use of \K in assertions is "not well defined". The 10714 last is here because Perl gives the match as "b" rather than "ab". I 10715 believe this to be a Perl bug. --/ 10716 10717/(?=a\Kb)ab/ 10718 ab 10719 0: b 10720 10721/(?!a\Kb)ac/ 10722 ac 10723 0: ac 10724 10725/^abc(?<=b\Kc)d/ 10726 abcd 10727 0: cd 10728 10729/^abc(?<!b\Kq)d/ 10730 abcd 10731 0: abcd 10732 10733/(?>a\Kb)z|(ab)/ 10734 ab 10735 0: ab 10736 1: ab 10737 10738/----------------------/ 10739 10740/(?P<L1>(?P<L2>0|)|(?P>L2)(?P>L1))/ 10741Failed: recursive call could loop indefinitely at offset 31 10742 10743/abc(*MARK:)pqr/ 10744Failed: (*MARK) must have an argument at offset 10 10745 10746/abc(*:)pqr/ 10747Failed: (*MARK) must have an argument at offset 6 10748 10749/abc(*FAIL:123)xyz/ 10750Failed: an argument is not allowed for (*ACCEPT), (*FAIL), or (*COMMIT) at offset 13 10751 10752/--- This should, and does, fail. In Perl, it does not, which I think is a 10753 bug because replacing the B in the pattern by (B|D) does make it fail. ---/ 10754 10755/A(*COMMIT)B/+K 10756 ACABX 10757No match 10758 10759/--- These should be different, but in Perl 5.11 are not, which I think 10760 is a bug in Perl. ---/ 10761 10762/A(*THEN)B|A(*THEN)C/K 10763 AC 10764 0: AC 10765 10766/A(*PRUNE)B|A(*PRUNE)C/K 10767 AC 10768No match 10769 10770/--- A whole lot of tests of verbs with arguments are here rather than in test 10771 11 because Perl doesn't seem to follow its specification entirely 10772 correctly. ---/ 10773 10774/--- Perl 5.11 sets $REGERROR on the AC failure case here; PCRE does not. It is 10775 not clear how Perl defines "involved in the failure of the match". ---/ 10776 10777/^(A(*THEN:A)B|C(*THEN:B)D)/K 10778 AB 10779 0: AB 10780 1: AB 10781 CD 10782 0: CD 10783 1: CD 10784 ** Failers 10785No match 10786 AC 10787No match 10788 CB 10789No match, mark = B 10790 10791/--- Check the use of names for success and failure. PCRE doesn't show these 10792names for success, though Perl does, contrary to its spec. ---/ 10793 10794/^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K 10795 AB 10796 0: AB 10797 1: AB 10798 CD 10799 0: CD 10800 1: CD 10801 ** Failers 10802No match 10803 AC 10804No match, mark = A 10805 CB 10806No match, mark = B 10807 10808/--- An empty name does not pass back an empty string. It is the same as if no 10809name were given. ---/ 10810 10811/^(A(*PRUNE:)B|C(*PRUNE:B)D)/K 10812 AB 10813 0: AB 10814 1: AB 10815 CD 10816 0: CD 10817 1: CD 10818 10819/--- PRUNE goes to next bumpalong; COMMIT does not. ---/ 10820 10821/A(*PRUNE:A)B/K 10822 ACAB 10823 0: AB 10824 10825/(*MARK:A)(*PRUNE:B)(C|X)/K 10826 C 10827 0: C 10828 1: C 10829MK: A 10830 D 10831No match, mark = B 10832 10833/(*MARK:A)(*THEN:B)(C|X)/K 10834 C 10835 0: C 10836 1: C 10837MK: A 10838 D 10839No match, mark = B 10840 10841/--- This should fail, as the skip causes a bump to offset 3 (the skip) ---/ 10842 10843/A(*MARK:A)A+(*SKIP)(B|Z) | AC/xK 10844 AAAC 10845No match 10846 10847/--- Same --/ 10848 10849/A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xK 10850 AAAC 10851No match 10852 10853/--- This should fail; the SKIP advances by one, but when we get to AC, the 10854 PRUNE kills it. ---/ 10855 10856/A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xK 10857 AAAC 10858No match 10859 10860/A(*:A)A+(*SKIP)(B|Z) | AC/xK 10861 AAAC 10862No match 10863 10864/--- This should fail, as a null name is the same as no name ---/ 10865 10866/A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xK 10867 AAAC 10868No match 10869 10870/--- This fails in PCRE, and I think that is in accordance with Perl's 10871 documentation, though in Perl it succeeds. ---/ 10872 10873/A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xK 10874 AAAC 10875No match 10876 10877/--- Mark names can be duplicated ---/ 10878 10879/A(*:A)B|X(*:A)Y/K 10880 AABC 10881 0: AB 10882MK: A 10883 XXYZ 10884 0: XY 10885MK: A 10886 10887/^A(*:A)B|^X(*:A)Y/K 10888 ** Failers 10889No match 10890 XAQQ 10891No match, mark = A 10892 10893/--- A check on what happens after hitting a mark and them bumping along to 10894something that does not even start. Perl reports tags after the failures here, 10895though it does not when the individual letters are made into something 10896more complicated. ---/ 10897 10898/A(*:A)B|XX(*:B)Y/K 10899 AABC 10900 0: AB 10901MK: A 10902 XXYZ 10903 0: XXY 10904MK: B 10905 ** Failers 10906No match 10907 XAQQ 10908No match 10909 XAQQXZZ 10910No match 10911 AXQQQ 10912No match 10913 AXXQQQ 10914No match 10915 10916/--- COMMIT at the start of a pattern should be the same as an anchor. Perl 10917optimizations defeat this. So does the PCRE optimization unless we disable it 10918with \Y. ---/ 10919 10920/(*COMMIT)ABC/ 10921 ABCDEFG 10922 0: ABC 10923 ** Failers 10924No match 10925 DEFGABC\Y 10926No match 10927 10928/--- Repeat some tests with added studying. ---/ 10929 10930/A(*COMMIT)B/+KS 10931 ACABX 10932No match 10933 10934/A(*THEN)B|A(*THEN)C/KS 10935 AC 10936 0: AC 10937 10938/A(*PRUNE)B|A(*PRUNE)C/KS 10939 AC 10940No match 10941 10942/^(A(*THEN:A)B|C(*THEN:B)D)/KS 10943 AB 10944 0: AB 10945 1: AB 10946 CD 10947 0: CD 10948 1: CD 10949 ** Failers 10950No match 10951 AC 10952No match 10953 CB 10954No match, mark = B 10955 10956/^(A(*PRUNE:A)B|C(*PRUNE:B)D)/KS 10957 AB 10958 0: AB 10959 1: AB 10960 CD 10961 0: CD 10962 1: CD 10963 ** Failers 10964No match 10965 AC 10966No match, mark = A 10967 CB 10968No match, mark = B 10969 10970/^(A(*PRUNE:)B|C(*PRUNE:B)D)/KS 10971 AB 10972 0: AB 10973 1: AB 10974 CD 10975 0: CD 10976 1: CD 10977 10978/A(*PRUNE:A)B/KS 10979 ACAB 10980 0: AB 10981 10982/(*MARK:A)(*PRUNE:B)(C|X)/KS 10983 C 10984 0: C 10985 1: C 10986MK: A 10987 D 10988No match 10989 10990/(*MARK:A)(*THEN:B)(C|X)/KS 10991 C 10992 0: C 10993 1: C 10994MK: A 10995 D 10996No match 10997 10998/A(*MARK:A)A+(*SKIP)(B|Z) | AC/xKS 10999 AAAC 11000No match 11001 11002/A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xKS 11003 AAAC 11004No match 11005 11006/A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xKS 11007 AAAC 11008No match 11009 11010/A(*:A)A+(*SKIP)(B|Z) | AC/xKS 11011 AAAC 11012No match 11013 11014/A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xKS 11015 AAAC 11016No match 11017 11018/A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xKS 11019 AAAC 11020No match 11021 11022/A(*:A)B|XX(*:B)Y/KS 11023 AABC 11024 0: AB 11025MK: A 11026 XXYZ 11027 0: XXY 11028MK: B 11029 ** Failers 11030No match 11031 XAQQ 11032No match 11033 XAQQXZZ 11034No match 11035 AXQQQ 11036No match 11037 AXXQQQ 11038No match 11039 11040/(*COMMIT)ABC/ 11041 ABCDEFG 11042 0: ABC 11043 ** Failers 11044No match 11045 DEFGABC\Y 11046No match 11047 11048/^(ab (c+(*THEN)cd) | xyz)/x 11049 abcccd 11050No match 11051 11052/^(ab (c+(*PRUNE)cd) | xyz)/x 11053 abcccd 11054No match 11055 11056/^(ab (c+(*FAIL)cd) | xyz)/x 11057 abcccd 11058No match 11059 11060/--- Perl 5.11 gets some of these wrong ---/ 11061 11062/(?>.(*ACCEPT))*?5/ 11063 abcde 11064 0: a 11065 11066/(.(*ACCEPT))*?5/ 11067 abcde 11068 0: a 11069 1: a 11070 11071/(.(*ACCEPT))5/ 11072 abcde 11073 0: a 11074 1: a 11075 11076/(.(*ACCEPT))*5/ 11077 abcde 11078 0: a 11079 1: a 11080 11081/A\NB./BZ 11082------------------------------------------------------------------ 11083 Bra 11084 A 11085 Any 11086 B 11087 Any 11088 Ket 11089 End 11090------------------------------------------------------------------ 11091 ACBD 11092 0: ACBD 11093 *** Failers 11094No match 11095 A\nB 11096No match 11097 ACB\n 11098No match 11099 11100/A\NB./sBZ 11101------------------------------------------------------------------ 11102 Bra 11103 A 11104 Any 11105 B 11106 AllAny 11107 Ket 11108 End 11109------------------------------------------------------------------ 11110 ACBD 11111 0: ACBD 11112 ACB\n 11113 0: ACB\x0a 11114 *** Failers 11115No match 11116 A\nB 11117No match 11118 11119/A\NB/<crlf> 11120 A\nB 11121 0: A\x0aB 11122 A\rB 11123 0: A\x0dB 11124 ** Failers 11125No match 11126 A\r\nB 11127No match 11128 11129/\R+b/BZ 11130------------------------------------------------------------------ 11131 Bra 11132 \R++ 11133 b 11134 Ket 11135 End 11136------------------------------------------------------------------ 11137 11138/\R+\n/BZ 11139------------------------------------------------------------------ 11140 Bra 11141 \R+ 11142 \x0a 11143 Ket 11144 End 11145------------------------------------------------------------------ 11146 11147/\R+\d/BZ 11148------------------------------------------------------------------ 11149 Bra 11150 \R++ 11151 \d 11152 Ket 11153 End 11154------------------------------------------------------------------ 11155 11156/\d*\R/BZ 11157------------------------------------------------------------------ 11158 Bra 11159 \d*+ 11160 \R 11161 Ket 11162 End 11163------------------------------------------------------------------ 11164 11165/\s*\R/BZ 11166------------------------------------------------------------------ 11167 Bra 11168 \s*+ 11169 \R 11170 Ket 11171 End 11172------------------------------------------------------------------ 11173 11174/-- Perl treats this one differently, not failing the second string. I believe 11175 that is a bug in Perl. --/ 11176 11177/^((abc|abcx)(*THEN)y|abcd)/ 11178 abcd 11179 0: abcd 11180 1: abcd 11181 *** Failers 11182No match 11183 abcxy 11184No match 11185 11186/(?<=abc)def/ 11187 abc\P\P 11188Partial match: abc 11189 11190/abc$/ 11191 abc 11192 0: abc 11193 abc\P 11194 0: abc 11195 abc\P\P 11196Partial match: abc 11197 11198/abc$/m 11199 abc 11200 0: abc 11201 abc\n 11202 0: abc 11203 abc\P\P 11204Partial match: abc 11205 abc\n\P\P 11206 0: abc 11207 abc\P 11208 0: abc 11209 abc\n\P 11210 0: abc 11211 11212/abc\z/ 11213 abc 11214 0: abc 11215 abc\P 11216 0: abc 11217 abc\P\P 11218Partial match: abc 11219 11220/abc\Z/ 11221 abc 11222 0: abc 11223 abc\P 11224 0: abc 11225 abc\P\P 11226Partial match: abc 11227 11228/abc\b/ 11229 abc 11230 0: abc 11231 abc\P 11232 0: abc 11233 abc\P\P 11234Partial match: abc 11235 11236/abc\B/ 11237 abc 11238No match 11239 abc\P 11240Partial match: abc 11241 abc\P\P 11242Partial match: abc 11243 11244/.+/ 11245 abc\>0 11246 0: abc 11247 abc\>1 11248 0: bc 11249 abc\>2 11250 0: c 11251 abc\>3 11252No match 11253 abc\>4 11254Error -24 11255 abc\>-4 11256Error -24 11257 11258/^\cģ/ 11259Failed: \c must be followed by an ASCII character at offset 3 11260 11261/(?P<abn>(?P=abn)xxx)/BZ 11262------------------------------------------------------------------ 11263 Bra 11264 Once 11265 CBra 1 11266 \1 11267 xxx 11268 Ket 11269 Ket 11270 Ket 11271 End 11272------------------------------------------------------------------ 11273 11274/(a\1z)/BZ 11275------------------------------------------------------------------ 11276 Bra 11277 Once 11278 CBra 1 11279 a 11280 \1 11281 z 11282 Ket 11283 Ket 11284 Ket 11285 End 11286------------------------------------------------------------------ 11287 11288/(?P<abn>(?P=abn)(?<badstufxxx)/BZ 11289Failed: syntax error in subpattern name (missing terminator) at offset 29 11290 11291/(?P<abn>(?P=axn)xxx)/BZ 11292Failed: reference to non-existent subpattern at offset 15 11293 11294/(?P<abn>(?P=axn)xxx)(?<axn>yy)/BZ 11295------------------------------------------------------------------ 11296 Bra 11297 CBra 1 11298 \2 11299 xxx 11300 Ket 11301 CBra 2 11302 yy 11303 Ket 11304 Ket 11305 End 11306------------------------------------------------------------------ 11307 11308/-- End of testinput2 --/ 11309