1# This set of tests is not Perl-compatible. It checks on special features 2# of PCRE2's API, error diagnostics, and the compiled code of some patterns. 3# It also checks the non-Perl syntax that PCRE2 supports (Python, .NET, 4# Oniguruma). There are also some tests where PCRE2 and Perl differ, 5# either because PCRE2 can't be compatible, or there is a possible Perl 6# bug. 7 8# NOTE: This is a non-UTF set of tests. When UTF support is needed, use 9# test 5. 10 11#forbid_utf 12#newline_default lf any anycrlf 13 14# Test binary zeroes in the pattern 15 16# /a\0B/ where 0 is a binary zero 17/61 5c 00 62/B,hex 18------------------------------------------------------------------ 19 Bra 20 a\x00b 21 Ket 22 End 23------------------------------------------------------------------ 24 a\x{0}b 25 0: a\x00b 26 27# /a0b/ where 0 is a binary zero 28/61 00 62/B,hex 29------------------------------------------------------------------ 30 Bra 31 a\x00b 32 Ket 33 End 34------------------------------------------------------------------ 35 a\x{0}b 36 0: a\x00b 37 38# /(?#B0C)DE/ where 0 is a binary zero 39/28 3f 23 42 00 43 29 44 45/B,hex 40------------------------------------------------------------------ 41 Bra 42 DE 43 Ket 44 End 45------------------------------------------------------------------ 46 DE 47 0: DE 48 49/(a)b|/I 50Capture group count = 1 51May match empty string 52Subject length lower bound = 0 53 54/abc/I 55Capture group count = 0 56First code unit = 'a' 57Last code unit = 'c' 58Subject length lower bound = 3 59 abc 60 0: abc 61 defabc 62 0: abc 63 abc\=anchored 64 0: abc 65\= Expect no match 66 defabc\=anchored 67No match 68 ABC 69No match 70 71/^abc/I 72Capture group count = 0 73Compile options: <none> 74Overall options: anchored 75First code unit = 'a' 76Subject length lower bound = 3 77 abc 78 0: abc 79 abc\=anchored 80 0: abc 81\= Expect no match 82 defabc 83No match 84 defabc\=anchored 85No match 86 87/a+bc/I 88Capture group count = 0 89First code unit = 'a' 90Last code unit = 'c' 91Subject length lower bound = 3 92 93/a*bc/I 94Capture group count = 0 95Starting code units: a b 96Last code unit = 'c' 97Subject length lower bound = 2 98 99/a{3}bc/I 100Capture group count = 0 101First code unit = 'a' 102Last code unit = 'c' 103Subject length lower bound = 5 104 105/(abc|a+z)/I 106Capture group count = 1 107First code unit = 'a' 108Subject length lower bound = 2 109 110/^abc$/I 111Capture group count = 0 112Compile options: <none> 113Overall options: anchored 114First code unit = 'a' 115Subject length lower bound = 3 116 abc 117 0: abc 118\= Expect no match 119 def\nabc 120No match 121 122/ab\idef/ 123Failed: error 103 at offset 3: unrecognized character follows \ 124 125/(?X)ab\idef/ 126Failed: error 111 at offset 2: unrecognized character after (? or (?- 127 128/x{5,4}/ 129Failed: error 104 at offset 5: numbers out of order in {} quantifier 130 131/z{65536}/ 132Failed: error 105 at offset 7: number too big in {} quantifier 133 134/[abcd/ 135Failed: error 106 at offset 5: missing terminating ] for character class 136 137/[\B]/B 138Failed: error 107 at offset 2: escape sequence is invalid in character class 139 140/[\R]/B 141Failed: error 107 at offset 2: escape sequence is invalid in character class 142 143/[\X]/B 144Failed: error 107 at offset 2: escape sequence is invalid in character class 145 146/[z-a]/ 147Failed: error 108 at offset 3: range out of order in character class 148 149/^*/ 150Failed: error 109 at offset 1: quantifier does not follow a repeatable item 151 152/(abc/ 153Failed: error 114 at offset 4: missing closing parenthesis 154 155/(?# abc/ 156Failed: error 118 at offset 7: missing ) after (?# comment 157 158/(?z)abc/ 159Failed: error 111 at offset 2: unrecognized character after (? or (?- 160 161/.*b/I 162Capture group count = 0 163First code unit at start or follows newline 164Last code unit = 'b' 165Subject length lower bound = 1 166 167/.*?b/I 168Capture group count = 0 169First code unit at start or follows newline 170Last code unit = 'b' 171Subject length lower bound = 1 172 173/cat|dog|elephant/I 174Capture group count = 0 175Starting code units: c d e 176Subject length lower bound = 3 177 this sentence eventually mentions a cat 178 0: cat 179 this sentences rambles on and on for a while and then reaches elephant 180 0: elephant 181 182/cat|dog|elephant/I 183Capture group count = 0 184Starting code units: c d e 185Subject length lower bound = 3 186 this sentence eventually mentions a cat 187 0: cat 188 this sentences rambles on and on for a while and then reaches elephant 189 0: elephant 190 191/cat|dog|elephant/Ii 192Capture group count = 0 193Options: caseless 194Starting code units: C D E c d e 195Subject length lower bound = 3 196 this sentence eventually mentions a CAT cat 197 0: CAT 198 this sentences rambles on and on for a while to elephant ElePhant 199 0: elephant 200 201/a|[bcd]/I 202Capture group count = 0 203Starting code units: a b c d 204Subject length lower bound = 1 205 206/(a|[^\dZ])/I 207Capture group count = 1 208Starting code units: \x00 \x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 \x09 \x0a 209 \x0b \x0c \x0d \x0e \x0f \x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17 \x18 \x19 210 \x1a \x1b \x1c \x1d \x1e \x1f \x20 ! " # $ % & ' ( ) * + , - . / : ; < = > 211 ? @ 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 212 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 213 \x84 \x85 \x86 \x87 \x88 \x89 \x8a \x8b \x8c \x8d \x8e \x8f \x90 \x91 \x92 214 \x93 \x94 \x95 \x96 \x97 \x98 \x99 \x9a \x9b \x9c \x9d \x9e \x9f \xa0 \xa1 215 \xa2 \xa3 \xa4 \xa5 \xa6 \xa7 \xa8 \xa9 \xaa \xab \xac \xad \xae \xaf \xb0 216 \xb1 \xb2 \xb3 \xb4 \xb5 \xb6 \xb7 \xb8 \xb9 \xba \xbb \xbc \xbd \xbe \xbf 217 \xc0 \xc1 \xc2 \xc3 \xc4 \xc5 \xc6 \xc7 \xc8 \xc9 \xca \xcb \xcc \xcd \xce 218 \xcf \xd0 \xd1 \xd2 \xd3 \xd4 \xd5 \xd6 \xd7 \xd8 \xd9 \xda \xdb \xdc \xdd 219 \xde \xdf \xe0 \xe1 \xe2 \xe3 \xe4 \xe5 \xe6 \xe7 \xe8 \xe9 \xea \xeb \xec 220 \xed \xee \xef \xf0 \xf1 \xf2 \xf3 \xf4 \xf5 \xf6 \xf7 \xf8 \xf9 \xfa \xfb 221 \xfc \xfd \xfe \xff 222Subject length lower bound = 1 223 224/(a|b)*[\s]/I 225Capture group count = 1 226Starting code units: \x09 \x0a \x0b \x0c \x0d \x20 a b 227Subject length lower bound = 1 228 229/(ab\2)/ 230Failed: error 115 at offset 4: reference to non-existent subpattern 231 232/{4,5}abc/ 233Failed: error 109 at offset 4: quantifier does not follow a repeatable item 234 235/(a)(b)(c)\2/I 236Capture group count = 3 237Max back reference = 2 238First code unit = 'a' 239Last code unit = 'c' 240Subject length lower bound = 4 241 abcb 242 0: abcb 243 1: a 244 2: b 245 3: c 246 abcb\=ovector=0 247 0: abcb 248 1: a 249 2: b 250 3: c 251 abcb\=ovector=1 252Matched, but too many substrings 253 0: abcb 254 abcb\=ovector=2 255Matched, but too many substrings 256 0: abcb 257 1: a 258 abcb\=ovector=3 259Matched, but too many substrings 260 0: abcb 261 1: a 262 2: b 263 abcb\=ovector=4 264 0: abcb 265 1: a 266 2: b 267 3: c 268 269/(a)bc|(a)(b)\2/I 270Capture group count = 3 271Max back reference = 2 272First code unit = 'a' 273Subject length lower bound = 3 274 abc 275 0: abc 276 1: a 277 abc\=ovector=0 278 0: abc 279 1: a 280 abc\=ovector=1 281Matched, but too many substrings 282 0: abc 283 abc\=ovector=2 284 0: abc 285 1: a 286 aba 287 0: aba 288 1: <unset> 289 2: a 290 3: b 291 aba\=ovector=0 292 0: aba 293 1: <unset> 294 2: a 295 3: b 296 aba\=ovector=1 297Matched, but too many substrings 298 0: aba 299 aba\=ovector=2 300Matched, but too many substrings 301 0: aba 302 1: <unset> 303 aba\=ovector=3 304Matched, but too many substrings 305 0: aba 306 1: <unset> 307 2: a 308 aba\=ovector=4 309 0: aba 310 1: <unset> 311 2: a 312 3: b 313 314/abc$/I,dollar_endonly 315Capture group count = 0 316Options: dollar_endonly 317First code unit = 'a' 318Last code unit = 'c' 319Subject length lower bound = 3 320 abc 321 0: abc 322\= Expect no match 323 abc\n 324No match 325 abc\ndef 326No match 327 328/(a)(b)(c)(d)(e)\6/ 329Failed: error 115 at offset 16: reference to non-existent subpattern 330 331/the quick brown fox/I 332Capture group count = 0 333First code unit = 't' 334Last code unit = 'x' 335Subject length lower bound = 19 336 the quick brown fox 337 0: the quick brown fox 338 this is a line with the quick brown fox 339 0: the quick brown fox 340 341/the quick brown fox/I,anchored 342Capture group count = 0 343Options: anchored 344First code unit = 't' 345Subject length lower bound = 19 346 the quick brown fox 347 0: the quick brown fox 348\= Expect no match 349 this is a line with the quick brown fox 350No match 351 352/ab(?z)cd/ 353Failed: error 111 at offset 4: unrecognized character after (? or (?- 354 355/^abc|def/I 356Capture group count = 0 357Starting code units: a d 358Subject length lower bound = 3 359 abcdef 360 0: abc 361 abcdef\=notbol 362 0: def 363 364/.*((abc)$|(def))/I 365Capture group count = 3 366First code unit at start or follows newline 367Subject length lower bound = 3 368 defabc 369 0: defabc 370 1: abc 371 2: abc 372 defabc\=noteol 373 0: def 374 1: def 375 2: <unset> 376 3: def 377 378/)/ 379Failed: error 122 at offset 0: unmatched closing parenthesis 380 381/a[]b/ 382Failed: error 106 at offset 4: missing terminating ] for character class 383 384/[^aeiou ]{3,}/I 385Capture group count = 0 386Starting code units: \x00 \x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 \x09 \x0a 387 \x0b \x0c \x0d \x0e \x0f \x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17 \x18 \x19 388 \x1a \x1b \x1c \x1d \x1e \x1f ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 389 7 8 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 [ 390 \ ] ^ _ ` b c d f g h j k l m n p q r s t v w x y z { | } ~ \x7f \x80 \x81 391 \x82 \x83 \x84 \x85 \x86 \x87 \x88 \x89 \x8a \x8b \x8c \x8d \x8e \x8f \x90 392 \x91 \x92 \x93 \x94 \x95 \x96 \x97 \x98 \x99 \x9a \x9b \x9c \x9d \x9e \x9f 393 \xa0 \xa1 \xa2 \xa3 \xa4 \xa5 \xa6 \xa7 \xa8 \xa9 \xaa \xab \xac \xad \xae 394 \xaf \xb0 \xb1 \xb2 \xb3 \xb4 \xb5 \xb6 \xb7 \xb8 \xb9 \xba \xbb \xbc \xbd 395 \xbe \xbf \xc0 \xc1 \xc2 \xc3 \xc4 \xc5 \xc6 \xc7 \xc8 \xc9 \xca \xcb \xcc 396 \xcd \xce \xcf \xd0 \xd1 \xd2 \xd3 \xd4 \xd5 \xd6 \xd7 \xd8 \xd9 \xda \xdb 397 \xdc \xdd \xde \xdf \xe0 \xe1 \xe2 \xe3 \xe4 \xe5 \xe6 \xe7 \xe8 \xe9 \xea 398 \xeb \xec \xed \xee \xef \xf0 \xf1 \xf2 \xf3 \xf4 \xf5 \xf6 \xf7 \xf8 \xf9 399 \xfa \xfb \xfc \xfd \xfe \xff 400Subject length lower bound = 3 401 co-processors, and for 402 0: -pr 403 404/<.*>/I 405Capture group count = 0 406First code unit = '<' 407Last code unit = '>' 408Subject length lower bound = 2 409 abc<def>ghi<klm>nop 410 0: <def>ghi<klm> 411 412/<.*?>/I 413Capture group count = 0 414First code unit = '<' 415Last code unit = '>' 416Subject length lower bound = 2 417 abc<def>ghi<klm>nop 418 0: <def> 419 420/<.*>/I,ungreedy 421Capture group count = 0 422Options: ungreedy 423First code unit = '<' 424Last code unit = '>' 425Subject length lower bound = 2 426 abc<def>ghi<klm>nop 427 0: <def> 428 429/(?U)<.*>/I 430Capture group count = 0 431First code unit = '<' 432Last code unit = '>' 433Subject length lower bound = 2 434 abc<def>ghi<klm>nop 435 0: <def> 436 437/<.*?>/I,ungreedy 438Capture group count = 0 439Options: ungreedy 440First code unit = '<' 441Last code unit = '>' 442Subject length lower bound = 2 443 abc<def>ghi<klm>nop 444 0: <def>ghi<klm> 445 446/={3,}/I,ungreedy 447Capture group count = 0 448Options: ungreedy 449First code unit = '=' 450Last code unit = '=' 451Subject length lower bound = 3 452 abc========def 453 0: === 454 455/(?U)={3,}?/I 456Capture group count = 0 457First code unit = '=' 458Last code unit = '=' 459Subject length lower bound = 3 460 abc========def 461 0: ======== 462 463/(?<!bar|cattle)foo/I 464Capture group count = 0 465Max lookbehind = 6 466First code unit = 'f' 467Last code unit = 'o' 468Subject length lower bound = 3 469 foo 470 0: foo 471 catfoo 472 0: foo 473\= Expect no match 474 the barfoo 475No match 476 and cattlefoo 477No match 478 479/abc(?<=a+)b/ 480Failed: error 125 at offset 3: lookbehind assertion is not fixed length 481 482/12345(?<=aaa|b{0,3})b/ 483Failed: error 125 at offset 5: lookbehind assertion is not fixed length 484 485/(?<!(foo)a\1)bar/ 486 487/(?i)abc/I 488Capture group count = 0 489First code unit = 'a' (caseless) 490Last code unit = 'c' (caseless) 491Subject length lower bound = 3 492 493/(a|(?m)a)/I 494Capture group count = 1 495First code unit = 'a' 496Subject length lower bound = 1 497 498/(?i)^1234/I 499Capture group count = 0 500Compile options: <none> 501Overall options: anchored 502First code unit = '1' 503Subject length lower bound = 4 504 505/(^b|(?i)^d)/I 506Capture group count = 1 507Compile options: <none> 508Overall options: anchored 509Starting code units: D b d 510Subject length lower bound = 1 511 512/(?s).*/I 513Capture group count = 0 514May match empty string 515Compile options: <none> 516Overall options: anchored 517Subject length lower bound = 0 518 519/[abcd]/I 520Capture group count = 0 521Starting code units: a b c d 522Subject length lower bound = 1 523 524/(?i)[abcd]/I 525Capture group count = 0 526Starting code units: A B C D a b c d 527Subject length lower bound = 1 528 529/(?m)[xy]|(b|c)/I 530Capture group count = 1 531Starting code units: b c x y 532Subject length lower bound = 1 533 534/(^a|^b)/Im 535Capture group count = 1 536Options: multiline 537First code unit at start or follows newline 538Subject length lower bound = 1 539 540/(?i)(^a|^b)/Im 541Capture group count = 1 542Options: multiline 543First code unit at start or follows newline 544Subject length lower bound = 1 545 546/(a)(?(1)a|b|c)/ 547Failed: error 127 at offset 3: conditional subpattern contains more than two branches 548 549/(?(?=a)a|b|c)/ 550Failed: error 127 at offset 0: conditional subpattern contains more than two branches 551 552/(?(1a)/ 553Failed: error 124 at offset 4: missing closing parenthesis for condition 554 555/(?(1a))/ 556Failed: error 124 at offset 4: missing closing parenthesis for condition 557 558/(?(?i))/ 559Failed: error 128 at offset 2: assertion expected after (?( or (?(?C) 560 561/(?(abc))/ 562Failed: error 115 at offset 3: reference to non-existent subpattern 563 564/(?(?<ab))/ 565Failed: error 128 at offset 2: assertion expected after (?( or (?(?C) 566 567/((?s)blah)\s+\1/I 568Capture group count = 1 569Max back reference = 1 570First code unit = 'b' 571Last code unit = 'h' 572Subject length lower bound = 9 573 574/((?i)blah)\s+\1/I 575Capture group count = 1 576Max back reference = 1 577First code unit = 'b' (caseless) 578Last code unit = 'h' (caseless) 579Subject length lower bound = 9 580 581/((?i)b)/IB 582------------------------------------------------------------------ 583 Bra 584 CBra 1 585 /i b 586 Ket 587 Ket 588 End 589------------------------------------------------------------------ 590Capture group count = 1 591First code unit = 'b' (caseless) 592Subject length lower bound = 1 593 594/(a*b|(?i:c*(?-i)d))/I 595Capture group count = 1 596Starting code units: C a b c d 597Subject length lower bound = 1 598 599/a$/I 600Capture group count = 0 601First code unit = 'a' 602Subject length lower bound = 1 603 a 604 0: a 605 a\n 606 0: a 607\= Expect no match 608 a\=noteol 609No match 610 a\n\=noteol 611No match 612 613/a$/Im 614Capture group count = 0 615Options: multiline 616First code unit = 'a' 617Subject length lower bound = 1 618 a 619 0: a 620 a\n 621 0: a 622 a\n\=noteol 623 0: a 624\= Expect no match 625 a\=noteol 626No match 627 628/\Aabc/Im 629Capture group count = 0 630Max lookbehind = 1 631Compile options: multiline 632Overall options: anchored multiline 633First code unit = 'a' 634Subject length lower bound = 3 635 636/^abc/Im 637Capture group count = 0 638Options: multiline 639First code unit at start or follows newline 640Last code unit = 'c' 641Subject length lower bound = 3 642 643/^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/I 644Capture group count = 5 645Compile options: <none> 646Overall options: anchored 647First code unit = 'a' 648Subject length lower bound = 3 649 aaaaabbbbbcccccdef 650 0: aaaaabbbbbcccccdef 651 1: aaaaabbbbbcccccdef 652 2: aaaaa 653 3: b 654 4: bbbbccccc 655 5: def 656 657/(?<=foo)[ab]/I 658Capture group count = 0 659Max lookbehind = 3 660Starting code units: a b 661Subject length lower bound = 1 662 663/(?<!foo)(alpha|omega)/I 664Capture group count = 1 665Max lookbehind = 3 666Starting code units: a o 667Last code unit = 'a' 668Subject length lower bound = 5 669 670/(?!alphabet)[ab]/I 671Capture group count = 0 672Starting code units: a b 673Subject length lower bound = 1 674 675/(?<=foo\n)^bar/Im 676Capture group count = 0 677Max lookbehind = 4 678Contains explicit CR or LF match 679Options: multiline 680Last code unit = 'r' 681Subject length lower bound = 3 682 foo\nbarbar 683 0: bar 684\= Expect no match 685 rhubarb 686No match 687 barbell 688No match 689 abc\nbarton 690No match 691 692/^(?<=foo\n)bar/Im 693Capture group count = 0 694Max lookbehind = 4 695Contains explicit CR or LF match 696Options: multiline 697First code unit at start or follows newline 698Last code unit = 'r' 699Subject length lower bound = 3 700 foo\nbarbar 701 0: bar 702\= Expect no match 703 rhubarb 704No match 705 barbell 706No match 707 abc\nbarton 708No match 709 710/(?>^abc)/Im 711Capture group count = 0 712Options: multiline 713First code unit at start or follows newline 714Last code unit = 'c' 715Subject length lower bound = 3 716 abc 717 0: abc 718 def\nabc 719 0: abc 720\= Expect no match 721 defabc 722No match 723 724/(?<=ab(c+)d)ef/ 725Failed: error 125 at offset 0: lookbehind assertion is not fixed length 726 727/(?<=ab(?<=c+)d)ef/ 728Failed: error 125 at offset 6: lookbehind assertion is not fixed length 729 730/(?<=ab(c|de)f)g/ 731Failed: error 125 at offset 0: lookbehind assertion is not fixed length 732 733/The next three are in testinput2 because they have variable length branches/ 734 735/(?<=bullock|donkey)-cart/I 736Capture group count = 0 737Max lookbehind = 7 738First code unit = '-' 739Last code unit = 't' 740Subject length lower bound = 5 741 the bullock-cart 742 0: -cart 743 a donkey-cart race 744 0: -cart 745\= Expect no match 746 cart 747No match 748 horse-and-cart 749No match 750 751/(?<=ab(?i)x|y|z)/I 752Capture group count = 0 753Max lookbehind = 3 754May match empty string 755Subject length lower bound = 0 756 757/(?>.*)(?<=(abcd)|(xyz))/I 758Capture group count = 2 759Max lookbehind = 4 760May match empty string 761Subject length lower bound = 0 762 alphabetabcd 763 0: alphabetabcd 764 1: abcd 765 endingxyz 766 0: endingxyz 767 1: <unset> 768 2: xyz 769 770/(?<=ab(?i)x(?-i)y|(?i)z|b)ZZ/I 771Capture group count = 0 772Max lookbehind = 4 773First code unit = 'Z' 774Last code unit = 'Z' 775Subject length lower bound = 2 776 abxyZZ 777 0: ZZ 778 abXyZZ 779 0: ZZ 780 ZZZ 781 0: ZZ 782 zZZ 783 0: ZZ 784 bZZ 785 0: ZZ 786 BZZ 787 0: ZZ 788\= Expect no match 789 ZZ 790No match 791 abXYZZ 792No match 793 zzz 794No match 795 bzz 796No match 797 798/(?<!(foo)a)bar/I 799Capture group count = 1 800Max lookbehind = 4 801First code unit = 'b' 802Last code unit = 'r' 803Subject length lower bound = 3 804 bar 805 0: bar 806 foobbar 807 0: bar 808\= Expect no match 809 fooabar 810No match 811 812# Perl does not fail these two for the final subjects. 813 814/^(xa|=?\1a){2}$/ 815 xa=xaa 816 0: xa=xaa 817 1: =xaa 818\= Expect no match 819 xa=xaaa 820No match 821 822/^(xa|=?\1a)+$/ 823 xa=xaa 824 0: xa=xaa 825 1: =xaa 826\= Expect no match 827 xa=xaaa 828No match 829 830# These are syntax tests from Perl 5.005 831 832/a[b-a]/ 833Failed: error 108 at offset 4: range out of order in character class 834 835/a[]b/ 836Failed: error 106 at offset 4: missing terminating ] for character class 837 838/a[/ 839Failed: error 106 at offset 2: missing terminating ] for character class 840 841/*a/ 842Failed: error 109 at offset 0: quantifier does not follow a repeatable item 843 844/(*)b/ 845Failed: error 109 at offset 1: quantifier does not follow a repeatable item 846 847/abc)/ 848Failed: error 122 at offset 3: unmatched closing parenthesis 849 850/(abc/ 851Failed: error 114 at offset 4: missing closing parenthesis 852 853/a**/ 854Failed: error 109 at offset 2: quantifier does not follow a repeatable item 855 856/)(/ 857Failed: error 122 at offset 0: unmatched closing parenthesis 858 859/\1/ 860Failed: error 115 at offset 1: reference to non-existent subpattern 861 862/\2/ 863Failed: error 115 at offset 1: reference to non-existent subpattern 864 865/(a)|\2/ 866Failed: error 115 at offset 5: reference to non-existent subpattern 867 868/a[b-a]/Ii 869Failed: error 108 at offset 4: range out of order in character class 870 871/a[]b/Ii 872Failed: error 106 at offset 4: missing terminating ] for character class 873 874/a[/Ii 875Failed: error 106 at offset 2: missing terminating ] for character class 876 877/*a/Ii 878Failed: error 109 at offset 0: quantifier does not follow a repeatable item 879 880/(*)b/Ii 881Failed: error 109 at offset 1: quantifier does not follow a repeatable item 882 883/abc)/Ii 884Failed: error 122 at offset 3: unmatched closing parenthesis 885 886/(abc/Ii 887Failed: error 114 at offset 4: missing closing parenthesis 888 889/a**/Ii 890Failed: error 109 at offset 2: quantifier does not follow a repeatable item 891 892/)(/Ii 893Failed: error 122 at offset 0: unmatched closing parenthesis 894 895/:(?:/ 896Failed: error 114 at offset 4: missing closing parenthesis 897 898/(?<%)b/ 899Failed: error 162 at offset 3: subpattern name expected 900 901/a(?{)b/ 902Failed: error 111 at offset 3: unrecognized character after (? or (?- 903 904/a(?{{})b/ 905Failed: error 111 at offset 3: unrecognized character after (? or (?- 906 907/a(?{}})b/ 908Failed: error 111 at offset 3: unrecognized character after (? or (?- 909 910/a(?{"{"})b/ 911Failed: error 111 at offset 3: unrecognized character after (? or (?- 912 913/a(?{"{"}})b/ 914Failed: error 111 at offset 3: unrecognized character after (? or (?- 915 916/(?(1?)a|b)/ 917Failed: error 124 at offset 4: missing closing parenthesis for condition 918 919/[a[:xyz:/ 920Failed: error 106 at offset 8: missing terminating ] for character class 921 922/(?<=x+)y/ 923Failed: error 125 at offset 0: lookbehind assertion is not fixed length 924 925/a{37,17}/ 926Failed: error 104 at offset 7: numbers out of order in {} quantifier 927 928/abc/\ 929Failed: error 101 at offset 4: \ at end of pattern 930 931/abc/\i 932Failed: error 101 at offset 4: \ at end of pattern 933 934/(a)bc(d)/I 935Capture group count = 2 936First code unit = 'a' 937Last code unit = 'd' 938Subject length lower bound = 4 939 abcd 940 0: abcd 941 1: a 942 2: d 943 abcd\=copy=2 944 0: abcd 945 1: a 946 2: d 947 2C d (1) 948 abcd\=copy=5 949 0: abcd 950 1: a 951 2: d 952Copy substring 5 failed (-49): unknown substring 953 954/(.{20})/I 955Capture group count = 1 956Subject length lower bound = 20 957 abcdefghijklmnopqrstuvwxyz 958 0: abcdefghijklmnopqrst 959 1: abcdefghijklmnopqrst 960 abcdefghijklmnopqrstuvwxyz\=copy=1 961 0: abcdefghijklmnopqrst 962 1: abcdefghijklmnopqrst 963 1C abcdefghijklmnopqrst (20) 964 abcdefghijklmnopqrstuvwxyz\=get=1 965 0: abcdefghijklmnopqrst 966 1: abcdefghijklmnopqrst 967 1G abcdefghijklmnopqrst (20) 968 969/(.{15})/I 970Capture group count = 1 971Subject length lower bound = 15 972 abcdefghijklmnopqrstuvwxyz 973 0: abcdefghijklmno 974 1: abcdefghijklmno 975 abcdefghijklmnopqrstuvwxyz\=copy=1,get=1 976 0: abcdefghijklmno 977 1: abcdefghijklmno 978 1C abcdefghijklmno (15) 979 1G abcdefghijklmno (15) 980 981/(.{16})/I 982Capture group count = 1 983Subject length lower bound = 16 984 abcdefghijklmnopqrstuvwxyz 985 0: abcdefghijklmnop 986 1: abcdefghijklmnop 987 abcdefghijklmnopqrstuvwxyz\=copy=1,get=1,getall 988 0: abcdefghijklmnop 989 1: abcdefghijklmnop 990 1C abcdefghijklmnop (16) 991 1G abcdefghijklmnop (16) 992 0L abcdefghijklmnop 993 1L abcdefghijklmnop 994 995/^(a|(bc))de(f)/I 996Capture group count = 3 997Compile options: <none> 998Overall options: anchored 999Starting code units: a b 1000Subject length lower bound = 4 1001 adef\=get=1,get=2,get=3,get=4,getall 1002 0: adef 1003 1: a 1004 2: <unset> 1005 3: f 1006 1G a (1) 1007Get substring 2 failed (-55): requested value is not set 1008 3G f (1) 1009Get substring 4 failed (-49): unknown substring 1010 0L adef 1011 1L a 1012 2L 1013 3L f 1014 bcdef\=get=1,get=2,get=3,get=4,getall 1015 0: bcdef 1016 1: bc 1017 2: bc 1018 3: f 1019 1G bc (2) 1020 2G bc (2) 1021 3G f (1) 1022Get substring 4 failed (-49): unknown substring 1023 0L bcdef 1024 1L bc 1025 2L bc 1026 3L f 1027 adefghijk\=copy=0 1028 0: adef 1029 1: a 1030 2: <unset> 1031 3: f 1032 0C adef (4) 1033 1034/^abc\00def/I 1035Capture group count = 0 1036Compile options: <none> 1037Overall options: anchored 1038First code unit = 'a' 1039Subject length lower bound = 7 1040 abc\00def\=copy=0,getall 1041 0: abc\x00def 1042 0C abc\x00def (7) 1043 0L abc\x00def 1044 1045/word ((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ 1046)((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ 1047)?)?)?)?)?)?)?)?)?otherword/I 1048Capture group count = 8 1049Contains explicit CR or LF match 1050First code unit = 'w' 1051Last code unit = 'd' 1052Subject length lower bound = 14 1053 1054/.*X/IB 1055------------------------------------------------------------------ 1056 Bra 1057 Any* 1058 X 1059 Ket 1060 End 1061------------------------------------------------------------------ 1062Capture group count = 0 1063First code unit at start or follows newline 1064Last code unit = 'X' 1065Subject length lower bound = 1 1066 1067/.*X/IBs 1068------------------------------------------------------------------ 1069 Bra 1070 AllAny* 1071 X 1072 Ket 1073 End 1074------------------------------------------------------------------ 1075Capture group count = 0 1076Compile options: dotall 1077Overall options: anchored dotall 1078Last code unit = 'X' 1079Subject length lower bound = 1 1080 1081/(.*X|^B)/IB 1082------------------------------------------------------------------ 1083 Bra 1084 CBra 1 1085 Any* 1086 X 1087 Alt 1088 ^ 1089 B 1090 Ket 1091 Ket 1092 End 1093------------------------------------------------------------------ 1094Capture group count = 1 1095First code unit at start or follows newline 1096Subject length lower bound = 1 1097 1098/(.*X|^B)/IBs 1099------------------------------------------------------------------ 1100 Bra 1101 CBra 1 1102 AllAny* 1103 X 1104 Alt 1105 ^ 1106 B 1107 Ket 1108 Ket 1109 End 1110------------------------------------------------------------------ 1111Capture group count = 1 1112Compile options: dotall 1113Overall options: anchored dotall 1114Subject length lower bound = 1 1115 1116/(?s)(.*X|^B)/IB 1117------------------------------------------------------------------ 1118 Bra 1119 CBra 1 1120 AllAny* 1121 X 1122 Alt 1123 ^ 1124 B 1125 Ket 1126 Ket 1127 End 1128------------------------------------------------------------------ 1129Capture group count = 1 1130Compile options: <none> 1131Overall options: anchored 1132Subject length lower bound = 1 1133 1134/(?s:.*X|^B)/IB 1135------------------------------------------------------------------ 1136 Bra 1137 Bra 1138 AllAny* 1139 X 1140 Alt 1141 ^ 1142 B 1143 Ket 1144 Ket 1145 End 1146------------------------------------------------------------------ 1147Capture group count = 0 1148Compile options: <none> 1149Overall options: anchored 1150Subject length lower bound = 1 1151 1152/\Biss\B/I,aftertext 1153Capture group count = 0 1154Max lookbehind = 1 1155First code unit = 'i' 1156Last code unit = 's' 1157Subject length lower bound = 3 1158 Mississippi 1159 0: iss 1160 0+ issippi 1161 1162/iss/I,aftertext,altglobal 1163Capture group count = 0 1164First code unit = 'i' 1165Last code unit = 's' 1166Subject length lower bound = 3 1167 Mississippi 1168 0: iss 1169 0+ issippi 1170 0: iss 1171 0+ ippi 1172 1173/\Biss\B/I,aftertext,altglobal 1174Capture group count = 0 1175Max lookbehind = 1 1176First code unit = 'i' 1177Last code unit = 's' 1178Subject length lower bound = 3 1179 Mississippi 1180 0: iss 1181 0+ issippi 1182 1183/\Biss\B/Ig,aftertext 1184Capture group count = 0 1185Max lookbehind = 1 1186First code unit = 'i' 1187Last code unit = 's' 1188Subject length lower bound = 3 1189 Mississippi 1190 0: iss 1191 0+ issippi 1192 0: iss 1193 0+ ippi 1194\= Expect no match 1195 Mississippi\=anchored 1196No match 1197 1198/(?<=[Ms])iss/Ig,aftertext 1199Capture group count = 0 1200Max lookbehind = 1 1201First code unit = 'i' 1202Last code unit = 's' 1203Subject length lower bound = 3 1204 Mississippi 1205 0: iss 1206 0+ issippi 1207 0: iss 1208 0+ ippi 1209 1210/(?<=[Ms])iss/I,aftertext,altglobal 1211Capture group count = 0 1212Max lookbehind = 1 1213First code unit = 'i' 1214Last code unit = 's' 1215Subject length lower bound = 3 1216 Mississippi 1217 0: iss 1218 0+ issippi 1219 1220/^iss/Ig,aftertext 1221Capture group count = 0 1222Compile options: <none> 1223Overall options: anchored 1224First code unit = 'i' 1225Subject length lower bound = 3 1226 ississippi 1227 0: iss 1228 0+ issippi 1229 1230/.*iss/Ig,aftertext 1231Capture group count = 0 1232First code unit at start or follows newline 1233Last code unit = 's' 1234Subject length lower bound = 3 1235 abciss\nxyzisspqr 1236 0: abciss 1237 0+ \x0axyzisspqr 1238 0: xyziss 1239 0+ pqr 1240 1241/.i./Ig,aftertext 1242Capture group count = 0 1243Last code unit = 'i' 1244Subject length lower bound = 3 1245 Mississippi 1246 0: Mis 1247 0+ sissippi 1248 0: sis 1249 0+ sippi 1250 0: sip 1251 0+ pi 1252 Mississippi\=anchored 1253 0: Mis 1254 0+ sissippi 1255 0: sis 1256 0+ sippi 1257 0: sip 1258 0+ pi 1259 Missouri river 1260 0: Mis 1261 0+ souri river 1262 0: ri 1263 0+ river 1264 0: riv 1265 0+ er 1266 Missouri river\=anchored 1267 0: Mis 1268 0+ souri river 1269 1270/^.is/Ig,aftertext 1271Capture group count = 0 1272Compile options: <none> 1273Overall options: anchored 1274Subject length lower bound = 3 1275 Mississippi 1276 0: Mis 1277 0+ sissippi 1278 1279/^ab\n/Ig,aftertext 1280Capture group count = 0 1281Contains explicit CR or LF match 1282Compile options: <none> 1283Overall options: anchored 1284First code unit = 'a' 1285Subject length lower bound = 3 1286 ab\nab\ncd 1287 0: ab\x0a 1288 0+ ab\x0acd 1289 1290/^ab\n/Igm,aftertext 1291Capture group count = 0 1292Contains explicit CR or LF match 1293Options: multiline 1294First code unit at start or follows newline 1295Last code unit = \x0a 1296Subject length lower bound = 3 1297 ab\nab\ncd 1298 0: ab\x0a 1299 0+ ab\x0acd 1300 0: ab\x0a 1301 0+ cd 1302 1303/^/gm,newline=any 1304 a\rb\nc\r\nxyz\=aftertext 1305 0: 1306 0+ a\x0db\x0ac\x0d\x0axyz 1307 0: 1308 0+ b\x0ac\x0d\x0axyz 1309 0: 1310 0+ c\x0d\x0axyz 1311 0: 1312 0+ xyz 1313 1314/abc/I 1315Capture group count = 0 1316First code unit = 'a' 1317Last code unit = 'c' 1318Subject length lower bound = 3 1319 1320/abc|bac/I 1321Capture group count = 0 1322Starting code units: a b 1323Last code unit = 'c' 1324Subject length lower bound = 3 1325 1326/(abc|bac)/I 1327Capture group count = 1 1328Starting code units: a b 1329Last code unit = 'c' 1330Subject length lower bound = 3 1331 1332/(abc|(c|dc))/I 1333Capture group count = 2 1334Starting code units: a c d 1335Last code unit = 'c' 1336Subject length lower bound = 1 1337 1338/(abc|(d|de)c)/I 1339Capture group count = 2 1340Starting code units: a d 1341Last code unit = 'c' 1342Subject length lower bound = 2 1343 1344/a*/I 1345Capture group count = 0 1346May match empty string 1347Subject length lower bound = 0 1348 1349/a+/I 1350Capture group count = 0 1351First code unit = 'a' 1352Subject length lower bound = 1 1353 1354/(baa|a+)/I 1355Capture group count = 1 1356Starting code units: a b 1357Last code unit = 'a' 1358Subject length lower bound = 1 1359 1360/a{0,3}/I 1361Capture group count = 0 1362May match empty string 1363Subject length lower bound = 0 1364 1365/baa{3,}/I 1366Capture group count = 0 1367First code unit = 'b' 1368Last code unit = 'a' 1369Subject length lower bound = 5 1370 1371/"([^\\"]+|\\.)*"/I 1372Capture group count = 1 1373First code unit = '"' 1374Last code unit = '"' 1375Subject length lower bound = 2 1376 1377/(abc|ab[cd])/I 1378Capture group count = 1 1379First code unit = 'a' 1380Subject length lower bound = 3 1381 1382/(a|.)/I 1383Capture group count = 1 1384Subject length lower bound = 1 1385 1386/a|ba|\w/I 1387Capture group count = 0 1388Starting code units: 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P 1389 Q R S T U V W X Y Z _ 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 1390Subject length lower bound = 1 1391 1392/abc(?=pqr)/I 1393Capture group count = 0 1394First code unit = 'a' 1395Last code unit = 'r' 1396Subject length lower bound = 3 1397 1398/...(?<=abc)/I 1399Capture group count = 0 1400Max lookbehind = 3 1401Subject length lower bound = 3 1402 1403/abc(?!pqr)/I 1404Capture group count = 0 1405First code unit = 'a' 1406Last code unit = 'c' 1407Subject length lower bound = 3 1408 1409/ab./I 1410Capture group count = 0 1411First code unit = 'a' 1412Last code unit = 'b' 1413Subject length lower bound = 3 1414 1415/ab[xyz]/I 1416Capture group count = 0 1417First code unit = 'a' 1418Last code unit = 'b' 1419Subject length lower bound = 3 1420 1421/abc*/I 1422Capture group count = 0 1423First code unit = 'a' 1424Last code unit = 'b' 1425Subject length lower bound = 2 1426 1427/ab.c*/I 1428Capture group count = 0 1429First code unit = 'a' 1430Last code unit = 'b' 1431Subject length lower bound = 3 1432 1433/a.c*/I 1434Capture group count = 0 1435First code unit = 'a' 1436Subject length lower bound = 2 1437 1438/.c*/I 1439Capture group count = 0 1440Subject length lower bound = 1 1441 1442/ac*/I 1443Capture group count = 0 1444First code unit = 'a' 1445Subject length lower bound = 1 1446 1447/(a.c*|b.c*)/I 1448Capture group count = 1 1449Starting code units: a b 1450Subject length lower bound = 2 1451 1452/a.c*|aba/I 1453Capture group count = 0 1454First code unit = 'a' 1455Subject length lower bound = 2 1456 1457/.+a/I 1458Capture group count = 0 1459Last code unit = 'a' 1460Subject length lower bound = 2 1461 1462/(?=abcda)a.*/I 1463Capture group count = 0 1464First code unit = 'a' 1465Last code unit = 'a' 1466Subject length lower bound = 2 1467 1468/(?=a)a.*/I 1469Capture group count = 0 1470First code unit = 'a' 1471Subject length lower bound = 1 1472 1473/a(b)*/I 1474Capture group count = 1 1475First code unit = 'a' 1476Subject length lower bound = 1 1477 1478/a\d*/I 1479Capture group count = 0 1480First code unit = 'a' 1481Subject length lower bound = 1 1482 1483/ab\d*/I 1484Capture group count = 0 1485First code unit = 'a' 1486Last code unit = 'b' 1487Subject length lower bound = 2 1488 1489/a(\d)*/I 1490Capture group count = 1 1491First code unit = 'a' 1492Subject length lower bound = 1 1493 1494/abcde{0,0}/I 1495Capture group count = 0 1496First code unit = 'a' 1497Last code unit = 'd' 1498Subject length lower bound = 4 1499 1500/ab\d+/I 1501Capture group count = 0 1502First code unit = 'a' 1503Last code unit = 'b' 1504Subject length lower bound = 3 1505 1506/a(?(1)b)(.)/I 1507Capture group count = 1 1508Max back reference = 1 1509First code unit = 'a' 1510Subject length lower bound = 2 1511 1512/a(?(1)bag|big)(.)/I 1513Capture group count = 1 1514Max back reference = 1 1515First code unit = 'a' 1516Last code unit = 'g' 1517Subject length lower bound = 5 1518 1519/a(?(1)bag|big)*(.)/I 1520Capture group count = 1 1521Max back reference = 1 1522First code unit = 'a' 1523Subject length lower bound = 2 1524 1525/a(?(1)bag|big)+(.)/I 1526Capture group count = 1 1527Max back reference = 1 1528First code unit = 'a' 1529Last code unit = 'g' 1530Subject length lower bound = 5 1531 1532/a(?(1)b..|b..)(.)/I 1533Capture group count = 1 1534Max back reference = 1 1535First code unit = 'a' 1536Last code unit = 'b' 1537Subject length lower bound = 5 1538 1539/ab\d{0}e/I 1540Capture group count = 0 1541First code unit = 'a' 1542Last code unit = 'e' 1543Subject length lower bound = 3 1544 1545/a?b?/I 1546Capture group count = 0 1547May match empty string 1548Subject length lower bound = 0 1549 a 1550 0: a 1551 b 1552 0: b 1553 ab 1554 0: ab 1555 \ 1556 0: 1557\= Expect no match 1558 \=notempty 1559No match 1560 1561/|-/I 1562Capture group count = 0 1563May match empty string 1564Subject length lower bound = 0 1565 abcd 1566 0: 1567 -abc 1568 0: 1569 ab-c\=notempty 1570 0: - 1571\= Expect no match 1572 abc\=notempty 1573No match 1574 1575/^.?abcd/I 1576Capture group count = 0 1577Compile options: <none> 1578Overall options: anchored 1579Last code unit = 'd' 1580Subject length lower bound = 4 1581 1582/\( # ( at start 1583 (?: # Non-capturing bracket 1584 (?>[^()]+) # Either a sequence of non-brackets (no backtracking) 1585 | # Or 1586 (?R) # Recurse - i.e. nested bracketed string 1587 )* # Zero or more contents 1588 \) # Closing ) 1589 /Ix 1590Capture group count = 0 1591Options: extended 1592First code unit = '(' 1593Last code unit = ')' 1594Subject length lower bound = 2 1595 (abcd) 1596 0: (abcd) 1597 (abcd)xyz 1598 0: (abcd) 1599 xyz(abcd) 1600 0: (abcd) 1601 (ab(xy)cd)pqr 1602 0: (ab(xy)cd) 1603 (ab(xycd)pqr 1604 0: (xycd) 1605 () abc () 1606 0: () 1607 12(abcde(fsh)xyz(foo(bar))lmno)89 1608 0: (abcde(fsh)xyz(foo(bar))lmno) 1609\= Expect no match 1610 abcd 1611No match 1612 abcd) 1613No match 1614 (abcd 1615No match 1616 1617/\( ( (?>[^()]+) | (?R) )* \) /Igx 1618Capture group count = 1 1619Options: extended 1620First code unit = '(' 1621Last code unit = ')' 1622Subject length lower bound = 2 1623 (ab(xy)cd)pqr 1624 0: (ab(xy)cd) 1625 1: cd 1626 1(abcd)(x(y)z)pqr 1627 0: (abcd) 1628 1: abcd 1629 0: (x(y)z) 1630 1: z 1631 1632/\( (?: (?>[^()]+) | (?R) ) \) /Ix 1633Capture group count = 0 1634Options: extended 1635First code unit = '(' 1636Last code unit = ')' 1637Subject length lower bound = 3 1638 (abcd) 1639 0: (abcd) 1640 (ab(xy)cd) 1641 0: (xy) 1642 (a(b(c)d)e) 1643 0: (c) 1644 ((ab)) 1645 0: ((ab)) 1646\= Expect no match 1647 () 1648No match 1649 1650/\( (?: (?>[^()]+) | (?R) )? \) /Ix 1651Capture group count = 0 1652Options: extended 1653First code unit = '(' 1654Last code unit = ')' 1655Subject length lower bound = 2 1656 () 1657 0: () 1658 12(abcde(fsh)xyz(foo(bar))lmno)89 1659 0: (fsh) 1660 1661/\( ( (?>[^()]+) | (?R) )* \) /Ix 1662Capture group count = 1 1663Options: extended 1664First code unit = '(' 1665Last code unit = ')' 1666Subject length lower bound = 2 1667 (ab(xy)cd) 1668 0: (ab(xy)cd) 1669 1: cd 1670 1671/\( ( ( (?>[^()]+) | (?R) )* ) \) /Ix 1672Capture group count = 2 1673Options: extended 1674First code unit = '(' 1675Last code unit = ')' 1676Subject length lower bound = 2 1677 (ab(xy)cd) 1678 0: (ab(xy)cd) 1679 1: ab(xy)cd 1680 2: cd 1681 1682/\( (123)? ( ( (?>[^()]+) | (?R) )* ) \) /Ix 1683Capture group count = 3 1684Options: extended 1685First code unit = '(' 1686Last code unit = ')' 1687Subject length lower bound = 2 1688 (ab(xy)cd) 1689 0: (ab(xy)cd) 1690 1: <unset> 1691 2: ab(xy)cd 1692 3: cd 1693 (123ab(xy)cd) 1694 0: (123ab(xy)cd) 1695 1: 123 1696 2: ab(xy)cd 1697 3: cd 1698 1699/\( ( (123)? ( (?>[^()]+) | (?R) )* ) \) /Ix 1700Capture group count = 3 1701Options: extended 1702First code unit = '(' 1703Last code unit = ')' 1704Subject length lower bound = 2 1705 (ab(xy)cd) 1706 0: (ab(xy)cd) 1707 1: ab(xy)cd 1708 2: <unset> 1709 3: cd 1710 (123ab(xy)cd) 1711 0: (123ab(xy)cd) 1712 1: 123ab(xy)cd 1713 2: 123 1714 3: cd 1715 1716/\( (((((((((( ( (?>[^()]+) | (?R) )* )))))))))) \) /Ix 1717Capture group count = 11 1718Options: extended 1719First code unit = '(' 1720Last code unit = ')' 1721Subject length lower bound = 2 1722 (ab(xy)cd) 1723 0: (ab(xy)cd) 1724 1: ab(xy)cd 1725 2: ab(xy)cd 1726 3: ab(xy)cd 1727 4: ab(xy)cd 1728 5: ab(xy)cd 1729 6: ab(xy)cd 1730 7: ab(xy)cd 1731 8: ab(xy)cd 1732 9: ab(xy)cd 173310: ab(xy)cd 173411: cd 1735 1736/\( ( ( (?>[^()<>]+) | ((?>[^()]+)) | (?R) )* ) \) /Ix 1737Capture group count = 3 1738Options: extended 1739First code unit = '(' 1740Last code unit = ')' 1741Subject length lower bound = 2 1742 (abcd(xyz<p>qrs)123) 1743 0: (abcd(xyz<p>qrs)123) 1744 1: abcd(xyz<p>qrs)123 1745 2: 123 1746 1747/\( ( ( (?>[^()]+) | ((?R)) )* ) \) /Ix 1748Capture group count = 3 1749Options: extended 1750First code unit = '(' 1751Last code unit = ')' 1752Subject length lower bound = 2 1753 (ab(cd)ef) 1754 0: (ab(cd)ef) 1755 1: ab(cd)ef 1756 2: ef 1757 3: (cd) 1758 (ab(cd(ef)gh)ij) 1759 0: (ab(cd(ef)gh)ij) 1760 1: ab(cd(ef)gh)ij 1761 2: ij 1762 3: (cd(ef)gh) 1763 1764/^[[:alnum:]]/IB 1765------------------------------------------------------------------ 1766 Bra 1767 ^ 1768 [0-9A-Za-z] 1769 Ket 1770 End 1771------------------------------------------------------------------ 1772Capture group count = 0 1773Compile options: <none> 1774Overall options: anchored 1775Starting code units: 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P 1776 Q R S T U V W X Y Z 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 1777Subject length lower bound = 1 1778 1779/^[[:^alnum:]]/IB 1780------------------------------------------------------------------ 1781 Bra 1782 ^ 1783 [\x00-/:-@[-`{-\xff] (neg) 1784 Ket 1785 End 1786------------------------------------------------------------------ 1787Capture group count = 0 1788Compile options: <none> 1789Overall options: anchored 1790Starting code units: \x00 \x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 \x09 \x0a 1791 \x0b \x0c \x0d \x0e \x0f \x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17 \x18 \x19 1792 \x1a \x1b \x1c \x1d \x1e \x1f \x20 ! " # $ % & ' ( ) * + , - . / : ; < = > 1793 ? @ [ \ ] ^ _ ` { | } ~ \x7f \x80 \x81 \x82 \x83 \x84 \x85 \x86 \x87 \x88 1794 \x89 \x8a \x8b \x8c \x8d \x8e \x8f \x90 \x91 \x92 \x93 \x94 \x95 \x96 \x97 1795 \x98 \x99 \x9a \x9b \x9c \x9d \x9e \x9f \xa0 \xa1 \xa2 \xa3 \xa4 \xa5 \xa6 1796 \xa7 \xa8 \xa9 \xaa \xab \xac \xad \xae \xaf \xb0 \xb1 \xb2 \xb3 \xb4 \xb5 1797 \xb6 \xb7 \xb8 \xb9 \xba \xbb \xbc \xbd \xbe \xbf \xc0 \xc1 \xc2 \xc3 \xc4 1798 \xc5 \xc6 \xc7 \xc8 \xc9 \xca \xcb \xcc \xcd \xce \xcf \xd0 \xd1 \xd2 \xd3 1799 \xd4 \xd5 \xd6 \xd7 \xd8 \xd9 \xda \xdb \xdc \xdd \xde \xdf \xe0 \xe1 \xe2 1800 \xe3 \xe4 \xe5 \xe6 \xe7 \xe8 \xe9 \xea \xeb \xec \xed \xee \xef \xf0 \xf1 1801 \xf2 \xf3 \xf4 \xf5 \xf6 \xf7 \xf8 \xf9 \xfa \xfb \xfc \xfd \xfe \xff 1802Subject length lower bound = 1 1803 1804/^[[:alpha:]]/IB 1805------------------------------------------------------------------ 1806 Bra 1807 ^ 1808 [A-Za-z] 1809 Ket 1810 End 1811------------------------------------------------------------------ 1812Capture group count = 0 1813Compile options: <none> 1814Overall options: anchored 1815Starting code units: 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 1816 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 1817Subject length lower bound = 1 1818 1819/^[[:^alpha:]]/IB 1820------------------------------------------------------------------ 1821 Bra 1822 ^ 1823 [\x00-@[-`{-\xff] (neg) 1824 Ket 1825 End 1826------------------------------------------------------------------ 1827Capture group count = 0 1828Compile options: <none> 1829Overall options: anchored 1830Starting code units: \x00 \x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 \x09 \x0a 1831 \x0b \x0c \x0d \x0e \x0f \x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17 \x18 \x19 1832 \x1a \x1b \x1c \x1d \x1e \x1f \x20 ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 1833 5 6 7 8 9 : ; < = > ? @ [ \ ] ^ _ ` { | } ~ \x7f \x80 \x81 \x82 \x83 \x84 1834 \x85 \x86 \x87 \x88 \x89 \x8a \x8b \x8c \x8d \x8e \x8f \x90 \x91 \x92 \x93 1835 \x94 \x95 \x96 \x97 \x98 \x99 \x9a \x9b \x9c \x9d \x9e \x9f \xa0 \xa1 \xa2 1836 \xa3 \xa4 \xa5 \xa6 \xa7 \xa8 \xa9 \xaa \xab \xac \xad \xae \xaf \xb0 \xb1 1837 \xb2 \xb3 \xb4 \xb5 \xb6 \xb7 \xb8 \xb9 \xba \xbb \xbc \xbd \xbe \xbf \xc0 1838 \xc1 \xc2 \xc3 \xc4 \xc5 \xc6 \xc7 \xc8 \xc9 \xca \xcb \xcc \xcd \xce \xcf 1839 \xd0 \xd1 \xd2 \xd3 \xd4 \xd5 \xd6 \xd7 \xd8 \xd9 \xda \xdb \xdc \xdd \xde 1840 \xdf \xe0 \xe1 \xe2 \xe3 \xe4 \xe5 \xe6 \xe7 \xe8 \xe9 \xea \xeb \xec \xed 1841 \xee \xef \xf0 \xf1 \xf2 \xf3 \xf4 \xf5 \xf6 \xf7 \xf8 \xf9 \xfa \xfb \xfc 1842 \xfd \xfe \xff 1843Subject length lower bound = 1 1844 1845/[_[:alpha:]]/I 1846Capture group count = 0 1847Starting code units: 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 1848 _ 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 1849Subject length lower bound = 1 1850 1851/^[[:ascii:]]/IB 1852------------------------------------------------------------------ 1853 Bra 1854 ^ 1855 [\x00-\x7f] 1856 Ket 1857 End 1858------------------------------------------------------------------ 1859Capture group count = 0 1860Compile options: <none> 1861Overall options: anchored 1862Starting code units: \x00 \x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 \x09 \x0a 1863 \x0b \x0c \x0d \x0e \x0f \x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17 \x18 \x19 1864 \x1a \x1b \x1c \x1d \x1e \x1f \x20 ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 1865 5 6 7 8 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 1866 Z [ \ ] ^ _ ` 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 { | } ~ 1867 \x7f 1868Subject length lower bound = 1 1869 1870/^[[:^ascii:]]/IB 1871------------------------------------------------------------------ 1872 Bra 1873 ^ 1874 [\x80-\xff] (neg) 1875 Ket 1876 End 1877------------------------------------------------------------------ 1878Capture group count = 0 1879Compile options: <none> 1880Overall options: anchored 1881Starting code units: \x80 \x81 \x82 \x83 \x84 \x85 \x86 \x87 \x88 \x89 \x8a 1882 \x8b \x8c \x8d \x8e \x8f \x90 \x91 \x92 \x93 \x94 \x95 \x96 \x97 \x98 \x99 1883 \x9a \x9b \x9c \x9d \x9e \x9f \xa0 \xa1 \xa2 \xa3 \xa4 \xa5 \xa6 \xa7 \xa8 1884 \xa9 \xaa \xab \xac \xad \xae \xaf \xb0 \xb1 \xb2 \xb3 \xb4 \xb5 \xb6 \xb7 1885 \xb8 \xb9 \xba \xbb \xbc \xbd \xbe \xbf \xc0 \xc1 \xc2 \xc3 \xc4 \xc5 \xc6 1886 \xc7 \xc8 \xc9 \xca \xcb \xcc \xcd \xce \xcf \xd0 \xd1 \xd2 \xd3 \xd4 \xd5 1887 \xd6 \xd7 \xd8 \xd9 \xda \xdb \xdc \xdd \xde \xdf \xe0 \xe1 \xe2 \xe3 \xe4 1888 \xe5 \xe6 \xe7 \xe8 \xe9 \xea \xeb \xec \xed \xee \xef \xf0 \xf1 \xf2 \xf3 1889 \xf4 \xf5 \xf6 \xf7 \xf8 \xf9 \xfa \xfb \xfc \xfd \xfe \xff 1890Subject length lower bound = 1 1891 1892/^[[:blank:]]/IB 1893------------------------------------------------------------------ 1894 Bra 1895 ^ 1896 [\x09 ] 1897 Ket 1898 End 1899------------------------------------------------------------------ 1900Capture group count = 0 1901Compile options: <none> 1902Overall options: anchored 1903Starting code units: \x09 \x20 1904Subject length lower bound = 1 1905 1906/^[[:^blank:]]/IB 1907------------------------------------------------------------------ 1908 Bra 1909 ^ 1910 [\x00-\x08\x0a-\x1f!-\xff] (neg) 1911 Ket 1912 End 1913------------------------------------------------------------------ 1914Capture group count = 0 1915Compile options: <none> 1916Overall options: anchored 1917Starting code units: \x00 \x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 \x0a \x0b 1918 \x0c \x0d \x0e \x0f \x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17 \x18 \x19 \x1a 1919 \x1b \x1c \x1d \x1e \x1f ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 1920 : ; < = > ? @ 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 [ \ ] ^ 1921 _ ` 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 { | } ~ \x7f \x80 1922 \x81 \x82 \x83 \x84 \x85 \x86 \x87 \x88 \x89 \x8a \x8b \x8c \x8d \x8e \x8f 1923 \x90 \x91 \x92 \x93 \x94 \x95 \x96 \x97 \x98 \x99 \x9a \x9b \x9c \x9d \x9e 1924 \x9f \xa0 \xa1 \xa2 \xa3 \xa4 \xa5 \xa6 \xa7 \xa8 \xa9 \xaa \xab \xac \xad 1925 \xae \xaf \xb0 \xb1 \xb2 \xb3 \xb4 \xb5 \xb6 \xb7 \xb8 \xb9 \xba \xbb \xbc 1926 \xbd \xbe \xbf \xc0 \xc1 \xc2 \xc3 \xc4 \xc5 \xc6 \xc7 \xc8 \xc9 \xca \xcb 1927 \xcc \xcd \xce \xcf \xd0 \xd1 \xd2 \xd3 \xd4 \xd5 \xd6 \xd7 \xd8 \xd9 \xda 1928 \xdb \xdc \xdd \xde \xdf \xe0 \xe1 \xe2 \xe3 \xe4 \xe5 \xe6 \xe7 \xe8 \xe9 1929 \xea \xeb \xec \xed \xee \xef \xf0 \xf1 \xf2 \xf3 \xf4 \xf5 \xf6 \xf7 \xf8 1930 \xf9 \xfa \xfb \xfc \xfd \xfe \xff 1931Subject length lower bound = 1 1932 1933/[\n\x0b\x0c\x0d[:blank:]]/I 1934Capture group count = 0 1935Contains explicit CR or LF match 1936Starting code units: \x09 \x0a \x0b \x0c \x0d \x20 1937Subject length lower bound = 1 1938 1939/^[[:cntrl:]]/IB 1940------------------------------------------------------------------ 1941 Bra 1942 ^ 1943 [\x00-\x1f\x7f] 1944 Ket 1945 End 1946------------------------------------------------------------------ 1947Capture group count = 0 1948Compile options: <none> 1949Overall options: anchored 1950Starting code units: \x00 \x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 \x09 \x0a 1951 \x0b \x0c \x0d \x0e \x0f \x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17 \x18 \x19 1952 \x1a \x1b \x1c \x1d \x1e \x1f \x7f 1953Subject length lower bound = 1 1954 1955/^[[:digit:]]/IB 1956------------------------------------------------------------------ 1957 Bra 1958 ^ 1959 [0-9] 1960 Ket 1961 End 1962------------------------------------------------------------------ 1963Capture group count = 0 1964Compile options: <none> 1965Overall options: anchored 1966Starting code units: 0 1 2 3 4 5 6 7 8 9 1967Subject length lower bound = 1 1968 1969/^[[:graph:]]/IB 1970------------------------------------------------------------------ 1971 Bra 1972 ^ 1973 [!-~] 1974 Ket 1975 End 1976------------------------------------------------------------------ 1977Capture group count = 0 1978Compile options: <none> 1979Overall options: anchored 1980Starting code units: ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : 1981 ; < = > ? @ 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 [ \ ] ^ _ 1982 ` 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 { | } ~ 1983Subject length lower bound = 1 1984 1985/^[[:lower:]]/IB 1986------------------------------------------------------------------ 1987 Bra 1988 ^ 1989 [a-z] 1990 Ket 1991 End 1992------------------------------------------------------------------ 1993Capture group count = 0 1994Compile options: <none> 1995Overall options: anchored 1996Starting code units: 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 1997Subject length lower bound = 1 1998 1999/^[[:print:]]/IB 2000------------------------------------------------------------------ 2001 Bra 2002 ^ 2003 [ -~] 2004 Ket 2005 End 2006------------------------------------------------------------------ 2007Capture group count = 0 2008Compile options: <none> 2009Overall options: anchored 2010Starting code units: \x20 ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 2011 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 [ \ ] 2012 ^ _ ` 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 { | } ~ 2013Subject length lower bound = 1 2014 2015/^[[:punct:]]/IB 2016------------------------------------------------------------------ 2017 Bra 2018 ^ 2019 [!-/:-@[-`{-~] 2020 Ket 2021 End 2022------------------------------------------------------------------ 2023Capture group count = 0 2024Compile options: <none> 2025Overall options: anchored 2026Starting code units: ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ 2027 _ ` { | } ~ 2028Subject length lower bound = 1 2029 2030/^[[:space:]]/IB 2031------------------------------------------------------------------ 2032 Bra 2033 ^ 2034 [\x09-\x0d ] 2035 Ket 2036 End 2037------------------------------------------------------------------ 2038Capture group count = 0 2039Compile options: <none> 2040Overall options: anchored 2041Starting code units: \x09 \x0a \x0b \x0c \x0d \x20 2042Subject length lower bound = 1 2043 2044/^[[:upper:]]/IB 2045------------------------------------------------------------------ 2046 Bra 2047 ^ 2048 [A-Z] 2049 Ket 2050 End 2051------------------------------------------------------------------ 2052Capture group count = 0 2053Compile options: <none> 2054Overall options: anchored 2055Starting code units: 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 2056Subject length lower bound = 1 2057 2058/^[[:xdigit:]]/IB 2059------------------------------------------------------------------ 2060 Bra 2061 ^ 2062 [0-9A-Fa-f] 2063 Ket 2064 End 2065------------------------------------------------------------------ 2066Capture group count = 0 2067Compile options: <none> 2068Overall options: anchored 2069Starting code units: 0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f 2070Subject length lower bound = 1 2071 2072/^[[:word:]]/IB 2073------------------------------------------------------------------ 2074 Bra 2075 ^ 2076 [0-9A-Z_a-z] 2077 Ket 2078 End 2079------------------------------------------------------------------ 2080Capture group count = 0 2081Compile options: <none> 2082Overall options: anchored 2083Starting code units: 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P 2084 Q R S T U V W X Y Z _ 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 2085Subject length lower bound = 1 2086 2087/^[[:^cntrl:]]/IB 2088------------------------------------------------------------------ 2089 Bra 2090 ^ 2091 [ -~\x80-\xff] (neg) 2092 Ket 2093 End 2094------------------------------------------------------------------ 2095Capture group count = 0 2096Compile options: <none> 2097Overall options: anchored 2098Starting code units: \x20 ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 2099 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 [ \ ] 2100 ^ _ ` 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 { | } ~ \x80 \x81 2101 \x82 \x83 \x84 \x85 \x86 \x87 \x88 \x89 \x8a \x8b \x8c \x8d \x8e \x8f \x90 2102 \x91 \x92 \x93 \x94 \x95 \x96 \x97 \x98 \x99 \x9a \x9b \x9c \x9d \x9e \x9f 2103 \xa0 \xa1 \xa2 \xa3 \xa4 \xa5 \xa6 \xa7 \xa8 \xa9 \xaa \xab \xac \xad \xae 2104 \xaf \xb0 \xb1 \xb2 \xb3 \xb4 \xb5 \xb6 \xb7 \xb8 \xb9 \xba \xbb \xbc \xbd 2105 \xbe \xbf \xc0 \xc1 \xc2 \xc3 \xc4 \xc5 \xc6 \xc7 \xc8 \xc9 \xca \xcb \xcc 2106 \xcd \xce \xcf \xd0 \xd1 \xd2 \xd3 \xd4 \xd5 \xd6 \xd7 \xd8 \xd9 \xda \xdb 2107 \xdc \xdd \xde \xdf \xe0 \xe1 \xe2 \xe3 \xe4 \xe5 \xe6 \xe7 \xe8 \xe9 \xea 2108 \xeb \xec \xed \xee \xef \xf0 \xf1 \xf2 \xf3 \xf4 \xf5 \xf6 \xf7 \xf8 \xf9 2109 \xfa \xfb \xfc \xfd \xfe \xff 2110Subject length lower bound = 1 2111 2112/^[12[:^digit:]]/IB 2113------------------------------------------------------------------ 2114 Bra 2115 ^ 2116 [\x00-/12:-\xff] (neg) 2117 Ket 2118 End 2119------------------------------------------------------------------ 2120Capture group count = 0 2121Compile options: <none> 2122Overall options: anchored 2123Starting code units: \x00 \x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 \x09 \x0a 2124 \x0b \x0c \x0d \x0e \x0f \x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17 \x18 \x19 2125 \x1a \x1b \x1c \x1d \x1e \x1f \x20 ! " # $ % & ' ( ) * + , - . / 1 2 : ; < 2126 = > ? @ 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 2127 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 { | } ~ \x7f \x80 \x81 \x82 2128 \x83 \x84 \x85 \x86 \x87 \x88 \x89 \x8a \x8b \x8c \x8d \x8e \x8f \x90 \x91 2129 \x92 \x93 \x94 \x95 \x96 \x97 \x98 \x99 \x9a \x9b \x9c \x9d \x9e \x9f \xa0 2130 \xa1 \xa2 \xa3 \xa4 \xa5 \xa6 \xa7 \xa8 \xa9 \xaa \xab \xac \xad \xae \xaf 2131 \xb0 \xb1 \xb2 \xb3 \xb4 \xb5 \xb6 \xb7 \xb8 \xb9 \xba \xbb \xbc \xbd \xbe 2132 \xbf \xc0 \xc1 \xc2 \xc3 \xc4 \xc5 \xc6 \xc7 \xc8 \xc9 \xca \xcb \xcc \xcd 2133 \xce \xcf \xd0 \xd1 \xd2 \xd3 \xd4 \xd5 \xd6 \xd7 \xd8 \xd9 \xda \xdb \xdc 2134 \xdd \xde \xdf \xe0 \xe1 \xe2 \xe3 \xe4 \xe5 \xe6 \xe7 \xe8 \xe9 \xea \xeb 2135 \xec \xed \xee \xef \xf0 \xf1 \xf2 \xf3 \xf4 \xf5 \xf6 \xf7 \xf8 \xf9 \xfa 2136 \xfb \xfc \xfd \xfe \xff 2137Subject length lower bound = 1 2138 2139/^[[:^blank:]]/IB 2140------------------------------------------------------------------ 2141 Bra 2142 ^ 2143 [\x00-\x08\x0a-\x1f!-\xff] (neg) 2144 Ket 2145 End 2146------------------------------------------------------------------ 2147Capture group count = 0 2148Compile options: <none> 2149Overall options: anchored 2150Starting code units: \x00 \x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 \x0a \x0b 2151 \x0c \x0d \x0e \x0f \x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17 \x18 \x19 \x1a 2152 \x1b \x1c \x1d \x1e \x1f ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 2153 : ; < = > ? @ 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 [ \ ] ^ 2154 _ ` 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 { | } ~ \x7f \x80 2155 \x81 \x82 \x83 \x84 \x85 \x86 \x87 \x88 \x89 \x8a \x8b \x8c \x8d \x8e \x8f 2156 \x90 \x91 \x92 \x93 \x94 \x95 \x96 \x97 \x98 \x99 \x9a \x9b \x9c \x9d \x9e 2157 \x9f \xa0 \xa1 \xa2 \xa3 \xa4 \xa5 \xa6 \xa7 \xa8 \xa9 \xaa \xab \xac \xad 2158 \xae \xaf \xb0 \xb1 \xb2 \xb3 \xb4 \xb5 \xb6 \xb7 \xb8 \xb9 \xba \xbb \xbc 2159 \xbd \xbe \xbf \xc0 \xc1 \xc2 \xc3 \xc4 \xc5 \xc6 \xc7 \xc8 \xc9 \xca \xcb 2160 \xcc \xcd \xce \xcf \xd0 \xd1 \xd2 \xd3 \xd4 \xd5 \xd6 \xd7 \xd8 \xd9 \xda 2161 \xdb \xdc \xdd \xde \xdf \xe0 \xe1 \xe2 \xe3 \xe4 \xe5 \xe6 \xe7 \xe8 \xe9 2162 \xea \xeb \xec \xed \xee \xef \xf0 \xf1 \xf2 \xf3 \xf4 \xf5 \xf6 \xf7 \xf8 2163 \xf9 \xfa \xfb \xfc \xfd \xfe \xff 2164Subject length lower bound = 1 2165 2166/[01[:alpha:]%]/IB 2167------------------------------------------------------------------ 2168 Bra 2169 [%01A-Za-z] 2170 Ket 2171 End 2172------------------------------------------------------------------ 2173Capture group count = 0 2174Starting code units: % 0 1 A B C D E F G H I J K L M N O P Q R S T U V W 2175 X Y Z 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 2176Subject length lower bound = 1 2177 2178/[[.ch.]]/I 2179Failed: error 113 at offset 1: POSIX collating elements are not supported 2180 2181/[[=ch=]]/I 2182Failed: error 113 at offset 1: POSIX collating elements are not supported 2183 2184/[[:rhubarb:]]/I 2185Failed: error 130 at offset 3: unknown POSIX class name 2186 2187/[[:upper:]]/Ii 2188Capture group count = 0 2189Options: caseless 2190Starting code units: 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 2191 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 2192Subject length lower bound = 1 2193 A 2194 0: A 2195 a 2196 0: a 2197 2198/[[:lower:]]/Ii 2199Capture group count = 0 2200Options: caseless 2201Starting code units: 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 2202 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 2203Subject length lower bound = 1 2204 A 2205 0: A 2206 a 2207 0: a 2208 2209/((?-i)[[:lower:]])[[:lower:]]/Ii 2210Capture group count = 1 2211Options: caseless 2212Starting code units: 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 2213Subject length lower bound = 2 2214 ab 2215 0: ab 2216 1: a 2217 aB 2218 0: aB 2219 1: a 2220\= Expect no match 2221 Ab 2222No match 2223 AB 2224No match 2225 2226/[\200-\110]/I 2227Failed: error 108 at offset 9: range out of order in character class 2228 2229/^(?(0)f|b)oo/I 2230Failed: error 115 at offset 5: reference to non-existent subpattern 2231 2232# This one's here because of the large output vector needed 2233 2234/(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\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 2235Capture group count = 271 2236Max back reference = 270 2237Starting code units: 0 1 2 3 4 5 6 7 8 9 2238Subject length lower bound = 1 2239 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\=ovector=300 2240 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 2241 1: 1 2242 2: 2 2243 3: 3 2244 4: 4 2245 5: 5 2246 6: 6 2247 7: 7 2248 8: 8 2249 9: 9 225010: 10 225111: 11 225212: 12 225313: 13 225414: 14 225515: 15 225616: 16 225717: 17 225818: 18 225919: 19 226020: 20 226121: 21 226222: 22 226323: 23 226424: 24 226525: 25 226626: 26 226727: 27 226828: 28 226929: 29 227030: 30 227131: 31 227232: 32 227333: 33 227434: 34 227535: 35 227636: 36 227737: 37 227838: 38 227939: 39 228040: 40 228141: 41 228242: 42 228343: 43 228444: 44 228545: 45 228646: 46 228747: 47 228848: 48 228949: 49 229050: 50 229151: 51 229252: 52 229353: 53 229454: 54 229555: 55 229656: 56 229757: 57 229858: 58 229959: 59 230060: 60 230161: 61 230262: 62 230363: 63 230464: 64 230565: 65 230666: 66 230767: 67 230868: 68 230969: 69 231070: 70 231171: 71 231272: 72 231373: 73 231474: 74 231575: 75 231676: 76 231777: 77 231878: 78 231979: 79 232080: 80 232181: 81 232282: 82 232383: 83 232484: 84 232585: 85 232686: 86 232787: 87 232888: 88 232989: 89 233090: 90 233191: 91 233292: 92 233393: 93 233494: 94 233595: 95 233696: 96 233797: 97 233898: 98 233999: 99 2340100: 100 2341101: 101 2342102: 102 2343103: 103 2344104: 104 2345105: 105 2346106: 106 2347107: 107 2348108: 108 2349109: 109 2350110: 110 2351111: 111 2352112: 112 2353113: 113 2354114: 114 2355115: 115 2356116: 116 2357117: 117 2358118: 118 2359119: 119 2360120: 120 2361121: 121 2362122: 122 2363123: 123 2364124: 124 2365125: 125 2366126: 126 2367127: 127 2368128: 128 2369129: 129 2370130: 130 2371131: 131 2372132: 132 2373133: 133 2374134: 134 2375135: 135 2376136: 136 2377137: 137 2378138: 138 2379139: 139 2380140: 140 2381141: 141 2382142: 142 2383143: 143 2384144: 144 2385145: 145 2386146: 146 2387147: 147 2388148: 148 2389149: 149 2390150: 150 2391151: 151 2392152: 152 2393153: 153 2394154: 154 2395155: 155 2396156: 156 2397157: 157 2398158: 158 2399159: 159 2400160: 160 2401161: 161 2402162: 162 2403163: 163 2404164: 164 2405165: 165 2406166: 166 2407167: 167 2408168: 168 2409169: 169 2410170: 170 2411171: 171 2412172: 172 2413173: 173 2414174: 174 2415175: 175 2416176: 176 2417177: 177 2418178: 178 2419179: 179 2420180: 180 2421181: 181 2422182: 182 2423183: 183 2424184: 184 2425185: 185 2426186: 186 2427187: 187 2428188: 188 2429189: 189 2430190: 190 2431191: 191 2432192: 192 2433193: 193 2434194: 194 2435195: 195 2436196: 196 2437197: 197 2438198: 198 2439199: 199 2440200: 200 2441201: 201 2442202: 202 2443203: 203 2444204: 204 2445205: 205 2446206: 206 2447207: 207 2448208: 208 2449209: 209 2450210: 210 2451211: 211 2452212: 212 2453213: 213 2454214: 214 2455215: 215 2456216: 216 2457217: 217 2458218: 218 2459219: 219 2460220: 220 2461221: 221 2462222: 222 2463223: 223 2464224: 224 2465225: 225 2466226: 226 2467227: 227 2468228: 228 2469229: 229 2470230: 230 2471231: 231 2472232: 232 2473233: 233 2474234: 234 2475235: 235 2476236: 236 2477237: 237 2478238: 238 2479239: 239 2480240: 240 2481241: 241 2482242: 242 2483243: 243 2484244: 244 2485245: 245 2486246: 246 2487247: 247 2488248: 248 2489249: 249 2490250: 250 2491251: 251 2492252: 252 2493253: 253 2494254: 254 2495255: 255 2496256: 256 2497257: 257 2498258: 258 2499259: 259 2500260: 260 2501261: 261 2502262: 262 2503263: 263 2504264: 264 2505265: 265 2506266: 266 2507267: 267 2508268: 268 2509269: 269 2510270: ABC 2511271: ABC 2512 2513# This one's here because Perl does this differently and PCRE2 can't at present 2514 2515/(main(O)?)+/I 2516Capture group count = 2 2517First code unit = 'm' 2518Last code unit = 'n' 2519Subject length lower bound = 4 2520 mainmain 2521 0: mainmain 2522 1: main 2523 mainOmain 2524 0: mainOmain 2525 1: main 2526 2: O 2527 2528# These are all cases where Perl does it differently (nested captures) 2529 2530/^(a(b)?)+$/I 2531Capture group count = 2 2532Compile options: <none> 2533Overall options: anchored 2534First code unit = 'a' 2535Subject length lower bound = 1 2536 aba 2537 0: aba 2538 1: a 2539 2: b 2540 2541/^(aa(bb)?)+$/I 2542Capture group count = 2 2543Compile options: <none> 2544Overall options: anchored 2545First code unit = 'a' 2546Subject length lower bound = 2 2547 aabbaa 2548 0: aabbaa 2549 1: aa 2550 2: bb 2551 2552/^(aa|aa(bb))+$/I 2553Capture group count = 2 2554Compile options: <none> 2555Overall options: anchored 2556First code unit = 'a' 2557Subject length lower bound = 2 2558 aabbaa 2559 0: aabbaa 2560 1: aa 2561 2: bb 2562 2563/^(aa(bb)??)+$/I 2564Capture group count = 2 2565Compile options: <none> 2566Overall options: anchored 2567First code unit = 'a' 2568Subject length lower bound = 2 2569 aabbaa 2570 0: aabbaa 2571 1: aa 2572 2: bb 2573 2574/^(?:aa(bb)?)+$/I 2575Capture group count = 1 2576Compile options: <none> 2577Overall options: anchored 2578First code unit = 'a' 2579Subject length lower bound = 2 2580 aabbaa 2581 0: aabbaa 2582 1: bb 2583 2584/^(aa(b(b))?)+$/I 2585Capture group count = 3 2586Compile options: <none> 2587Overall options: anchored 2588First code unit = 'a' 2589Subject length lower bound = 2 2590 aabbaa 2591 0: aabbaa 2592 1: aa 2593 2: bb 2594 3: b 2595 2596/^(?:aa(b(b))?)+$/I 2597Capture group count = 2 2598Compile options: <none> 2599Overall options: anchored 2600First code unit = 'a' 2601Subject length lower bound = 2 2602 aabbaa 2603 0: aabbaa 2604 1: bb 2605 2: b 2606 2607/^(?:aa(b(?:b))?)+$/I 2608Capture group count = 1 2609Compile options: <none> 2610Overall options: anchored 2611First code unit = 'a' 2612Subject length lower bound = 2 2613 aabbaa 2614 0: aabbaa 2615 1: bb 2616 2617/^(?:aa(bb(?:b))?)+$/I 2618Capture group count = 1 2619Compile options: <none> 2620Overall options: anchored 2621First code unit = 'a' 2622Subject length lower bound = 2 2623 aabbbaa 2624 0: aabbbaa 2625 1: bbb 2626 2627/^(?:aa(b(?:bb))?)+$/I 2628Capture group count = 1 2629Compile options: <none> 2630Overall options: anchored 2631First code unit = 'a' 2632Subject length lower bound = 2 2633 aabbbaa 2634 0: aabbbaa 2635 1: bbb 2636 2637/^(?:aa(?:b(b))?)+$/I 2638Capture group count = 1 2639Compile options: <none> 2640Overall options: anchored 2641First code unit = 'a' 2642Subject length lower bound = 2 2643 aabbaa 2644 0: aabbaa 2645 1: b 2646 2647/^(?:aa(?:b(bb))?)+$/I 2648Capture group count = 1 2649Compile options: <none> 2650Overall options: anchored 2651First code unit = 'a' 2652Subject length lower bound = 2 2653 aabbbaa 2654 0: aabbbaa 2655 1: bb 2656 2657/^(aa(b(bb))?)+$/I 2658Capture group count = 3 2659Compile options: <none> 2660Overall options: anchored 2661First code unit = 'a' 2662Subject length lower bound = 2 2663 aabbbaa 2664 0: aabbbaa 2665 1: aa 2666 2: bbb 2667 3: bb 2668 2669/^(aa(bb(bb))?)+$/I 2670Capture group count = 3 2671Compile options: <none> 2672Overall options: anchored 2673First code unit = 'a' 2674Subject length lower bound = 2 2675 aabbbbaa 2676 0: aabbbbaa 2677 1: aa 2678 2: bbbb 2679 3: bb 2680 2681# ---------------- 2682 2683/#/IBx 2684------------------------------------------------------------------ 2685 Bra 2686 Ket 2687 End 2688------------------------------------------------------------------ 2689Capture group count = 0 2690May match empty string 2691Options: extended 2692Subject length lower bound = 0 2693 2694/a#/IBx 2695------------------------------------------------------------------ 2696 Bra 2697 a 2698 Ket 2699 End 2700------------------------------------------------------------------ 2701Capture group count = 0 2702Options: extended 2703First code unit = 'a' 2704Subject length lower bound = 1 2705 2706/[\s]/IB 2707------------------------------------------------------------------ 2708 Bra 2709 [\x09-\x0d ] 2710 Ket 2711 End 2712------------------------------------------------------------------ 2713Capture group count = 0 2714Starting code units: \x09 \x0a \x0b \x0c \x0d \x20 2715Subject length lower bound = 1 2716 2717/[\S]/IB 2718------------------------------------------------------------------ 2719 Bra 2720 [\x00-\x08\x0e-\x1f!-\xff] (neg) 2721 Ket 2722 End 2723------------------------------------------------------------------ 2724Capture group count = 0 2725Starting code units: \x00 \x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 \x0e \x0f 2726 \x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17 \x18 \x19 \x1a \x1b \x1c \x1d \x1e 2727 \x1f ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C 2728 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 f g h 2729 i j k l m n o p q r s t u v w x y z { | } ~ \x7f \x80 \x81 \x82 \x83 \x84 2730 \x85 \x86 \x87 \x88 \x89 \x8a \x8b \x8c \x8d \x8e \x8f \x90 \x91 \x92 \x93 2731 \x94 \x95 \x96 \x97 \x98 \x99 \x9a \x9b \x9c \x9d \x9e \x9f \xa0 \xa1 \xa2 2732 \xa3 \xa4 \xa5 \xa6 \xa7 \xa8 \xa9 \xaa \xab \xac \xad \xae \xaf \xb0 \xb1 2733 \xb2 \xb3 \xb4 \xb5 \xb6 \xb7 \xb8 \xb9 \xba \xbb \xbc \xbd \xbe \xbf \xc0 2734 \xc1 \xc2 \xc3 \xc4 \xc5 \xc6 \xc7 \xc8 \xc9 \xca \xcb \xcc \xcd \xce \xcf 2735 \xd0 \xd1 \xd2 \xd3 \xd4 \xd5 \xd6 \xd7 \xd8 \xd9 \xda \xdb \xdc \xdd \xde 2736 \xdf \xe0 \xe1 \xe2 \xe3 \xe4 \xe5 \xe6 \xe7 \xe8 \xe9 \xea \xeb \xec \xed 2737 \xee \xef \xf0 \xf1 \xf2 \xf3 \xf4 \xf5 \xf6 \xf7 \xf8 \xf9 \xfa \xfb \xfc 2738 \xfd \xfe \xff 2739Subject length lower bound = 1 2740 2741/a(?i)b/IB 2742------------------------------------------------------------------ 2743 Bra 2744 a 2745 /i b 2746 Ket 2747 End 2748------------------------------------------------------------------ 2749Capture group count = 0 2750First code unit = 'a' 2751Last code unit = 'b' (caseless) 2752Subject length lower bound = 2 2753 ab 2754 0: ab 2755 aB 2756 0: aB 2757\= Expect no match 2758 AB 2759No match 2760 2761/(a(?i)b)/IB 2762------------------------------------------------------------------ 2763 Bra 2764 CBra 1 2765 a 2766 /i b 2767 Ket 2768 Ket 2769 End 2770------------------------------------------------------------------ 2771Capture group count = 1 2772First code unit = 'a' 2773Last code unit = 'b' (caseless) 2774Subject length lower bound = 2 2775 ab 2776 0: ab 2777 1: ab 2778 aB 2779 0: aB 2780 1: aB 2781\= Expect no match 2782 AB 2783No match 2784 2785/ (?i)abc/IBx 2786------------------------------------------------------------------ 2787 Bra 2788 /i abc 2789 Ket 2790 End 2791------------------------------------------------------------------ 2792Capture group count = 0 2793Options: extended 2794First code unit = 'a' (caseless) 2795Last code unit = 'c' (caseless) 2796Subject length lower bound = 3 2797 2798/#this is a comment 2799 (?i)abc/IBx 2800------------------------------------------------------------------ 2801 Bra 2802 /i abc 2803 Ket 2804 End 2805------------------------------------------------------------------ 2806Capture group count = 0 2807Options: extended 2808First code unit = 'a' (caseless) 2809Last code unit = 'c' (caseless) 2810Subject length lower bound = 3 2811 2812/123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/IB 2813------------------------------------------------------------------ 2814 Bra 2815 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 2816 Ket 2817 End 2818------------------------------------------------------------------ 2819Capture group count = 0 2820First code unit = '1' 2821Last code unit = '0' 2822Subject length lower bound = 300 2823 2824/\Q123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/IB 2825------------------------------------------------------------------ 2826 Bra 2827 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 2828 Ket 2829 End 2830------------------------------------------------------------------ 2831Capture group count = 0 2832First code unit = '1' 2833Last code unit = '0' 2834Subject length lower bound = 300 2835 2836/\Q\E/IB 2837------------------------------------------------------------------ 2838 Bra 2839 Ket 2840 End 2841------------------------------------------------------------------ 2842Capture group count = 0 2843May match empty string 2844Subject length lower bound = 0 2845 \ 2846 0: 2847 2848/\Q\Ex/IB 2849------------------------------------------------------------------ 2850 Bra 2851 x 2852 Ket 2853 End 2854------------------------------------------------------------------ 2855Capture group count = 0 2856First code unit = 'x' 2857Subject length lower bound = 1 2858 2859/ \Q\E/IB 2860------------------------------------------------------------------ 2861 Bra 2862 2863 Ket 2864 End 2865------------------------------------------------------------------ 2866Capture group count = 0 2867First code unit = ' ' 2868Subject length lower bound = 1 2869 2870/a\Q\E/IB 2871------------------------------------------------------------------ 2872 Bra 2873 a 2874 Ket 2875 End 2876------------------------------------------------------------------ 2877Capture group count = 0 2878First code unit = 'a' 2879Subject length lower bound = 1 2880 abc 2881 0: a 2882 bca 2883 0: a 2884 bac 2885 0: a 2886 2887/a\Q\Eb/IB 2888------------------------------------------------------------------ 2889 Bra 2890 ab 2891 Ket 2892 End 2893------------------------------------------------------------------ 2894Capture group count = 0 2895First code unit = 'a' 2896Last code unit = 'b' 2897Subject length lower bound = 2 2898 abc 2899 0: ab 2900 2901/\Q\Eabc/IB 2902------------------------------------------------------------------ 2903 Bra 2904 abc 2905 Ket 2906 End 2907------------------------------------------------------------------ 2908Capture group count = 0 2909First code unit = 'a' 2910Last code unit = 'c' 2911Subject length lower bound = 3 2912 2913/x*+\w/IB 2914------------------------------------------------------------------ 2915 Bra 2916 x*+ 2917 \w 2918 Ket 2919 End 2920------------------------------------------------------------------ 2921Capture group count = 0 2922Starting code units: 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P 2923 Q R S T U V W X Y Z _ 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 2924Subject length lower bound = 1 2925\= Expect no match 2926 xxxxx 2927No match 2928 2929/x?+/IB 2930------------------------------------------------------------------ 2931 Bra 2932 x?+ 2933 Ket 2934 End 2935------------------------------------------------------------------ 2936Capture group count = 0 2937May match empty string 2938Subject length lower bound = 0 2939 2940/x++/IB 2941------------------------------------------------------------------ 2942 Bra 2943 x++ 2944 Ket 2945 End 2946------------------------------------------------------------------ 2947Capture group count = 0 2948First code unit = 'x' 2949Subject length lower bound = 1 2950 2951/x{1,3}+/B,no_auto_possess 2952------------------------------------------------------------------ 2953 Bra 2954 x 2955 x{0,2}+ 2956 Ket 2957 End 2958------------------------------------------------------------------ 2959 2960/x{1,3}+/Bi,no_auto_possess 2961------------------------------------------------------------------ 2962 Bra 2963 /i x 2964 /i x{0,2}+ 2965 Ket 2966 End 2967------------------------------------------------------------------ 2968 2969/[^x]{1,3}+/B,no_auto_possess 2970------------------------------------------------------------------ 2971 Bra 2972 [^x] 2973 [^x]{0,2}+ 2974 Ket 2975 End 2976------------------------------------------------------------------ 2977 2978/[^x]{1,3}+/Bi,no_auto_possess 2979------------------------------------------------------------------ 2980 Bra 2981 /i [^x] 2982 /i [^x]{0,2}+ 2983 Ket 2984 End 2985------------------------------------------------------------------ 2986 2987/(x)*+/IB 2988------------------------------------------------------------------ 2989 Bra 2990 Braposzero 2991 CBraPos 1 2992 x 2993 KetRpos 2994 Ket 2995 End 2996------------------------------------------------------------------ 2997Capture group count = 1 2998May match empty string 2999Subject length lower bound = 0 3000 3001/^(\w++|\s++)*$/I 3002Capture group count = 1 3003May match empty string 3004Compile options: <none> 3005Overall options: anchored 3006Subject length lower bound = 0 3007 now is the time for all good men to come to the aid of the party 3008 0: now is the time for all good men to come to the aid of the party 3009 1: party 3010\= Expect no match 3011 this is not a line with only words and spaces! 3012No match 3013 3014/(\d++)(\w)/I 3015Capture group count = 2 3016Starting code units: 0 1 2 3 4 5 6 7 8 9 3017Subject length lower bound = 2 3018 12345a 3019 0: 12345a 3020 1: 12345 3021 2: a 3022\= Expect no match 3023 12345+ 3024No match 3025 3026/a++b/I 3027Capture group count = 0 3028First code unit = 'a' 3029Last code unit = 'b' 3030Subject length lower bound = 2 3031 aaab 3032 0: aaab 3033 3034/(a++b)/I 3035Capture group count = 1 3036First code unit = 'a' 3037Last code unit = 'b' 3038Subject length lower bound = 2 3039 aaab 3040 0: aaab 3041 1: aaab 3042 3043/(a++)b/I 3044Capture group count = 1 3045First code unit = 'a' 3046Last code unit = 'b' 3047Subject length lower bound = 2 3048 aaab 3049 0: aaab 3050 1: aaa 3051 3052/([^()]++|\([^()]*\))+/I 3053Capture group count = 1 3054Starting code units: \x00 \x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 \x09 \x0a 3055 \x0b \x0c \x0d \x0e \x0f \x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17 \x18 \x19 3056 \x1a \x1b \x1c \x1d \x1e \x1f \x20 ! " # $ % & ' ( * + , - . / 0 1 2 3 4 5 3057 6 7 8 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 3058 [ \ ] ^ _ ` 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 { | } ~ \x7f 3059 \x80 \x81 \x82 \x83 \x84 \x85 \x86 \x87 \x88 \x89 \x8a \x8b \x8c \x8d \x8e 3060 \x8f \x90 \x91 \x92 \x93 \x94 \x95 \x96 \x97 \x98 \x99 \x9a \x9b \x9c \x9d 3061 \x9e \x9f \xa0 \xa1 \xa2 \xa3 \xa4 \xa5 \xa6 \xa7 \xa8 \xa9 \xaa \xab \xac 3062 \xad \xae \xaf \xb0 \xb1 \xb2 \xb3 \xb4 \xb5 \xb6 \xb7 \xb8 \xb9 \xba \xbb 3063 \xbc \xbd \xbe \xbf \xc0 \xc1 \xc2 \xc3 \xc4 \xc5 \xc6 \xc7 \xc8 \xc9 \xca 3064 \xcb \xcc \xcd \xce \xcf \xd0 \xd1 \xd2 \xd3 \xd4 \xd5 \xd6 \xd7 \xd8 \xd9 3065 \xda \xdb \xdc \xdd \xde \xdf \xe0 \xe1 \xe2 \xe3 \xe4 \xe5 \xe6 \xe7 \xe8 3066 \xe9 \xea \xeb \xec \xed \xee \xef \xf0 \xf1 \xf2 \xf3 \xf4 \xf5 \xf6 \xf7 3067 \xf8 \xf9 \xfa \xfb \xfc \xfd \xfe \xff 3068Subject length lower bound = 1 3069 ((abc(ade)ufh()()x 3070 0: abc(ade)ufh()()x 3071 1: x 3072 3073/\(([^()]++|\([^()]+\))+\)/I 3074Capture group count = 1 3075First code unit = '(' 3076Last code unit = ')' 3077Subject length lower bound = 3 3078 (abc) 3079 0: (abc) 3080 1: abc 3081 (abc(def)xyz) 3082 0: (abc(def)xyz) 3083 1: xyz 3084\= Expect no match 3085 ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3086No match 3087 3088/(abc){1,3}+/IB 3089------------------------------------------------------------------ 3090 Bra 3091 Once 3092 CBra 1 3093 abc 3094 Ket 3095 Brazero 3096 Bra 3097 CBra 1 3098 abc 3099 Ket 3100 Brazero 3101 CBra 1 3102 abc 3103 Ket 3104 Ket 3105 Ket 3106 Ket 3107 End 3108------------------------------------------------------------------ 3109Capture group count = 1 3110First code unit = 'a' 3111Last code unit = 'c' 3112Subject length lower bound = 3 3113 3114/a+?+/I 3115Failed: error 109 at offset 3: quantifier does not follow a repeatable item 3116 3117/a{2,3}?+b/I 3118Failed: error 109 at offset 7: quantifier does not follow a repeatable item 3119 3120/(?U)a+?+/I 3121Failed: error 109 at offset 7: quantifier does not follow a repeatable item 3122 3123/a{2,3}?+b/I,ungreedy 3124Failed: error 109 at offset 7: quantifier does not follow a repeatable item 3125 3126/x(?U)a++b/IB 3127------------------------------------------------------------------ 3128 Bra 3129 x 3130 a++ 3131 b 3132 Ket 3133 End 3134------------------------------------------------------------------ 3135Capture group count = 0 3136First code unit = 'x' 3137Last code unit = 'b' 3138Subject length lower bound = 3 3139 xaaaab 3140 0: xaaaab 3141 3142/(?U)xa++b/IB 3143------------------------------------------------------------------ 3144 Bra 3145 x 3146 a++ 3147 b 3148 Ket 3149 End 3150------------------------------------------------------------------ 3151Capture group count = 0 3152First code unit = 'x' 3153Last code unit = 'b' 3154Subject length lower bound = 3 3155 xaaaab 3156 0: xaaaab 3157 3158/^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/IB 3159------------------------------------------------------------------ 3160 Bra 3161 ^ 3162 CBra 1 3163 CBra 2 3164 a+ 3165 Ket 3166 CBra 3 3167 [ab]+? 3168 Ket 3169 CBra 4 3170 [bc]+ 3171 Ket 3172 CBra 5 3173 \w*+ 3174 Ket 3175 Ket 3176 Ket 3177 End 3178------------------------------------------------------------------ 3179Capture group count = 5 3180Compile options: <none> 3181Overall options: anchored 3182First code unit = 'a' 3183Subject length lower bound = 3 3184 3185/^x(?U)a+b/IB 3186------------------------------------------------------------------ 3187 Bra 3188 ^ 3189 x 3190 a++ 3191 b 3192 Ket 3193 End 3194------------------------------------------------------------------ 3195Capture group count = 0 3196Compile options: <none> 3197Overall options: anchored 3198First code unit = 'x' 3199Last code unit = 'b' 3200Subject length lower bound = 3 3201 3202/^x(?U)(a+)b/IB 3203------------------------------------------------------------------ 3204 Bra 3205 ^ 3206 x 3207 CBra 1 3208 a+? 3209 Ket 3210 b 3211 Ket 3212 End 3213------------------------------------------------------------------ 3214Capture group count = 1 3215Compile options: <none> 3216Overall options: anchored 3217First code unit = 'x' 3218Last code unit = 'b' 3219Subject length lower bound = 3 3220 3221/[.x.]/I 3222Failed: error 113 at offset 0: POSIX collating elements are not supported 3223 3224/[=x=]/I 3225Failed: error 113 at offset 0: POSIX collating elements are not supported 3226 3227/[:x:]/I 3228Failed: error 112 at offset 0: POSIX named classes are supported only within a class 3229 3230/\F/I 3231Failed: error 137 at offset 2: PCRE2 does not support \F, \L, \l, \N{name}, \U, or \u 3232 3233/\l/I 3234Failed: error 137 at offset 2: PCRE2 does not support \F, \L, \l, \N{name}, \U, or \u 3235 3236/\L/I 3237Failed: error 137 at offset 2: PCRE2 does not support \F, \L, \l, \N{name}, \U, or \u 3238 3239/\N{name}/I 3240Failed: error 137 at offset 2: PCRE2 does not support \F, \L, \l, \N{name}, \U, or \u 3241 3242/\u/I 3243Failed: error 137 at offset 2: PCRE2 does not support \F, \L, \l, \N{name}, \U, or \u 3244 3245/\U/I 3246Failed: error 137 at offset 2: PCRE2 does not support \F, \L, \l, \N{name}, \U, or \u 3247 3248/a{1,3}b/ungreedy 3249 ab 3250 0: ab 3251 3252/[/I 3253Failed: error 106 at offset 1: missing terminating ] for character class 3254 3255/[a-/I 3256Failed: error 106 at offset 3: missing terminating ] for character class 3257 3258/[[:space:]/I 3259Failed: error 106 at offset 10: missing terminating ] for character class 3260 3261/[\s]/IB 3262------------------------------------------------------------------ 3263 Bra 3264 [\x09-\x0d ] 3265 Ket 3266 End 3267------------------------------------------------------------------ 3268Capture group count = 0 3269Starting code units: \x09 \x0a \x0b \x0c \x0d \x20 3270Subject length lower bound = 1 3271 3272/[[:space:]]/IB 3273------------------------------------------------------------------ 3274 Bra 3275 [\x09-\x0d ] 3276 Ket 3277 End 3278------------------------------------------------------------------ 3279Capture group count = 0 3280Starting code units: \x09 \x0a \x0b \x0c \x0d \x20 3281Subject length lower bound = 1 3282 3283/[[:space:]abcde]/IB 3284------------------------------------------------------------------ 3285 Bra 3286 [\x09-\x0d a-e] 3287 Ket 3288 End 3289------------------------------------------------------------------ 3290Capture group count = 0 3291Starting code units: \x09 \x0a \x0b \x0c \x0d \x20 a b c d e 3292Subject length lower bound = 1 3293 3294/< (?: (?(R) \d++ | [^<>]*+) | (?R)) * >/Ix 3295Capture group count = 0 3296Options: extended 3297First code unit = '<' 3298Last code unit = '>' 3299Subject length lower bound = 2 3300 <> 3301 0: <> 3302 <abcd> 3303 0: <abcd> 3304 <abc <123> hij> 3305 0: <abc <123> hij> 3306 <abc <def> hij> 3307 0: <def> 3308 <abc<>def> 3309 0: <abc<>def> 3310 <abc<> 3311 0: <> 3312\= Expect no match 3313 <abc 3314No match 3315 3316/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/IB 3317------------------------------------------------------------------ 3318 Bra 3319 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 3320 \b 3321 Ket 3322 End 3323------------------------------------------------------------------ 3324Capture group count = 0 3325Max lookbehind = 1 3326First code unit = '8' 3327Last code unit = 'X' 3328Subject length lower bound = 409 3329 3330/\$\<\.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/IB 3331------------------------------------------------------------------ 3332 Bra 3333 $<.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 3334 \b 3335 Ket 3336 End 3337------------------------------------------------------------------ 3338Capture group count = 0 3339Max lookbehind = 1 3340First code unit = '$' 3341Last code unit = 'X' 3342Subject length lower bound = 404 3343 3344/(.*)\d+\1/I 3345Capture group count = 1 3346Max back reference = 1 3347Subject length lower bound = 1 3348 3349/(.*)\d+/I 3350Capture group count = 1 3351First code unit at start or follows newline 3352Subject length lower bound = 1 3353 3354/(.*)\d+\1/Is 3355Capture group count = 1 3356Max back reference = 1 3357Options: dotall 3358Subject length lower bound = 1 3359 3360/(.*)\d+/Is 3361Capture group count = 1 3362Compile options: dotall 3363Overall options: anchored dotall 3364Subject length lower bound = 1 3365 3366/(.*(xyz))\d+\2/I 3367Capture group count = 2 3368Max back reference = 2 3369First code unit at start or follows newline 3370Last code unit = 'z' 3371Subject length lower bound = 7 3372 3373/((.*))\d+\1/I 3374Capture group count = 2 3375Max back reference = 1 3376Subject length lower bound = 1 3377 abc123bc 3378 0: bc123bc 3379 1: bc 3380 2: bc 3381 3382/a[b]/I 3383Capture group count = 0 3384First code unit = 'a' 3385Last code unit = 'b' 3386Subject length lower bound = 2 3387 3388/(?=a).*/I 3389Capture group count = 0 3390May match empty string 3391First code unit = 'a' 3392Subject length lower bound = 1 3393 3394/(?=abc).xyz/Ii 3395Capture group count = 0 3396Options: caseless 3397First code unit = 'a' (caseless) 3398Last code unit = 'z' (caseless) 3399Subject length lower bound = 4 3400 3401/(?=abc)(?i).xyz/I 3402Capture group count = 0 3403First code unit = 'a' 3404Last code unit = 'z' (caseless) 3405Subject length lower bound = 4 3406 3407/(?=a)(?=b)/I 3408Capture group count = 0 3409May match empty string 3410First code unit = 'a' 3411Subject length lower bound = 1 3412 3413/(?=.)a/I 3414Capture group count = 0 3415First code unit = 'a' 3416Subject length lower bound = 1 3417 3418/((?=abcda)a)/I 3419Capture group count = 1 3420First code unit = 'a' 3421Last code unit = 'a' 3422Subject length lower bound = 2 3423 3424/((?=abcda)ab)/I 3425Capture group count = 1 3426First code unit = 'a' 3427Last code unit = 'b' 3428Subject length lower bound = 2 3429 3430/()a/I 3431Capture group count = 1 3432First code unit = 'a' 3433Subject length lower bound = 1 3434 3435/(?:(?=.)|(?<!x))a/I 3436Capture group count = 0 3437Max lookbehind = 1 3438First code unit = 'a' 3439Subject length lower bound = 1 3440 3441/(?(1)ab|ac)(.)/I 3442Capture group count = 1 3443Max back reference = 1 3444First code unit = 'a' 3445Subject length lower bound = 3 3446 3447/(?(1)abz|acz)(.)/I 3448Capture group count = 1 3449Max back reference = 1 3450First code unit = 'a' 3451Last code unit = 'z' 3452Subject length lower bound = 4 3453 3454/(?(1)abz)(.)/I 3455Capture group count = 1 3456Max back reference = 1 3457Subject length lower bound = 1 3458 3459/(?(1)abz)(1)23/I 3460Capture group count = 1 3461Max back reference = 1 3462Last code unit = '3' 3463Subject length lower bound = 3 3464 3465/(a)+/I 3466Capture group count = 1 3467First code unit = 'a' 3468Subject length lower bound = 1 3469 3470/(a){2,3}/I 3471Capture group count = 1 3472First code unit = 'a' 3473Last code unit = 'a' 3474Subject length lower bound = 2 3475 3476/(a)*/I 3477Capture group count = 1 3478May match empty string 3479Subject length lower bound = 0 3480 3481/[a]/I 3482Capture group count = 0 3483First code unit = 'a' 3484Subject length lower bound = 1 3485 3486/[ab]/I 3487Capture group count = 0 3488Starting code units: a b 3489Subject length lower bound = 1 3490 3491/[ab]/I 3492Capture group count = 0 3493Starting code units: a b 3494Subject length lower bound = 1 3495 3496/[^a]/I 3497Capture group count = 0 3498Subject length lower bound = 1 3499 3500/\d456/I 3501Capture group count = 0 3502Starting code units: 0 1 2 3 4 5 6 7 8 9 3503Last code unit = '6' 3504Subject length lower bound = 4 3505 3506/\d456/I 3507Capture group count = 0 3508Starting code units: 0 1 2 3 4 5 6 7 8 9 3509Last code unit = '6' 3510Subject length lower bound = 4 3511 3512/a^b/I 3513Capture group count = 0 3514First code unit = 'a' 3515Last code unit = 'b' 3516Subject length lower bound = 2 3517 3518/^a/Im 3519Capture group count = 0 3520Options: multiline 3521First code unit at start or follows newline 3522Last code unit = 'a' 3523Subject length lower bound = 1 3524 abcde 3525 0: a 3526 xy\nabc 3527 0: a 3528\= Expect no match 3529 xyabc 3530No match 3531 3532/c|abc/I 3533Capture group count = 0 3534Starting code units: a c 3535Last code unit = 'c' 3536Subject length lower bound = 1 3537 3538/(?i)[ab]/I 3539Capture group count = 0 3540Starting code units: A B a b 3541Subject length lower bound = 1 3542 3543/[ab](?i)cd/I 3544Capture group count = 0 3545Starting code units: a b 3546Last code unit = 'd' (caseless) 3547Subject length lower bound = 3 3548 3549/abc(?C)def/I 3550Capture group count = 0 3551First code unit = 'a' 3552Last code unit = 'f' 3553Subject length lower bound = 6 3554 abcdef 3555--->abcdef 3556 0 ^ ^ d 3557 0: abcdef 3558 1234abcdef 3559--->1234abcdef 3560 0 ^ ^ d 3561 0: abcdef 3562\= Expect no match 3563 abcxyz 3564No match 3565 abcxyzf 3566--->abcxyzf 3567 0 ^ ^ d 3568No match 3569 3570/abc(?C)de(?C1)f/I 3571Capture group count = 0 3572First code unit = 'a' 3573Last code unit = 'f' 3574Subject length lower bound = 6 3575 123abcdef 3576--->123abcdef 3577 0 ^ ^ d 3578 1 ^ ^ f 3579 0: abcdef 3580 3581/(?C1)\dabc(?C2)def/I 3582Capture group count = 0 3583Starting code units: 0 1 2 3 4 5 6 7 8 9 3584Last code unit = 'f' 3585Subject length lower bound = 7 3586 1234abcdef 3587--->1234abcdef 3588 1 ^ \d 3589 1 ^ \d 3590 1 ^ \d 3591 1 ^ \d 3592 2 ^ ^ d 3593 0: 4abcdef 3594\= Expect no match 3595 abcdef 3596No match 3597 3598/(?C1)\dabc(?C2)def/I 3599Capture group count = 0 3600Starting code units: 0 1 2 3 4 5 6 7 8 9 3601Last code unit = 'f' 3602Subject length lower bound = 7 3603 1234abcdef 3604--->1234abcdef 3605 1 ^ \d 3606 1 ^ \d 3607 1 ^ \d 3608 1 ^ \d 3609 2 ^ ^ d 3610 0: 4abcdef 3611\= Expect no match 3612 abcdef 3613No match 3614 3615/(?C255)ab/I 3616Capture group count = 0 3617First code unit = 'a' 3618Last code unit = 'b' 3619Subject length lower bound = 2 3620 3621/(?C256)ab/I 3622Failed: error 138 at offset 6: number after (?C is greater than 255 3623 3624/(?Cab)xx/I 3625Failed: error 182 at offset 3: unrecognized string delimiter follows (?C 3626 3627/(?C12vr)x/I 3628Failed: error 139 at offset 5: closing parenthesis for (?C expected 3629 3630/abc(?C)def/I 3631Capture group count = 0 3632First code unit = 'a' 3633Last code unit = 'f' 3634Subject length lower bound = 6 3635 \x83\x0\x61bcdef 3636--->\x83\x00abcdef 3637 0 ^ ^ d 3638 0: abcdef 3639 3640/(abc)(?C)de(?C1)f/I 3641Capture group count = 1 3642First code unit = 'a' 3643Last code unit = 'f' 3644Subject length lower bound = 6 3645 123abcdef 3646--->123abcdef 3647 0 ^ ^ d 3648 1 ^ ^ f 3649 0: abcdef 3650 1: abc 3651 123abcdef\=callout_capture 3652Callout 0: last capture = 1 3653 1: abc 3654--->123abcdef 3655 ^ ^ d 3656Callout 1: last capture = 1 3657 1: abc 3658--->123abcdef 3659 ^ ^ f 3660 0: abcdef 3661 1: abc 3662 123abcdefC-\=callout_none 3663 0: abcdef 3664 1: abc 3665\= Expect no match 3666 123abcdef\=callout_fail=1 3667--->123abcdef 3668 0 ^ ^ d 3669 1 ^ ^ f 3670No match 3671 3672/(?C0)(abc(?C1))*/I 3673Capture group count = 1 3674May match empty string 3675Subject length lower bound = 0 3676 abcabcabc 3677--->abcabcabc 3678 0 ^ ( 3679 1 ^ ^ )* 3680 1 ^ ^ )* 3681 1 ^ ^ )* 3682 0: abcabcabc 3683 1: abc 3684 abcabc\=callout_fail=1:4 3685--->abcabc 3686 0 ^ ( 3687 1 ^ ^ )* 3688 1 ^ ^ )* 3689 0: abcabc 3690 1: abc 3691 abcabcabc\=callout_fail=1:4 3692--->abcabcabc 3693 0 ^ ( 3694 1 ^ ^ )* 3695 1 ^ ^ )* 3696 1 ^ ^ )* 3697 0: abcabc 3698 1: abc 3699 3700/(\d{3}(?C))*/I 3701Capture group count = 1 3702May match empty string 3703Subject length lower bound = 0 3704 123\=callout_capture 3705Callout 0: last capture = 0 3706--->123 3707 ^ ^ )* 3708 0: 123 3709 1: 123 3710 123456\=callout_capture 3711Callout 0: last capture = 0 3712--->123456 3713 ^ ^ )* 3714Callout 0: last capture = 1 3715 1: 123 3716--->123456 3717 ^ ^ )* 3718 0: 123456 3719 1: 456 3720 123456789\=callout_capture 3721Callout 0: last capture = 0 3722--->123456789 3723 ^ ^ )* 3724Callout 0: last capture = 1 3725 1: 123 3726--->123456789 3727 ^ ^ )* 3728Callout 0: last capture = 1 3729 1: 456 3730--->123456789 3731 ^ ^ )* 3732 0: 123456789 3733 1: 789 3734 3735/((xyz)(?C)p|(?C1)xyzabc)/I 3736Capture group count = 2 3737First code unit = 'x' 3738Subject length lower bound = 4 3739 xyzabc\=callout_capture 3740Callout 0: last capture = 2 3741 1: <unset> 3742 2: xyz 3743--->xyzabc 3744 ^ ^ p 3745Callout 1: last capture = 0 3746--->xyzabc 3747 ^ x 3748 0: xyzabc 3749 1: xyzabc 3750 3751/(X)((xyz)(?C)p|(?C1)xyzabc)/I 3752Capture group count = 3 3753First code unit = 'X' 3754Last code unit = 'x' 3755Subject length lower bound = 5 3756 Xxyzabc\=callout_capture 3757Callout 0: last capture = 3 3758 1: X 3759 2: <unset> 3760 3: xyz 3761--->Xxyzabc 3762 ^ ^ p 3763Callout 1: last capture = 1 3764 1: X 3765--->Xxyzabc 3766 ^^ x 3767 0: Xxyzabc 3768 1: X 3769 2: xyzabc 3770 3771/(?=(abc))(?C)abcdef/I 3772Capture group count = 1 3773First code unit = 'a' 3774Last code unit = 'f' 3775Subject length lower bound = 6 3776 abcdef\=callout_capture 3777Callout 0: last capture = 1 3778 1: abc 3779--->abcdef 3780 ^ a 3781 0: abcdef 3782 1: abc 3783 3784/(?!(abc)(?C1)d)(?C2)abcxyz/I 3785Capture group count = 1 3786First code unit = 'a' 3787Last code unit = 'z' 3788Subject length lower bound = 6 3789 abcxyz\=callout_capture 3790Callout 1: last capture = 1 3791 1: abc 3792--->abcxyz 3793 ^ ^ d 3794Callout 2: last capture = 0 3795--->abcxyz 3796 ^ a 3797 0: abcxyz 3798 3799/(?<=(abc)(?C))xyz/I 3800Capture group count = 1 3801Max lookbehind = 3 3802First code unit = 'x' 3803Last code unit = 'z' 3804Subject length lower bound = 3 3805 abcxyz\=callout_capture 3806Callout 0: last capture = 1 3807 1: abc 3808--->abcxyz 3809 ^ ) 3810 0: xyz 3811 1: abc 3812 3813/a(b+)(c*)(?C1)/I 3814Capture group count = 2 3815First code unit = 'a' 3816Last code unit = 'b' 3817Subject length lower bound = 2 3818\= Expect no match 3819 abbbbbccc\=callout_data=1 3820--->abbbbbccc 3821 1 ^ ^ End of pattern 3822Callout data = 1 3823No match 3824 3825/a(b+?)(c*?)(?C1)/I 3826Capture group count = 2 3827First code unit = 'a' 3828Last code unit = 'b' 3829Subject length lower bound = 2 3830\= Expect no match 3831 abbbbbccc\=callout_data=1 3832--->abbbbbccc 3833 1 ^ ^ End of pattern 3834Callout data = 1 3835 1 ^ ^ End of pattern 3836Callout data = 1 3837 1 ^ ^ End of pattern 3838Callout data = 1 3839 1 ^ ^ End of pattern 3840Callout data = 1 3841 1 ^ ^ End of pattern 3842Callout data = 1 3843 1 ^ ^ End of pattern 3844Callout data = 1 3845 1 ^ ^ End of pattern 3846Callout data = 1 3847 1 ^ ^ End of pattern 3848Callout data = 1 3849No match 3850 3851/(?C)abc/I 3852Capture group count = 0 3853First code unit = 'a' 3854Last code unit = 'c' 3855Subject length lower bound = 3 3856 3857/(?C)^abc/I 3858Capture group count = 0 3859Compile options: <none> 3860Overall options: anchored 3861First code unit = 'a' 3862Subject length lower bound = 3 3863 3864/(?C)a|b/I 3865Capture group count = 0 3866Starting code units: a b 3867Subject length lower bound = 1 3868 3869/a|(b)(?C)/I 3870Capture group count = 1 3871Starting code units: a b 3872Subject length lower bound = 1 3873 b 3874--->b 3875 0 ^^ End of pattern 3876 0: b 3877 1: b 3878 3879/x(ab|(bc|(de|(?R))))/I 3880Capture group count = 3 3881First code unit = 'x' 3882Subject length lower bound = 3 3883 xab 3884 0: xab 3885 1: ab 3886 xbc 3887 0: xbc 3888 1: bc 3889 2: bc 3890 xde 3891 0: xde 3892 1: de 3893 2: de 3894 3: de 3895 xxab 3896 0: xxab 3897 1: xab 3898 2: xab 3899 3: xab 3900 xxxab 3901 0: xxxab 3902 1: xxab 3903 2: xxab 3904 3: xxab 3905\= Expect no match 3906 xyab 3907No match 3908 3909/^([^()]|\((?1)*\))*$/I 3910Capture group count = 1 3911May match empty string 3912Compile options: <none> 3913Overall options: anchored 3914Subject length lower bound = 0 3915 abc 3916 0: abc 3917 1: c 3918 a(b)c 3919 0: a(b)c 3920 1: c 3921 a(b(c))d 3922 0: a(b(c))d 3923 1: d 3924\= Expect no match) 3925 a(b(c)d 3926No match 3927 3928/^>abc>([^()]|\((?1)*\))*<xyz<$/I 3929Capture group count = 1 3930Compile options: <none> 3931Overall options: anchored 3932First code unit = '>' 3933Last code unit = '<' 3934Subject length lower bound = 10 3935 >abc>123<xyz< 3936 0: >abc>123<xyz< 3937 1: 3 3938 >abc>1(2)3<xyz< 3939 0: >abc>1(2)3<xyz< 3940 1: 3 3941 >abc>(1(2)3)<xyz< 3942 0: >abc>(1(2)3)<xyz< 3943 1: (1(2)3) 3944 3945/(a(?1)b)/IB 3946------------------------------------------------------------------ 3947 Bra 3948 CBra 1 3949 a 3950 Recurse 3951 b 3952 Ket 3953 Ket 3954 End 3955------------------------------------------------------------------ 3956Capture group count = 1 3957First code unit = 'a' 3958Last code unit = 'b' 3959Subject length lower bound = 2 3960 3961/(a(?1)+b)/IB 3962------------------------------------------------------------------ 3963 Bra 3964 CBra 1 3965 a 3966 SBra 3967 Recurse 3968 KetRmax 3969 b 3970 Ket 3971 Ket 3972 End 3973------------------------------------------------------------------ 3974Capture group count = 1 3975First code unit = 'a' 3976Last code unit = 'b' 3977Subject length lower bound = 2 3978 3979/^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/I 3980Capture group count = 2 3981Compile options: <none> 3982Overall options: anchored 3983Starting code units: ( - 0 1 2 3 4 5 6 7 8 9 3984Subject length lower bound = 1 3985 12 3986 0: 12 3987 1: 12 3988 (((2+2)*-3)-7) 3989 0: (((2+2)*-3)-7) 3990 1: (((2+2)*-3)-7) 3991 2: - 3992 -12 3993 0: -12 3994 1: -12 3995\= Expect no match 3996 ((2+2)*-3)-7) 3997No match 3998 3999/^(x(y|(?1){2})z)/I 4000Capture group count = 2 4001Compile options: <none> 4002Overall options: anchored 4003First code unit = 'x' 4004Subject length lower bound = 3 4005 xyz 4006 0: xyz 4007 1: xyz 4008 2: y 4009 xxyzxyzz 4010 0: xxyzxyzz 4011 1: xxyzxyzz 4012 2: xyzxyz 4013\= Expect no match 4014 xxyzz 4015No match 4016 xxyzxyzxyzz 4017No match 4018 4019/((< (?: (?(R) \d++ | [^<>]*+) | (?2)) * >))/Ix 4020Capture group count = 2 4021Options: extended 4022First code unit = '<' 4023Last code unit = '>' 4024Subject length lower bound = 2 4025 <> 4026 0: <> 4027 1: <> 4028 2: <> 4029 <abcd> 4030 0: <abcd> 4031 1: <abcd> 4032 2: <abcd> 4033 <abc <123> hij> 4034 0: <abc <123> hij> 4035 1: <abc <123> hij> 4036 2: <abc <123> hij> 4037 <abc <def> hij> 4038 0: <def> 4039 1: <def> 4040 2: <def> 4041 <abc<>def> 4042 0: <abc<>def> 4043 1: <abc<>def> 4044 2: <abc<>def> 4045 <abc<> 4046 0: <> 4047 1: <> 4048 2: <> 4049\= Expect no match 4050 <abc 4051No match 4052 4053/(?1)/I 4054Failed: error 115 at offset 3: reference to non-existent subpattern 4055 4056/((?2)(abc)/I 4057Failed: error 114 at offset 10: missing closing parenthesis 4058 4059/^(abc)def(?1)/I 4060Capture group count = 1 4061Compile options: <none> 4062Overall options: anchored 4063First code unit = 'a' 4064Subject length lower bound = 9 4065 abcdefabc 4066 0: abcdefabc 4067 1: abc 4068 4069/^(a|b|c)=(?1)+/I 4070Capture group count = 1 4071Compile options: <none> 4072Overall options: anchored 4073Starting code units: a b c 4074Subject length lower bound = 2 4075 a=a 4076 0: a=a 4077 1: a 4078 a=b 4079 0: a=b 4080 1: a 4081 a=bc 4082 0: a=bc 4083 1: a 4084 4085/^(a|b|c)=((?1))+/I 4086Capture group count = 2 4087Compile options: <none> 4088Overall options: anchored 4089Starting code units: a b c 4090Subject length lower bound = 2 4091 a=a 4092 0: a=a 4093 1: a 4094 2: a 4095 a=b 4096 0: a=b 4097 1: a 4098 2: b 4099 a=bc 4100 0: a=bc 4101 1: a 4102 2: c 4103 4104/a(?P<name1>b|c)d(?P<longername2>e)/IB 4105------------------------------------------------------------------ 4106 Bra 4107 a 4108 CBra 1 4109 b 4110 Alt 4111 c 4112 Ket 4113 d 4114 CBra 2 4115 e 4116 Ket 4117 Ket 4118 End 4119------------------------------------------------------------------ 4120Capture group count = 2 4121Named capture groups: 4122 longername2 2 4123 name1 1 4124First code unit = 'a' 4125Last code unit = 'e' 4126Subject length lower bound = 4 4127 abde 4128 0: abde 4129 1: b 4130 2: e 4131 acde 4132 0: acde 4133 1: c 4134 2: e 4135 4136/(?:a(?P<c>c(?P<d>d)))(?P<a>a)/IB 4137------------------------------------------------------------------ 4138 Bra 4139 Bra 4140 a 4141 CBra 1 4142 c 4143 CBra 2 4144 d 4145 Ket 4146 Ket 4147 Ket 4148 CBra 3 4149 a 4150 Ket 4151 Ket 4152 End 4153------------------------------------------------------------------ 4154Capture group count = 3 4155Named capture groups: 4156 a 3 4157 c 1 4158 d 2 4159First code unit = 'a' 4160Last code unit = 'a' 4161Subject length lower bound = 4 4162 4163/(?P<a>a)...(?P=a)bbb(?P>a)d/IB 4164------------------------------------------------------------------ 4165 Bra 4166 CBra 1 4167 a 4168 Ket 4169 Any 4170 Any 4171 Any 4172 \1 4173 bbb 4174 Recurse 4175 d 4176 Ket 4177 End 4178------------------------------------------------------------------ 4179Capture group count = 1 4180Max back reference = 1 4181Named capture groups: 4182 a 1 4183First code unit = 'a' 4184Last code unit = 'd' 4185Subject length lower bound = 10 4186 4187/^\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 4188Capture group count = 4 4189Max back reference = 4 4190Named capture groups: 4191 four 4 4192 one 1 4193 three 3 4194 two 2 4195May match empty string 4196Compile options: caseless 4197Overall options: anchored caseless 4198Subject length lower bound = 0 4199 1221 4200 0: 1221 4201 1: 1221 4202 2: 1 4203 Satan, oscillate my metallic sonatas! 4204 0: Satan, oscillate my metallic sonatas! 4205 1: <unset> 4206 2: <unset> 4207 3: Satan, oscillate my metallic sonatas 4208 4: S 4209 A man, a plan, a canal: Panama! 4210 0: A man, a plan, a canal: Panama! 4211 1: <unset> 4212 2: <unset> 4213 3: A man, a plan, a canal: Panama 4214 4: A 4215 Able was I ere I saw Elba. 4216 0: Able was I ere I saw Elba. 4217 1: <unset> 4218 2: <unset> 4219 3: Able was I ere I saw Elba 4220 4: A 4221\= Expect no match 4222 The quick brown fox 4223No match 4224 4225/((?(R)a|b))\1(?1)?/I 4226Capture group count = 1 4227Max back reference = 1 4228Subject length lower bound = 2 4229 bb 4230 0: bb 4231 1: b 4232 bbaa 4233 0: bba 4234 1: b 4235 4236/(.*)a/Is 4237Capture group count = 1 4238Compile options: dotall 4239Overall options: anchored dotall 4240Last code unit = 'a' 4241Subject length lower bound = 1 4242 4243/(.*)a\1/Is 4244Capture group count = 1 4245Max back reference = 1 4246Options: dotall 4247Last code unit = 'a' 4248Subject length lower bound = 1 4249 4250/(.*)a(b)\2/Is 4251Capture group count = 2 4252Max back reference = 2 4253Compile options: dotall 4254Overall options: anchored dotall 4255Last code unit = 'b' 4256Subject length lower bound = 3 4257 4258/((.*)a|(.*)b)z/Is 4259Capture group count = 3 4260Compile options: dotall 4261Overall options: anchored dotall 4262Last code unit = 'z' 4263Subject length lower bound = 2 4264 4265/((.*)a|(.*)b)z\1/Is 4266Capture group count = 3 4267Max back reference = 1 4268Options: dotall 4269Last code unit = 'z' 4270Subject length lower bound = 3 4271 4272/((.*)a|(.*)b)z\2/Is 4273Capture group count = 3 4274Max back reference = 2 4275Options: dotall 4276Last code unit = 'z' 4277Subject length lower bound = 2 4278 4279/((.*)a|(.*)b)z\3/Is 4280Capture group count = 3 4281Max back reference = 3 4282Options: dotall 4283Last code unit = 'z' 4284Subject length lower bound = 2 4285 4286/((.*)a|^(.*)b)z\3/Is 4287Capture group count = 3 4288Max back reference = 3 4289Compile options: dotall 4290Overall options: anchored dotall 4291Last code unit = 'z' 4292Subject length lower bound = 2 4293 4294/(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a/Is 4295Capture group count = 31 4296May match empty string 4297Compile options: dotall 4298Overall options: anchored dotall 4299Subject length lower bound = 0 4300 4301/(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\31/Is 4302Capture group count = 31 4303Max back reference = 31 4304May match empty string 4305Options: dotall 4306Subject length lower bound = 0 4307 4308/(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\32/Is 4309Capture group count = 32 4310Max back reference = 32 4311May match empty string 4312Options: dotall 4313Subject length lower bound = 0 4314 4315/(a)(bc)/IB,no_auto_capture 4316------------------------------------------------------------------ 4317 Bra 4318 Bra 4319 a 4320 Ket 4321 Bra 4322 bc 4323 Ket 4324 Ket 4325 End 4326------------------------------------------------------------------ 4327Capture group count = 0 4328Options: no_auto_capture 4329First code unit = 'a' 4330Last code unit = 'c' 4331Subject length lower bound = 3 4332 abc 4333 0: abc 4334 4335/(?P<one>a)(bc)/IB,no_auto_capture 4336------------------------------------------------------------------ 4337 Bra 4338 CBra 1 4339 a 4340 Ket 4341 Bra 4342 bc 4343 Ket 4344 Ket 4345 End 4346------------------------------------------------------------------ 4347Capture group count = 1 4348Named capture groups: 4349 one 1 4350Options: no_auto_capture 4351First code unit = 'a' 4352Last code unit = 'c' 4353Subject length lower bound = 3 4354 abc 4355 0: abc 4356 1: a 4357 4358/(a)(?P<named>bc)/IB,no_auto_capture 4359------------------------------------------------------------------ 4360 Bra 4361 Bra 4362 a 4363 Ket 4364 CBra 1 4365 bc 4366 Ket 4367 Ket 4368 End 4369------------------------------------------------------------------ 4370Capture group count = 1 4371Named capture groups: 4372 named 1 4373Options: no_auto_capture 4374First code unit = 'a' 4375Last code unit = 'c' 4376Subject length lower bound = 3 4377 4378/(aaa(?C1)bbb|ab)/I 4379Capture group count = 1 4380First code unit = 'a' 4381Last code unit = 'b' 4382Subject length lower bound = 2 4383 aaabbb 4384--->aaabbb 4385 1 ^ ^ b 4386 0: aaabbb 4387 1: aaabbb 4388 aaabbb\=callout_data=0 4389--->aaabbb 4390 1 ^ ^ b 4391 0: aaabbb 4392 1: aaabbb 4393 aaabbb\=callout_data=1 4394--->aaabbb 4395 1 ^ ^ b 4396Callout data = 1 4397 0: ab 4398 1: ab 4399\= Expect no match 4400 aaabbb\=callout_data=-1 4401--->aaabbb 4402 1 ^ ^ b 4403Callout data = -1 4404No match 4405 4406/ab(?P<one>cd)ef(?P<two>gh)/I 4407Capture group count = 2 4408Named capture groups: 4409 one 1 4410 two 2 4411First code unit = 'a' 4412Last code unit = 'h' 4413Subject length lower bound = 8 4414 abcdefgh 4415 0: abcdefgh 4416 1: cd 4417 2: gh 4418 abcdefgh\=copy=1,get=two 4419 0: abcdefgh 4420 1: cd 4421 2: gh 4422 1C cd (2) 4423 G gh (2) two (group 2) 4424 abcdefgh\=copy=one,copy=two 4425 0: abcdefgh 4426 1: cd 4427 2: gh 4428 C cd (2) one (group 1) 4429 C gh (2) two (group 2) 4430 abcdefgh\=copy=three 4431 0: abcdefgh 4432 1: cd 4433 2: gh 4434Number not found for group 'three' 4435Copy substring 'three' failed (-49): unknown substring 4436 4437/(?P<Tes>)(?P<Test>)/IB 4438------------------------------------------------------------------ 4439 Bra 4440 CBra 1 4441 Ket 4442 CBra 2 4443 Ket 4444 Ket 4445 End 4446------------------------------------------------------------------ 4447Capture group count = 2 4448Named capture groups: 4449 Tes 1 4450 Test 2 4451May match empty string 4452Subject length lower bound = 0 4453 4454/(?P<Test>)(?P<Tes>)/IB 4455------------------------------------------------------------------ 4456 Bra 4457 CBra 1 4458 Ket 4459 CBra 2 4460 Ket 4461 Ket 4462 End 4463------------------------------------------------------------------ 4464Capture group count = 2 4465Named capture groups: 4466 Tes 2 4467 Test 1 4468May match empty string 4469Subject length lower bound = 0 4470 4471/(?P<Z>zz)(?P<A>aa)/I 4472Capture group count = 2 4473Named capture groups: 4474 A 2 4475 Z 1 4476First code unit = 'z' 4477Last code unit = 'a' 4478Subject length lower bound = 4 4479 zzaa\=copy=Z 4480 0: zzaa 4481 1: zz 4482 2: aa 4483 C zz (2) Z (group 1) 4484 zzaa\=copy=A 4485 0: zzaa 4486 1: zz 4487 2: aa 4488 C aa (2) A (group 2) 4489 4490/(?P<x>eks)(?P<x>eccs)/I 4491Failed: error 143 at offset 16: two named subpatterns have the same name (PCRE2_DUPNAMES not set) 4492 4493/(?P<abc>abc(?P<def>def)(?P<abc>xyz))/I 4494Failed: error 143 at offset 31: two named subpatterns have the same name (PCRE2_DUPNAMES not set) 4495 4496"\[((?P<elem>\d+)(,(?P>elem))*)\]"I 4497Capture group count = 3 4498Named capture groups: 4499 elem 2 4500First code unit = '[' 4501Last code unit = ']' 4502Subject length lower bound = 3 4503 [10,20,30,5,5,4,4,2,43,23,4234] 4504 0: [10,20,30,5,5,4,4,2,43,23,4234] 4505 1: 10,20,30,5,5,4,4,2,43,23,4234 4506 2: 10 4507 3: ,4234 4508\= Expect no match 4509 [] 4510No match 4511 4512"\[((?P<elem>\d+)(,(?P>elem))*)?\]"I 4513Capture group count = 3 4514Named capture groups: 4515 elem 2 4516First code unit = '[' 4517Last code unit = ']' 4518Subject length lower bound = 2 4519 [10,20,30,5,5,4,4,2,43,23,4234] 4520 0: [10,20,30,5,5,4,4,2,43,23,4234] 4521 1: 10,20,30,5,5,4,4,2,43,23,4234 4522 2: 10 4523 3: ,4234 4524 [] 4525 0: [] 4526 4527/(a(b(?2)c))?/IB 4528------------------------------------------------------------------ 4529 Bra 4530 Brazero 4531 CBra 1 4532 a 4533 CBra 2 4534 b 4535 Recurse 4536 c 4537 Ket 4538 Ket 4539 Ket 4540 End 4541------------------------------------------------------------------ 4542Capture group count = 2 4543May match empty string 4544Subject length lower bound = 0 4545 4546/(a(b(?2)c))*/IB 4547------------------------------------------------------------------ 4548 Bra 4549 Brazero 4550 CBra 1 4551 a 4552 CBra 2 4553 b 4554 Recurse 4555 c 4556 Ket 4557 KetRmax 4558 Ket 4559 End 4560------------------------------------------------------------------ 4561Capture group count = 2 4562May match empty string 4563Subject length lower bound = 0 4564 4565/(a(b(?2)c)){0,2}/IB 4566------------------------------------------------------------------ 4567 Bra 4568 Brazero 4569 Bra 4570 CBra 1 4571 a 4572 CBra 2 4573 b 4574 Recurse 4575 c 4576 Ket 4577 Ket 4578 Brazero 4579 CBra 1 4580 a 4581 CBra 2 4582 b 4583 Recurse 4584 c 4585 Ket 4586 Ket 4587 Ket 4588 Ket 4589 End 4590------------------------------------------------------------------ 4591Capture group count = 2 4592May match empty string 4593Subject length lower bound = 0 4594 4595/[ab]{1}+/B 4596------------------------------------------------------------------ 4597 Bra 4598 [ab] 4599 Ket 4600 End 4601------------------------------------------------------------------ 4602 4603/()(?1){1}/B 4604------------------------------------------------------------------ 4605 Bra 4606 CBra 1 4607 Ket 4608 Recurse 4609 Ket 4610 End 4611------------------------------------------------------------------ 4612 4613/()(?1)/B 4614------------------------------------------------------------------ 4615 Bra 4616 CBra 1 4617 Ket 4618 Recurse 4619 Ket 4620 End 4621------------------------------------------------------------------ 4622 4623/((w\/|-|with)*(free|immediate)*.*?shipping\s*[!.-]*)/Ii 4624Capture group count = 3 4625Options: caseless 4626Last code unit = 'g' (caseless) 4627Subject length lower bound = 8 4628 Baby Bjorn Active Carrier - With free SHIPPING!! 4629 0: Baby Bjorn Active Carrier - With free SHIPPING!! 4630 1: Baby Bjorn Active Carrier - With free SHIPPING!! 4631 4632/((w\/|-|with)*(free|immediate)*.*?shipping\s*[!.-]*)/Ii 4633Capture group count = 3 4634Options: caseless 4635Last code unit = 'g' (caseless) 4636Subject length lower bound = 8 4637 Baby Bjorn Active Carrier - With free SHIPPING!! 4638 0: Baby Bjorn Active Carrier - With free SHIPPING!! 4639 1: Baby Bjorn Active Carrier - With free SHIPPING!! 4640 4641/a*.*b/IB 4642------------------------------------------------------------------ 4643 Bra 4644 a* 4645 Any* 4646 b 4647 Ket 4648 End 4649------------------------------------------------------------------ 4650Capture group count = 0 4651Last code unit = 'b' 4652Subject length lower bound = 1 4653 4654/(a|b)*.?c/IB 4655------------------------------------------------------------------ 4656 Bra 4657 Brazero 4658 CBra 1 4659 a 4660 Alt 4661 b 4662 KetRmax 4663 Any? 4664 c 4665 Ket 4666 End 4667------------------------------------------------------------------ 4668Capture group count = 1 4669Last code unit = 'c' 4670Subject length lower bound = 1 4671 4672/abc(?C255)de(?C)f/IB 4673------------------------------------------------------------------ 4674 Bra 4675 abc 4676 Callout 255 10 1 4677 de 4678 Callout 0 16 1 4679 f 4680 Ket 4681 End 4682------------------------------------------------------------------ 4683Capture group count = 0 4684First code unit = 'a' 4685Last code unit = 'f' 4686Subject length lower bound = 6 4687 4688/abcde/IB,auto_callout 4689------------------------------------------------------------------ 4690 Bra 4691 Callout 255 0 1 4692 a 4693 Callout 255 1 1 4694 b 4695 Callout 255 2 1 4696 c 4697 Callout 255 3 1 4698 d 4699 Callout 255 4 1 4700 e 4701 Callout 255 5 0 4702 Ket 4703 End 4704------------------------------------------------------------------ 4705Capture group count = 0 4706Options: auto_callout 4707First code unit = 'a' 4708Last code unit = 'e' 4709Subject length lower bound = 5 4710 abcde 4711--->abcde 4712 +0 ^ a 4713 +1 ^^ b 4714 +2 ^ ^ c 4715 +3 ^ ^ d 4716 +4 ^ ^ e 4717 +5 ^ ^ End of pattern 4718 0: abcde 4719\= Expect no match 4720 abcdfe 4721--->abcdfe 4722 +0 ^ a 4723 +1 ^^ b 4724 +2 ^ ^ c 4725 +3 ^ ^ d 4726 +4 ^ ^ e 4727No match 4728 4729/a*b/IB,auto_callout 4730------------------------------------------------------------------ 4731 Bra 4732 Callout 255 0 2 4733 a*+ 4734 Callout 255 2 1 4735 b 4736 Callout 255 3 0 4737 Ket 4738 End 4739------------------------------------------------------------------ 4740Capture group count = 0 4741Options: auto_callout 4742Starting code units: a b 4743Last code unit = 'b' 4744Subject length lower bound = 1 4745 ab 4746--->ab 4747 +0 ^ a* 4748 +2 ^^ b 4749 +3 ^ ^ End of pattern 4750 0: ab 4751 aaaab 4752--->aaaab 4753 +0 ^ a* 4754 +2 ^ ^ b 4755 +3 ^ ^ End of pattern 4756 0: aaaab 4757 aaaacb 4758--->aaaacb 4759 +0 ^ a* 4760 +2 ^ ^ b 4761 +0 ^ a* 4762 +2 ^ ^ b 4763 +0 ^ a* 4764 +2 ^ ^ b 4765 +0 ^ a* 4766 +2 ^^ b 4767 +0 ^ a* 4768 +2 ^ b 4769 +3 ^^ End of pattern 4770 0: b 4771 4772/a*b/IB,auto_callout 4773------------------------------------------------------------------ 4774 Bra 4775 Callout 255 0 2 4776 a*+ 4777 Callout 255 2 1 4778 b 4779 Callout 255 3 0 4780 Ket 4781 End 4782------------------------------------------------------------------ 4783Capture group count = 0 4784Options: auto_callout 4785Starting code units: a b 4786Last code unit = 'b' 4787Subject length lower bound = 1 4788 ab 4789--->ab 4790 +0 ^ a* 4791 +2 ^^ b 4792 +3 ^ ^ End of pattern 4793 0: ab 4794 aaaab 4795--->aaaab 4796 +0 ^ a* 4797 +2 ^ ^ b 4798 +3 ^ ^ End of pattern 4799 0: aaaab 4800 aaaacb 4801--->aaaacb 4802 +0 ^ a* 4803 +2 ^ ^ b 4804 +0 ^ a* 4805 +2 ^ ^ b 4806 +0 ^ a* 4807 +2 ^ ^ b 4808 +0 ^ a* 4809 +2 ^^ b 4810 +0 ^ a* 4811 +2 ^ b 4812 +3 ^^ End of pattern 4813 0: b 4814 4815/a+b/IB,auto_callout 4816------------------------------------------------------------------ 4817 Bra 4818 Callout 255 0 2 4819 a++ 4820 Callout 255 2 1 4821 b 4822 Callout 255 3 0 4823 Ket 4824 End 4825------------------------------------------------------------------ 4826Capture group count = 0 4827Options: auto_callout 4828First code unit = 'a' 4829Last code unit = 'b' 4830Subject length lower bound = 2 4831 ab 4832--->ab 4833 +0 ^ a+ 4834 +2 ^^ b 4835 +3 ^ ^ End of pattern 4836 0: ab 4837 aaaab 4838--->aaaab 4839 +0 ^ a+ 4840 +2 ^ ^ b 4841 +3 ^ ^ End of pattern 4842 0: aaaab 4843\= Expect no match 4844 aaaacb 4845--->aaaacb 4846 +0 ^ a+ 4847 +2 ^ ^ b 4848 +0 ^ a+ 4849 +2 ^ ^ b 4850 +0 ^ a+ 4851 +2 ^ ^ b 4852 +0 ^ a+ 4853 +2 ^^ b 4854No match 4855 4856/(abc|def)x/IB,auto_callout 4857------------------------------------------------------------------ 4858 Bra 4859 Callout 255 0 1 4860 CBra 1 4861 Callout 255 1 1 4862 a 4863 Callout 255 2 1 4864 b 4865 Callout 255 3 1 4866 c 4867 Callout 255 4 1 4868 Alt 4869 Callout 255 5 1 4870 d 4871 Callout 255 6 1 4872 e 4873 Callout 255 7 1 4874 f 4875 Callout 255 8 1 4876 Ket 4877 Callout 255 9 1 4878 x 4879 Callout 255 10 0 4880 Ket 4881 End 4882------------------------------------------------------------------ 4883Capture group count = 1 4884Options: auto_callout 4885Starting code units: a d 4886Last code unit = 'x' 4887Subject length lower bound = 4 4888 abcx 4889--->abcx 4890 +0 ^ ( 4891 +1 ^ a 4892 +2 ^^ b 4893 +3 ^ ^ c 4894 +4 ^ ^ | 4895 +9 ^ ^ x 4896+10 ^ ^ End of pattern 4897 0: abcx 4898 1: abc 4899 defx 4900--->defx 4901 +0 ^ ( 4902 +1 ^ a 4903 +5 ^ d 4904 +6 ^^ e 4905 +7 ^ ^ f 4906 +8 ^ ^ ) 4907 +9 ^ ^ x 4908+10 ^ ^ End of pattern 4909 0: defx 4910 1: def 4911\= Expect no match 4912 abcdefzx 4913--->abcdefzx 4914 +0 ^ ( 4915 +1 ^ a 4916 +2 ^^ b 4917 +3 ^ ^ c 4918 +4 ^ ^ | 4919 +9 ^ ^ x 4920 +5 ^ d 4921 +0 ^ ( 4922 +1 ^ a 4923 +5 ^ d 4924 +6 ^^ e 4925 +7 ^ ^ f 4926 +8 ^ ^ ) 4927 +9 ^ ^ x 4928No match 4929 4930/(abc|def)x/IB,auto_callout 4931------------------------------------------------------------------ 4932 Bra 4933 Callout 255 0 1 4934 CBra 1 4935 Callout 255 1 1 4936 a 4937 Callout 255 2 1 4938 b 4939 Callout 255 3 1 4940 c 4941 Callout 255 4 1 4942 Alt 4943 Callout 255 5 1 4944 d 4945 Callout 255 6 1 4946 e 4947 Callout 255 7 1 4948 f 4949 Callout 255 8 1 4950 Ket 4951 Callout 255 9 1 4952 x 4953 Callout 255 10 0 4954 Ket 4955 End 4956------------------------------------------------------------------ 4957Capture group count = 1 4958Options: auto_callout 4959Starting code units: a d 4960Last code unit = 'x' 4961Subject length lower bound = 4 4962 abcx 4963--->abcx 4964 +0 ^ ( 4965 +1 ^ a 4966 +2 ^^ b 4967 +3 ^ ^ c 4968 +4 ^ ^ | 4969 +9 ^ ^ x 4970+10 ^ ^ End of pattern 4971 0: abcx 4972 1: abc 4973 defx 4974--->defx 4975 +0 ^ ( 4976 +1 ^ a 4977 +5 ^ d 4978 +6 ^^ e 4979 +7 ^ ^ f 4980 +8 ^ ^ ) 4981 +9 ^ ^ x 4982+10 ^ ^ End of pattern 4983 0: defx 4984 1: def 4985\= Expect no match 4986 abcdefzx 4987--->abcdefzx 4988 +0 ^ ( 4989 +1 ^ a 4990 +2 ^^ b 4991 +3 ^ ^ c 4992 +4 ^ ^ | 4993 +9 ^ ^ x 4994 +5 ^ d 4995 +0 ^ ( 4996 +1 ^ a 4997 +5 ^ d 4998 +6 ^^ e 4999 +7 ^ ^ f 5000 +8 ^ ^ ) 5001 +9 ^ ^ x 5002No match 5003 5004/(ab|cd){3,4}/I,auto_callout 5005Capture group count = 1 5006Options: auto_callout 5007Starting code units: a c 5008Subject length lower bound = 6 5009 ababab 5010--->ababab 5011 +0 ^ ( 5012 +1 ^ a 5013 +2 ^^ b 5014 +3 ^ ^ | 5015 +1 ^ ^ a 5016 +2 ^ ^ b 5017 +3 ^ ^ | 5018 +1 ^ ^ a 5019 +2 ^ ^ b 5020 +3 ^ ^ | 5021 +1 ^ ^ a 5022 +4 ^ ^ c 5023+12 ^ ^ End of pattern 5024 0: ababab 5025 1: ab 5026 abcdabcd 5027--->abcdabcd 5028 +0 ^ ( 5029 +1 ^ a 5030 +2 ^^ b 5031 +3 ^ ^ | 5032 +1 ^ ^ a 5033 +4 ^ ^ c 5034 +5 ^ ^ d 5035 +6 ^ ^ ){3,4} 5036 +1 ^ ^ a 5037 +2 ^ ^ b 5038 +3 ^ ^ | 5039 +1 ^ ^ a 5040 +4 ^ ^ c 5041 +5 ^ ^ d 5042 +6 ^ ^ ){3,4} 5043+12 ^ ^ End of pattern 5044 0: abcdabcd 5045 1: cd 5046 abcdcdcdcdcd 5047--->abcdcdcdcdcd 5048 +0 ^ ( 5049 +1 ^ a 5050 +2 ^^ b 5051 +3 ^ ^ | 5052 +1 ^ ^ a 5053 +4 ^ ^ c 5054 +5 ^ ^ d 5055 +6 ^ ^ ){3,4} 5056 +1 ^ ^ a 5057 +4 ^ ^ c 5058 +5 ^ ^ d 5059 +6 ^ ^ ){3,4} 5060 +1 ^ ^ a 5061 +4 ^ ^ c 5062 +5 ^ ^ d 5063 +6 ^ ^ ){3,4} 5064+12 ^ ^ End of pattern 5065 0: abcdcdcd 5066 1: cd 5067 5068/([ab]{,4}c|xy)/IB,auto_callout 5069------------------------------------------------------------------ 5070 Bra 5071 Callout 255 0 1 5072 CBra 1 5073 Callout 255 1 4 5074 [ab] 5075 Callout 255 5 1 5076 { 5077 Callout 255 6 1 5078 , 5079 Callout 255 7 1 5080 4 5081 Callout 255 8 1 5082 } 5083 Callout 255 9 1 5084 c 5085 Callout 255 10 1 5086 Alt 5087 Callout 255 11 1 5088 x 5089 Callout 255 12 1 5090 y 5091 Callout 255 13 1 5092 Ket 5093 Callout 255 14 0 5094 Ket 5095 End 5096------------------------------------------------------------------ 5097Capture group count = 1 5098Options: auto_callout 5099Starting code units: a b x 5100Subject length lower bound = 2 5101\= Expect no match 5102 Note: that { does NOT introduce a quantifier 5103--->Note: that { does NOT introduce a quantifier 5104 +0 ^ ( 5105 +1 ^ [ab] 5106 +5 ^^ { 5107+11 ^ x 5108 +0 ^ ( 5109 +1 ^ [ab] 5110 +5 ^^ { 5111+11 ^ x 5112 +0 ^ ( 5113 +1 ^ [ab] 5114 +5 ^^ { 5115+11 ^ x 5116No match 5117 5118/([ab]{,4}c|xy)/IB,auto_callout 5119------------------------------------------------------------------ 5120 Bra 5121 Callout 255 0 1 5122 CBra 1 5123 Callout 255 1 4 5124 [ab] 5125 Callout 255 5 1 5126 { 5127 Callout 255 6 1 5128 , 5129 Callout 255 7 1 5130 4 5131 Callout 255 8 1 5132 } 5133 Callout 255 9 1 5134 c 5135 Callout 255 10 1 5136 Alt 5137 Callout 255 11 1 5138 x 5139 Callout 255 12 1 5140 y 5141 Callout 255 13 1 5142 Ket 5143 Callout 255 14 0 5144 Ket 5145 End 5146------------------------------------------------------------------ 5147Capture group count = 1 5148Options: auto_callout 5149Starting code units: a b x 5150Subject length lower bound = 2 5151\= Expect no match 5152 Note: that { does NOT introduce a quantifier 5153--->Note: that { does NOT introduce a quantifier 5154 +0 ^ ( 5155 +1 ^ [ab] 5156 +5 ^^ { 5157+11 ^ x 5158 +0 ^ ( 5159 +1 ^ [ab] 5160 +5 ^^ { 5161+11 ^ x 5162 +0 ^ ( 5163 +1 ^ [ab] 5164 +5 ^^ { 5165+11 ^ x 5166No match 5167 5168/([ab]{1,4}c|xy){4,5}?123/IB,auto_callout 5169------------------------------------------------------------------ 5170 Bra 5171 Callout 255 0 1 5172 CBra 1 5173 Callout 255 1 9 5174 [ab]{1,4}+ 5175 Callout 255 10 1 5176 c 5177 Callout 255 11 1 5178 Alt 5179 Callout 255 12 1 5180 x 5181 Callout 255 13 1 5182 y 5183 Callout 255 14 7 5184 Ket 5185 CBra 1 5186 Callout 255 1 9 5187 [ab]{1,4}+ 5188 Callout 255 10 1 5189 c 5190 Callout 255 11 1 5191 Alt 5192 Callout 255 12 1 5193 x 5194 Callout 255 13 1 5195 y 5196 Callout 255 14 7 5197 Ket 5198 CBra 1 5199 Callout 255 1 9 5200 [ab]{1,4}+ 5201 Callout 255 10 1 5202 c 5203 Callout 255 11 1 5204 Alt 5205 Callout 255 12 1 5206 x 5207 Callout 255 13 1 5208 y 5209 Callout 255 14 7 5210 Ket 5211 CBra 1 5212 Callout 255 1 9 5213 [ab]{1,4}+ 5214 Callout 255 10 1 5215 c 5216 Callout 255 11 1 5217 Alt 5218 Callout 255 12 1 5219 x 5220 Callout 255 13 1 5221 y 5222 Callout 255 14 7 5223 Ket 5224 Braminzero 5225 CBra 1 5226 Callout 255 1 9 5227 [ab]{1,4}+ 5228 Callout 255 10 1 5229 c 5230 Callout 255 11 1 5231 Alt 5232 Callout 255 12 1 5233 x 5234 Callout 255 13 1 5235 y 5236 Callout 255 14 7 5237 Ket 5238 Callout 255 21 1 5239 1 5240 Callout 255 22 1 5241 2 5242 Callout 255 23 1 5243 3 5244 Callout 255 24 0 5245 Ket 5246 End 5247------------------------------------------------------------------ 5248Capture group count = 1 5249Options: auto_callout 5250Starting code units: a b x 5251Last code unit = '3' 5252Subject length lower bound = 11 5253 aacaacaacaacaac123 5254--->aacaacaacaacaac123 5255 +0 ^ ( 5256 +1 ^ [ab]{1,4} 5257+10 ^ ^ c 5258+11 ^ ^ | 5259 +1 ^ ^ [ab]{1,4} 5260+10 ^ ^ c 5261+11 ^ ^ | 5262 +1 ^ ^ [ab]{1,4} 5263+10 ^ ^ c 5264+11 ^ ^ | 5265 +1 ^ ^ [ab]{1,4} 5266+10 ^ ^ c 5267+11 ^ ^ | 5268+21 ^ ^ 1 5269 +1 ^ ^ [ab]{1,4} 5270+10 ^ ^ c 5271+11 ^ ^ | 5272+21 ^ ^ 1 5273+22 ^ ^ 2 5274+23 ^ ^ 3 5275+24 ^ ^ End of pattern 5276 0: aacaacaacaacaac123 5277 1: aac 5278 5279/\b.*/I 5280Capture group count = 0 5281Max lookbehind = 1 5282May match empty string 5283Subject length lower bound = 0 5284 ab cd\=offset=1 5285 0: cd 5286 5287/\b.*/Is 5288Capture group count = 0 5289Max lookbehind = 1 5290May match empty string 5291Options: dotall 5292Subject length lower bound = 0 5293 ab cd\=startoffset=1 5294 0: cd 5295 5296/(?!.bcd).*/I 5297Capture group count = 0 5298May match empty string 5299Subject length lower bound = 0 5300 Xbcd12345 5301 0: bcd12345 5302 5303/abcde/I 5304Capture group count = 0 5305First code unit = 'a' 5306Last code unit = 'e' 5307Subject length lower bound = 5 5308 ab\=ps 5309Partial match: ab 5310 abc\=ps 5311Partial match: abc 5312 abcd\=ps 5313Partial match: abcd 5314 abcde\=ps 5315 0: abcde 5316 the quick brown abc\=ps 5317Partial match: abc 5318\= Expect no match\=ps 5319 the quick brown abxyz fox\=ps 5320No match 5321 5322"^(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])/(20)?\d\d$"I 5323Capture group count = 3 5324Compile options: <none> 5325Overall options: anchored 5326Starting code units: 0 1 2 3 4 5 6 7 8 9 5327Last code unit = '/' 5328Subject length lower bound = 6 5329 13/05/04\=ps 5330 0: 13/05/04 5331 1: 13 5332 2: 05 5333 13/5/2004\=ps 5334 0: 13/5/2004 5335 1: 13 5336 2: 5 5337 3: 20 5338 02/05/09\=ps 5339 0: 02/05/09 5340 1: 02 5341 2: 05 5342 1\=ps 5343Partial match: 1 5344 1/2\=ps 5345Partial match: 1/2 5346 1/2/0\=ps 5347Partial match: 1/2/0 5348 1/2/04\=ps 5349 0: 1/2/04 5350 1: 1 5351 2: 2 5352 0\=ps 5353Partial match: 0 5354 02/\=ps 5355Partial match: 02/ 5356 02/0\=ps 5357Partial match: 02/0 5358 02/1\=ps 5359Partial match: 02/1 5360\= Expect no match\=ps 5361 \=ps 5362No match 5363 123\=ps 5364No match 5365 33/4/04\=ps 5366No match 5367 3/13/04\=ps 5368No match 5369 0/1/2003\=ps 5370No match 5371 0/\=ps 5372No match 5373 02/0/\=ps 5374No match 5375 02/13\=ps 5376No match 5377 5378/0{0,2}ABC/I 5379Capture group count = 0 5380Starting code units: 0 A 5381Last code unit = 'C' 5382Subject length lower bound = 3 5383 5384/\d{3,}ABC/I 5385Capture group count = 0 5386Starting code units: 0 1 2 3 4 5 6 7 8 9 5387Last code unit = 'C' 5388Subject length lower bound = 6 5389 5390/\d*ABC/I 5391Capture group count = 0 5392Starting code units: 0 1 2 3 4 5 6 7 8 9 A 5393Last code unit = 'C' 5394Subject length lower bound = 3 5395 5396/[abc]+DE/I 5397Capture group count = 0 5398Starting code units: a b c 5399Last code unit = 'E' 5400Subject length lower bound = 3 5401 5402/[abc]?123/I 5403Capture group count = 0 5404Starting code units: 1 a b c 5405Last code unit = '3' 5406Subject length lower bound = 3 5407 123\=ps 5408 0: 123 5409 a\=ps 5410Partial match: a 5411 b\=ps 5412Partial match: b 5413 c\=ps 5414Partial match: c 5415 c12\=ps 5416Partial match: c12 5417 c123\=ps 5418 0: c123 5419 5420/^(?:\d){3,5}X/I 5421Capture group count = 0 5422Compile options: <none> 5423Overall options: anchored 5424Starting code units: 0 1 2 3 4 5 6 7 8 9 5425Last code unit = 'X' 5426Subject length lower bound = 4 5427 1\=ps 5428Partial match: 1 5429 123\=ps 5430Partial match: 123 5431 123X 5432 0: 123X 5433 1234\=ps 5434Partial match: 1234 5435 1234X 5436 0: 1234X 5437 12345\=ps 5438Partial match: 12345 5439 12345X 5440 0: 12345X 5441\= Expect no match 5442 1X 5443No match 5444 123456\=ps 5445No match 5446 5447"<(\w+)/?>(.)*</(\1)>"Igms 5448Capture group count = 3 5449Max back reference = 1 5450Options: dotall multiline 5451First code unit = '<' 5452Last code unit = '>' 5453Subject length lower bound = 7 5454 <!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>\=jitstack=1024 5455 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> 5456 1: seite 5457 2: \x0a 5458 3: seite 5459 5460/line\nbreak/I 5461Capture group count = 0 5462Contains explicit CR or LF match 5463First code unit = 'l' 5464Last code unit = 'k' 5465Subject length lower bound = 10 5466 this is a line\nbreak 5467 0: line\x0abreak 5468 line one\nthis is a line\nbreak in the second line 5469 0: line\x0abreak 5470 5471/line\nbreak/I,firstline 5472Capture group count = 0 5473Contains explicit CR or LF match 5474Options: firstline 5475First code unit = 'l' 5476Last code unit = 'k' 5477Subject length lower bound = 10 5478 this is a line\nbreak 5479 0: line\x0abreak 5480\= Expect no match 5481 line one\nthis is a line\nbreak in the second line 5482No match 5483 5484/line\nbreak/Im,firstline 5485Capture group count = 0 5486Contains explicit CR or LF match 5487Options: firstline multiline 5488First code unit = 'l' 5489Last code unit = 'k' 5490Subject length lower bound = 10 5491 this is a line\nbreak 5492 0: line\x0abreak 5493\= Expect no match 5494 line one\nthis is a line\nbreak in the second line 5495No match 5496 5497/(?i)(?-i)AbCd/I 5498Capture group count = 0 5499First code unit = 'A' 5500Last code unit = 'd' 5501Subject length lower bound = 4 5502 AbCd 5503 0: AbCd 5504\= Expect no match 5505 abcd 5506No match 5507 5508/a{11111111111111111111}/I 5509Failed: error 105 at offset 8: number too big in {} quantifier 5510 5511/(){64294967295}/I 5512Failed: error 105 at offset 9: number too big in {} quantifier 5513 5514/(){2,4294967295}/I 5515Failed: error 105 at offset 11: number too big in {} quantifier 5516 5517"(?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 5518Capture group count = 1 5519Max back reference = 1 5520First code unit = 'a' (caseless) 5521Last code unit = 'B' 5522Subject length lower bound = 15 5523 abcdefghijklAkB 5524 0: abcdefghijklAkB 5525 1: k 5526 5527"(?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 5528Capture group count = 12 5529Max back reference = 11 5530Named capture groups: 5531 n0 1 5532 n1 2 5533 n10 11 5534 n11 12 5535 n2 3 5536 n3 4 5537 n4 5 5538 n5 6 5539 n6 7 5540 n7 8 5541 n8 9 5542 n9 10 5543First code unit = 'a' 5544Last code unit = 'B' 5545Subject length lower bound = 15 5546 abcdefghijklAkB 5547 0: abcdefghijklAkB 5548 1: a 5549 2: b 5550 3: c 5551 4: d 5552 5: e 5553 6: f 5554 7: g 5555 8: h 5556 9: i 555710: j 555811: k 555912: l 5560 5561"(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)A\11B"I 5562Capture group count = 12 5563Max back reference = 11 5564First code unit = 'a' 5565Last code unit = 'B' 5566Subject length lower bound = 15 5567 abcdefghijklAkB 5568 0: abcdefghijklAkB 5569 1: a 5570 2: b 5571 3: c 5572 4: d 5573 5: e 5574 6: f 5575 7: g 5576 8: h 5577 9: i 557810: j 557911: k 558012: l 5581 5582"(?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 5583Capture group count = 101 5584Named capture groups: 5585 name0 1 5586 name1 2 5587 name10 11 5588 name100 101 5589 name11 12 5590 name12 13 5591 name13 14 5592 name14 15 5593 name15 16 5594 name16 17 5595 name17 18 5596 name18 19 5597 name19 20 5598 name2 3 5599 name20 21 5600 name21 22 5601 name22 23 5602 name23 24 5603 name24 25 5604 name25 26 5605 name26 27 5606 name27 28 5607 name28 29 5608 name29 30 5609 name3 4 5610 name30 31 5611 name31 32 5612 name32 33 5613 name33 34 5614 name34 35 5615 name35 36 5616 name36 37 5617 name37 38 5618 name38 39 5619 name39 40 5620 name4 5 5621 name40 41 5622 name41 42 5623 name42 43 5624 name43 44 5625 name44 45 5626 name45 46 5627 name46 47 5628 name47 48 5629 name48 49 5630 name49 50 5631 name5 6 5632 name50 51 5633 name51 52 5634 name52 53 5635 name53 54 5636 name54 55 5637 name55 56 5638 name56 57 5639 name57 58 5640 name58 59 5641 name59 60 5642 name6 7 5643 name60 61 5644 name61 62 5645 name62 63 5646 name63 64 5647 name64 65 5648 name65 66 5649 name66 67 5650 name67 68 5651 name68 69 5652 name69 70 5653 name7 8 5654 name70 71 5655 name71 72 5656 name72 73 5657 name73 74 5658 name74 75 5659 name75 76 5660 name76 77 5661 name77 78 5662 name78 79 5663 name79 80 5664 name8 9 5665 name80 81 5666 name81 82 5667 name82 83 5668 name83 84 5669 name84 85 5670 name85 86 5671 name86 87 5672 name87 88 5673 name88 89 5674 name89 90 5675 name9 10 5676 name90 91 5677 name91 92 5678 name92 93 5679 name93 94 5680 name94 95 5681 name95 96 5682 name96 97 5683 name97 98 5684 name98 99 5685 name99 100 5686First code unit = 'a' 5687Last code unit = 'a' 5688Subject length lower bound = 101 5689 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5690Matched, but too many substrings 5691 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5692 1: a 5693 2: a 5694 3: a 5695 4: a 5696 5: a 5697 6: a 5698 7: a 5699 8: a 5700 9: a 570110: a 570211: a 570312: a 570413: a 570514: a 5706 5707"(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 5708Capture group count = 101 5709First code unit = 'a' 5710Last code unit = 'a' 5711Subject length lower bound = 101 5712 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5713Matched, but too many substrings 5714 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5715 1: a 5716 2: a 5717 3: a 5718 4: a 5719 5: a 5720 6: a 5721 7: a 5722 8: a 5723 9: a 572410: a 572511: a 572612: a 572713: a 572814: a 5729 5730/[^()]*(?:\((?R)\)[^()]*)*/I 5731Capture group count = 0 5732May match empty string 5733Subject length lower bound = 0 5734 (this(and)that 5735 0: 5736 (this(and)that) 5737 0: (this(and)that) 5738 (this(and)that)stuff 5739 0: (this(and)that)stuff 5740 5741/[^()]*(?:\((?>(?R))\)[^()]*)*/I 5742Capture group count = 0 5743May match empty string 5744Subject length lower bound = 0 5745 (this(and)that 5746 0: 5747 (this(and)that) 5748 0: (this(and)that) 5749 5750/[^()]*(?:\((?R)\))*[^()]*/I 5751Capture group count = 0 5752May match empty string 5753Subject length lower bound = 0 5754 (this(and)that 5755 0: 5756 (this(and)that) 5757 0: (this(and)that) 5758 5759/(?:\((?R)\))*[^()]*/I 5760Capture group count = 0 5761May match empty string 5762Subject length lower bound = 0 5763 (this(and)that 5764 0: 5765 (this(and)that) 5766 0: 5767 ((this)) 5768 0: ((this)) 5769 5770/(?:\((?R)\))|[^()]*/I 5771Capture group count = 0 5772May match empty string 5773Subject length lower bound = 0 5774 (this(and)that 5775 0: 5776 (this(and)that) 5777 0: 5778 (this) 5779 0: (this) 5780 ((this)) 5781 0: ((this)) 5782 5783/\x{0000ff}/I 5784Capture group count = 0 5785First code unit = \xff 5786Subject length lower bound = 1 5787 5788/^((?P<A>a1)|(?P<A>a2)b)/I 5789Failed: error 143 at offset 18: two named subpatterns have the same name (PCRE2_DUPNAMES not set) 5790 5791/^((?P<A>a1)|(?P<A>a2)b)/I,dupnames 5792Capture group count = 3 5793Named capture groups: 5794 A 2 5795 A 3 5796Compile options: dupnames 5797Overall options: anchored dupnames 5798First code unit = 'a' 5799Subject length lower bound = 2 5800 a1b\=copy=A 5801 0: a1 5802 1: a1 5803 2: a1 5804 C a1 (2) A (non-unique) 5805 a2b\=copy=A 5806 0: a2b 5807 1: a2b 5808 2: <unset> 5809 3: a2 5810 C a2 (2) A (non-unique) 5811 a1b\=copy=Z,copy=A 5812 0: a1 5813 1: a1 5814 2: a1 5815Number not found for group 'Z' 5816Copy substring 'Z' failed (-49): unknown substring 5817 C a1 (2) A (non-unique) 5818 5819/(?|(?<a>)(?<b>)(?<a>)|(?<a>)(?<b>)(?<a>))/I,dupnames 5820Capture group count = 3 5821Named capture groups: 5822 a 1 5823 a 3 5824 b 2 5825May match empty string 5826Options: dupnames 5827Subject length lower bound = 0 5828 5829/^(?P<A>a)(?P<A>b)/I,dupnames 5830Capture group count = 2 5831Named capture groups: 5832 A 1 5833 A 2 5834Compile options: dupnames 5835Overall options: anchored dupnames 5836First code unit = 'a' 5837Subject length lower bound = 2 5838 ab\=copy=A 5839 0: ab 5840 1: a 5841 2: b 5842 C a (1) A (non-unique) 5843 5844/^(?P<A>a)(?P<A>b)|cd/I,dupnames 5845Capture group count = 2 5846Named capture groups: 5847 A 1 5848 A 2 5849Options: dupnames 5850Starting code units: a c 5851Subject length lower bound = 2 5852 ab\=copy=A 5853 0: ab 5854 1: a 5855 2: b 5856 C a (1) A (non-unique) 5857 cd\=copy=A 5858 0: cd 5859Copy substring 'A' failed (-55): requested value is not set 5860 5861/^(?P<A>a)(?P<A>b)|cd(?P<A>ef)(?P<A>gh)/I,dupnames 5862Capture group count = 4 5863Named capture groups: 5864 A 1 5865 A 2 5866 A 3 5867 A 4 5868Options: dupnames 5869Starting code units: a c 5870Subject length lower bound = 2 5871 cdefgh\=copy=A 5872 0: cdefgh 5873 1: <unset> 5874 2: <unset> 5875 3: ef 5876 4: gh 5877 C ef (2) A (non-unique) 5878 5879/^((?P<A>a1)|(?P<A>a2)b)/I,dupnames 5880Capture group count = 3 5881Named capture groups: 5882 A 2 5883 A 3 5884Compile options: dupnames 5885Overall options: anchored dupnames 5886First code unit = 'a' 5887Subject length lower bound = 2 5888 a1b\=get=A 5889 0: a1 5890 1: a1 5891 2: a1 5892 G a1 (2) A (non-unique) 5893 a2b\=get=A 5894 0: a2b 5895 1: a2b 5896 2: <unset> 5897 3: a2 5898 G a2 (2) A (non-unique) 5899 a1b\=get=Z,get=A 5900 0: a1 5901 1: a1 5902 2: a1 5903Number not found for group 'Z' 5904Get substring 'Z' failed (-49): unknown substring 5905 G a1 (2) A (non-unique) 5906 5907/^(?P<A>a)(?P<A>b)/I,dupnames 5908Capture group count = 2 5909Named capture groups: 5910 A 1 5911 A 2 5912Compile options: dupnames 5913Overall options: anchored dupnames 5914First code unit = 'a' 5915Subject length lower bound = 2 5916 ab\=get=A 5917 0: ab 5918 1: a 5919 2: b 5920 G a (1) A (non-unique) 5921 5922/^(?P<A>a)(?P<A>b)|cd/I,dupnames 5923Capture group count = 2 5924Named capture groups: 5925 A 1 5926 A 2 5927Options: dupnames 5928Starting code units: a c 5929Subject length lower bound = 2 5930 ab\=get=A 5931 0: ab 5932 1: a 5933 2: b 5934 G a (1) A (non-unique) 5935 cd\=get=A 5936 0: cd 5937Get substring 'A' failed (-55): requested value is not set 5938 5939/^(?P<A>a)(?P<A>b)|cd(?P<A>ef)(?P<A>gh)/I,dupnames 5940Capture group count = 4 5941Named capture groups: 5942 A 1 5943 A 2 5944 A 3 5945 A 4 5946Options: dupnames 5947Starting code units: a c 5948Subject length lower bound = 2 5949 cdefgh\=get=A 5950 0: cdefgh 5951 1: <unset> 5952 2: <unset> 5953 3: ef 5954 4: gh 5955 G ef (2) A (non-unique) 5956 5957/(?J)^((?P<A>a1)|(?P<A>a2)b)/I 5958Capture group count = 3 5959Named capture groups: 5960 A 2 5961 A 3 5962Compile options: <none> 5963Overall options: anchored 5964Duplicate name status changes 5965First code unit = 'a' 5966Subject length lower bound = 2 5967 a1b\=copy=A 5968 0: a1 5969 1: a1 5970 2: a1 5971 C a1 (2) A (non-unique) 5972 a2b\=copy=A 5973 0: a2b 5974 1: a2b 5975 2: <unset> 5976 3: a2 5977 C a2 (2) A (non-unique) 5978 5979/^(?P<A>a) (?J:(?P<B>b)(?P<B>c)) (?P<A>d)/I 5980Failed: error 143 at offset 38: two named subpatterns have the same name (PCRE2_DUPNAMES not set) 5981 5982# In this next test, J is not set at the outer level; consequently it isn't set 5983# in the pattern's options; consequently pcre2_substring_get_byname() produces 5984# a random value. 5985 5986/^(?P<A>a) (?J:(?P<B>b)(?P<B>c)) (?P<C>d)/I 5987Capture group count = 4 5988Named capture groups: 5989 A 1 5990 B 2 5991 B 3 5992 C 4 5993Compile options: <none> 5994Overall options: anchored 5995Duplicate name status changes 5996First code unit = 'a' 5997Subject length lower bound = 6 5998 a bc d\=copy=A,copy=B,copy=C 5999 0: a bc d 6000 1: a 6001 2: b 6002 3: c 6003 4: d 6004 C a (1) A (group 1) 6005 C b (1) B (non-unique) 6006 C d (1) C (group 4) 6007 6008/^(?P<A>a)?(?(A)a|b)/I 6009Capture group count = 1 6010Max back reference = 1 6011Named capture groups: 6012 A 1 6013Compile options: <none> 6014Overall options: anchored 6015Subject length lower bound = 1 6016 aabc 6017 0: aa 6018 1: a 6019 bc 6020 0: b 6021\= Expect no match 6022 abc 6023No match 6024 6025/(?:(?(ZZ)a|b)(?P<ZZ>X))+/I 6026Capture group count = 1 6027Max back reference = 1 6028Named capture groups: 6029 ZZ 1 6030Last code unit = 'X' 6031Subject length lower bound = 2 6032 bXaX 6033 0: bXaX 6034 1: X 6035 6036/(?:(?(2y)a|b)(X))+/I 6037Failed: error 124 at offset 7: missing closing parenthesis for condition 6038 6039/(?:(?(ZA)a|b)(?P<ZZ>X))+/I 6040Failed: error 115 at offset 6: reference to non-existent subpattern 6041 6042/(?:(?(ZZ)a|b)(?(ZZ)a|b)(?P<ZZ>X))+/I 6043Capture group count = 1 6044Max back reference = 1 6045Named capture groups: 6046 ZZ 1 6047Last code unit = 'X' 6048Subject length lower bound = 3 6049 bbXaaX 6050 0: bbXaaX 6051 1: X 6052 6053/(?:(?(ZZ)a|\(b\))\\(?P<ZZ>X))+/I 6054Capture group count = 1 6055Max back reference = 1 6056Named capture groups: 6057 ZZ 1 6058Last code unit = 'X' 6059Subject length lower bound = 3 6060 (b)\\Xa\\X 6061 0: (b)\Xa\X 6062 1: X 6063 6064/(?P<ABC/I 6065Failed: error 142 at offset 7: syntax error in subpattern name (missing terminator?) 6066 6067/(?:(?(A)(?P=A)a|b)(?P<A>X|Y))+/I 6068Capture group count = 1 6069Max back reference = 1 6070Named capture groups: 6071 A 1 6072Subject length lower bound = 2 6073 bXXaYYaY 6074 0: bXXaYYaY 6075 1: Y 6076 bXYaXXaX 6077 0: bX 6078 1: X 6079 6080/()()()()()()()()()(?:(?(A)(?P=A)a|b)(?P<A>X|Y))+/I 6081Capture group count = 10 6082Max back reference = 10 6083Named capture groups: 6084 A 10 6085Subject length lower bound = 2 6086 bXXaYYaY 6087 0: bXXaYYaY 6088 1: 6089 2: 6090 3: 6091 4: 6092 5: 6093 6: 6094 7: 6095 8: 6096 9: 609710: Y 6098 6099/\s*,\s*/I 6100Capture group count = 0 6101Starting code units: \x09 \x0a \x0b \x0c \x0d \x20 , 6102Last code unit = ',' 6103Subject length lower bound = 1 6104 \x0b,\x0b 6105 0: \x0b,\x0b 6106 \x0c,\x0d 6107 0: \x0c,\x0d 6108 6109/^abc/Im,newline=lf 6110Capture group count = 0 6111Options: multiline 6112Forced newline is LF 6113First code unit at start or follows newline 6114Last code unit = 'c' 6115Subject length lower bound = 3 6116 xyz\nabc 6117 0: abc 6118 xyz\r\nabc 6119 0: abc 6120\= Expect no match 6121 xyz\rabc 6122No match 6123 xyzabc\r 6124No match 6125 xyzabc\rpqr 6126No match 6127 xyzabc\r\n 6128No match 6129 xyzabc\r\npqr 6130No match 6131 6132/^abc/Im,newline=crlf 6133Capture group count = 0 6134Options: multiline 6135Forced newline is CRLF 6136First code unit at start or follows newline 6137Last code unit = 'c' 6138Subject length lower bound = 3 6139 xyz\r\nabclf> 6140 0: abc 6141\= Expect no match 6142 xyz\nabclf 6143No match 6144 xyz\rabclf 6145No match 6146 6147/^abc/Im,newline=cr 6148Capture group count = 0 6149Options: multiline 6150Forced newline is CR 6151First code unit at start or follows newline 6152Last code unit = 'c' 6153Subject length lower bound = 3 6154 xyz\rabc 6155 0: abc 6156\= Expect no match 6157 xyz\nabc 6158No match 6159 xyz\r\nabc 6160No match 6161 6162/^abc/Im,newline=bad 6163** Invalid value in 'newline=bad' 6164 6165/.*/I,newline=lf 6166Capture group count = 0 6167May match empty string 6168Forced newline is LF 6169First code unit at start or follows newline 6170Subject length lower bound = 0 6171 abc\ndef 6172 0: abc 6173 abc\rdef 6174 0: abc\x0ddef 6175 abc\r\ndef 6176 0: abc\x0d 6177 6178/.*/I,newline=cr 6179Capture group count = 0 6180May match empty string 6181Forced newline is CR 6182First code unit at start or follows newline 6183Subject length lower bound = 0 6184 abc\ndef 6185 0: abc\x0adef 6186 abc\rdef 6187 0: abc 6188 abc\r\ndef 6189 0: abc 6190 6191/.*/I,newline=crlf 6192Capture group count = 0 6193May match empty string 6194Forced newline is CRLF 6195First code unit at start or follows newline 6196Subject length lower bound = 0 6197 abc\ndef 6198 0: abc\x0adef 6199 abc\rdef 6200 0: abc\x0ddef 6201 abc\r\ndef 6202 0: abc 6203 6204/\w+(.)(.)?def/Is 6205Capture group count = 2 6206Options: dotall 6207Starting code units: 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P 6208 Q R S T U V W X Y Z _ 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 6209Last code unit = 'f' 6210Subject length lower bound = 5 6211 abc\ndef 6212 0: abc\x0adef 6213 1: \x0a 6214 abc\rdef 6215 0: abc\x0ddef 6216 1: \x0d 6217 abc\r\ndef 6218 0: abc\x0d\x0adef 6219 1: \x0d 6220 2: \x0a 6221 6222/(?P<B>25[0-5]|2[0-4]\d|[01]?\d?\d)(?:\.(?P>B)){3}/I 6223Capture group count = 1 6224Named capture groups: 6225 B 1 6226Starting code units: 0 1 2 3 4 5 6 7 8 9 6227Last code unit = '.' 6228Subject length lower bound = 7 6229 6230/()()()()()()()()()()()()()()()()()()()() 6231 ()()()()()()()()()()()()()()()()()()()() 6232 ()()()()()()()()()()()()()()()()()()()() 6233 ()()()()()()()()()()()()()()()()()()()() 6234 ()()()()()()()()()()()()()()()()()()()() 6235 (.(.))/Ix 6236Capture group count = 102 6237Options: extended 6238Subject length lower bound = 2 6239 XY\=ovector=133 6240 0: XY 6241 1: 6242 2: 6243 3: 6244 4: 6245 5: 6246 6: 6247 7: 6248 8: 6249 9: 625010: 625111: 625212: 625313: 625414: 625515: 625616: 625717: 625818: 625919: 626020: 626121: 626222: 626323: 626424: 626525: 626626: 626727: 626828: 626929: 627030: 627131: 627232: 627333: 627434: 627535: 627636: 627737: 627838: 627939: 628040: 628141: 628242: 628343: 628444: 628545: 628646: 628747: 628848: 628949: 629050: 629151: 629252: 629353: 629454: 629555: 629656: 629757: 629858: 629959: 630060: 630161: 630262: 630363: 630464: 630565: 630666: 630767: 630868: 630969: 631070: 631171: 631272: 631373: 631474: 631575: 631676: 631777: 631878: 631979: 632080: 632181: 632282: 632383: 632484: 632585: 632686: 632787: 632888: 632989: 633090: 633191: 633292: 633393: 633494: 633595: 633696: 633797: 633898: 633999: 6340100: 6341101: XY 6342102: Y 6343 6344/(a*b|(?i:c*(?-i)d))/I 6345Capture group count = 1 6346Starting code units: C a b c d 6347Subject length lower bound = 1 6348 6349/()[ab]xyz/I 6350Capture group count = 1 6351Starting code units: a b 6352Last code unit = 'z' 6353Subject length lower bound = 4 6354 6355/(|)[ab]xyz/I 6356Capture group count = 1 6357Starting code units: a b 6358Last code unit = 'z' 6359Subject length lower bound = 4 6360 6361/(|c)[ab]xyz/I 6362Capture group count = 1 6363Starting code units: a b c 6364Last code unit = 'z' 6365Subject length lower bound = 4 6366 6367/(|c?)[ab]xyz/I 6368Capture group count = 1 6369Starting code units: a b c 6370Last code unit = 'z' 6371Subject length lower bound = 4 6372 6373/(d?|c?)[ab]xyz/I 6374Capture group count = 1 6375Starting code units: a b c d 6376Last code unit = 'z' 6377Subject length lower bound = 4 6378 6379/(d?|c)[ab]xyz/I 6380Capture group count = 1 6381Starting code units: a b c d 6382Last code unit = 'z' 6383Subject length lower bound = 4 6384 6385/^a*b\d/IB 6386------------------------------------------------------------------ 6387 Bra 6388 ^ 6389 a*+ 6390 b 6391 \d 6392 Ket 6393 End 6394------------------------------------------------------------------ 6395Capture group count = 0 6396Compile options: <none> 6397Overall options: anchored 6398Starting code units: a b 6399Last code unit = 'b' 6400Subject length lower bound = 2 6401 6402/^a*+b\d/IB 6403------------------------------------------------------------------ 6404 Bra 6405 ^ 6406 a*+ 6407 b 6408 \d 6409 Ket 6410 End 6411------------------------------------------------------------------ 6412Capture group count = 0 6413Compile options: <none> 6414Overall options: anchored 6415Starting code units: a b 6416Last code unit = 'b' 6417Subject length lower bound = 2 6418 6419/^a*?b\d/IB 6420------------------------------------------------------------------ 6421 Bra 6422 ^ 6423 a*+ 6424 b 6425 \d 6426 Ket 6427 End 6428------------------------------------------------------------------ 6429Capture group count = 0 6430Compile options: <none> 6431Overall options: anchored 6432Starting code units: a b 6433Last code unit = 'b' 6434Subject length lower bound = 2 6435 6436/^a+A\d/IB 6437------------------------------------------------------------------ 6438 Bra 6439 ^ 6440 a++ 6441 A 6442 \d 6443 Ket 6444 End 6445------------------------------------------------------------------ 6446Capture group count = 0 6447Compile options: <none> 6448Overall options: anchored 6449First code unit = 'a' 6450Last code unit = 'A' 6451Subject length lower bound = 3 6452 aaaA5 6453 0: aaaA5 6454\= Expect no match 6455 aaaa5 6456No match 6457 6458/^a*A\d/IBi 6459------------------------------------------------------------------ 6460 Bra 6461 ^ 6462 /i a* 6463 /i A 6464 \d 6465 Ket 6466 End 6467------------------------------------------------------------------ 6468Capture group count = 0 6469Compile options: caseless 6470Overall options: anchored caseless 6471Starting code units: A a 6472Last code unit = 'A' (caseless) 6473Subject length lower bound = 2 6474 aaaA5 6475 0: aaaA5 6476 aaaa5 6477 0: aaaa5 6478 a5 6479 0: a5 6480 6481/(a*|b*)[cd]/I 6482Capture group count = 1 6483Starting code units: a b c d 6484Subject length lower bound = 1 6485 6486/(a+|b*)[cd]/I 6487Capture group count = 1 6488Starting code units: a b c d 6489Subject length lower bound = 1 6490 6491/(a*|b+)[cd]/I 6492Capture group count = 1 6493Starting code units: a b c d 6494Subject length lower bound = 1 6495 6496/(a+|b+)[cd]/I 6497Capture group count = 1 6498Starting code units: a b 6499Subject length lower bound = 2 6500 6501/(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 6502 (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 6503 ((( 6504 a 6505 )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 6506 )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 6507 ))) 6508/Ix 6509Capture group count = 203 6510Options: extended 6511First code unit = 'a' 6512Subject length lower bound = 1 6513 large nest 6514Matched, but too many substrings 6515 0: a 6516 1: a 6517 2: a 6518 3: a 6519 4: a 6520 5: a 6521 6: a 6522 7: a 6523 8: a 6524 9: a 652510: a 652611: a 652712: a 652813: a 652914: a 6530 6531/a*\d/B 6532------------------------------------------------------------------ 6533 Bra 6534 a*+ 6535 \d 6536 Ket 6537 End 6538------------------------------------------------------------------ 6539 6540/a*\D/B 6541------------------------------------------------------------------ 6542 Bra 6543 a* 6544 \D 6545 Ket 6546 End 6547------------------------------------------------------------------ 6548 6549/0*\d/B 6550------------------------------------------------------------------ 6551 Bra 6552 0* 6553 \d 6554 Ket 6555 End 6556------------------------------------------------------------------ 6557 6558/0*\D/B 6559------------------------------------------------------------------ 6560 Bra 6561 0*+ 6562 \D 6563 Ket 6564 End 6565------------------------------------------------------------------ 6566 6567/a*\s/B 6568------------------------------------------------------------------ 6569 Bra 6570 a*+ 6571 \s 6572 Ket 6573 End 6574------------------------------------------------------------------ 6575 6576/a*\S/B 6577------------------------------------------------------------------ 6578 Bra 6579 a* 6580 \S 6581 Ket 6582 End 6583------------------------------------------------------------------ 6584 6585/ *\s/B 6586------------------------------------------------------------------ 6587 Bra 6588 * 6589 \s 6590 Ket 6591 End 6592------------------------------------------------------------------ 6593 6594/ *\S/B 6595------------------------------------------------------------------ 6596 Bra 6597 *+ 6598 \S 6599 Ket 6600 End 6601------------------------------------------------------------------ 6602 6603/a*\w/B 6604------------------------------------------------------------------ 6605 Bra 6606 a* 6607 \w 6608 Ket 6609 End 6610------------------------------------------------------------------ 6611 6612/a*\W/B 6613------------------------------------------------------------------ 6614 Bra 6615 a*+ 6616 \W 6617 Ket 6618 End 6619------------------------------------------------------------------ 6620 6621/=*\w/B 6622------------------------------------------------------------------ 6623 Bra 6624 =*+ 6625 \w 6626 Ket 6627 End 6628------------------------------------------------------------------ 6629 6630/=*\W/B 6631------------------------------------------------------------------ 6632 Bra 6633 =* 6634 \W 6635 Ket 6636 End 6637------------------------------------------------------------------ 6638 6639/\d*a/B 6640------------------------------------------------------------------ 6641 Bra 6642 \d*+ 6643 a 6644 Ket 6645 End 6646------------------------------------------------------------------ 6647 6648/\d*2/B 6649------------------------------------------------------------------ 6650 Bra 6651 \d* 6652 2 6653 Ket 6654 End 6655------------------------------------------------------------------ 6656 6657/\d*\d/B 6658------------------------------------------------------------------ 6659 Bra 6660 \d* 6661 \d 6662 Ket 6663 End 6664------------------------------------------------------------------ 6665 6666/\d*\D/B 6667------------------------------------------------------------------ 6668 Bra 6669 \d*+ 6670 \D 6671 Ket 6672 End 6673------------------------------------------------------------------ 6674 6675/\d*\s/B 6676------------------------------------------------------------------ 6677 Bra 6678 \d*+ 6679 \s 6680 Ket 6681 End 6682------------------------------------------------------------------ 6683 6684/\d*\S/B 6685------------------------------------------------------------------ 6686 Bra 6687 \d* 6688 \S 6689 Ket 6690 End 6691------------------------------------------------------------------ 6692 6693/\d*\w/B 6694------------------------------------------------------------------ 6695 Bra 6696 \d* 6697 \w 6698 Ket 6699 End 6700------------------------------------------------------------------ 6701 6702/\d*\W/B 6703------------------------------------------------------------------ 6704 Bra 6705 \d*+ 6706 \W 6707 Ket 6708 End 6709------------------------------------------------------------------ 6710 6711/\D*a/B 6712------------------------------------------------------------------ 6713 Bra 6714 \D* 6715 a 6716 Ket 6717 End 6718------------------------------------------------------------------ 6719 6720/\D*2/B 6721------------------------------------------------------------------ 6722 Bra 6723 \D*+ 6724 2 6725 Ket 6726 End 6727------------------------------------------------------------------ 6728 6729/\D*\d/B 6730------------------------------------------------------------------ 6731 Bra 6732 \D*+ 6733 \d 6734 Ket 6735 End 6736------------------------------------------------------------------ 6737 6738/\D*\D/B 6739------------------------------------------------------------------ 6740 Bra 6741 \D* 6742 \D 6743 Ket 6744 End 6745------------------------------------------------------------------ 6746 6747/\D*\s/B 6748------------------------------------------------------------------ 6749 Bra 6750 \D* 6751 \s 6752 Ket 6753 End 6754------------------------------------------------------------------ 6755 6756/\D*\S/B 6757------------------------------------------------------------------ 6758 Bra 6759 \D* 6760 \S 6761 Ket 6762 End 6763------------------------------------------------------------------ 6764 6765/\D*\w/B 6766------------------------------------------------------------------ 6767 Bra 6768 \D* 6769 \w 6770 Ket 6771 End 6772------------------------------------------------------------------ 6773 6774/\D*\W/B 6775------------------------------------------------------------------ 6776 Bra 6777 \D* 6778 \W 6779 Ket 6780 End 6781------------------------------------------------------------------ 6782 6783/\s*a/B 6784------------------------------------------------------------------ 6785 Bra 6786 \s*+ 6787 a 6788 Ket 6789 End 6790------------------------------------------------------------------ 6791 6792/\s*2/B 6793------------------------------------------------------------------ 6794 Bra 6795 \s*+ 6796 2 6797 Ket 6798 End 6799------------------------------------------------------------------ 6800 6801/\s*\d/B 6802------------------------------------------------------------------ 6803 Bra 6804 \s*+ 6805 \d 6806 Ket 6807 End 6808------------------------------------------------------------------ 6809 6810/\s*\D/B 6811------------------------------------------------------------------ 6812 Bra 6813 \s* 6814 \D 6815 Ket 6816 End 6817------------------------------------------------------------------ 6818 6819/\s*\s/B 6820------------------------------------------------------------------ 6821 Bra 6822 \s* 6823 \s 6824 Ket 6825 End 6826------------------------------------------------------------------ 6827 6828/\s*\S/B 6829------------------------------------------------------------------ 6830 Bra 6831 \s*+ 6832 \S 6833 Ket 6834 End 6835------------------------------------------------------------------ 6836 6837/\s*\w/B 6838------------------------------------------------------------------ 6839 Bra 6840 \s*+ 6841 \w 6842 Ket 6843 End 6844------------------------------------------------------------------ 6845 6846/\s*\W/B 6847------------------------------------------------------------------ 6848 Bra 6849 \s* 6850 \W 6851 Ket 6852 End 6853------------------------------------------------------------------ 6854 6855/\S*a/B 6856------------------------------------------------------------------ 6857 Bra 6858 \S* 6859 a 6860 Ket 6861 End 6862------------------------------------------------------------------ 6863 6864/\S*2/B 6865------------------------------------------------------------------ 6866 Bra 6867 \S* 6868 2 6869 Ket 6870 End 6871------------------------------------------------------------------ 6872 6873/\S*\d/B 6874------------------------------------------------------------------ 6875 Bra 6876 \S* 6877 \d 6878 Ket 6879 End 6880------------------------------------------------------------------ 6881 6882/\S*\D/B 6883------------------------------------------------------------------ 6884 Bra 6885 \S* 6886 \D 6887 Ket 6888 End 6889------------------------------------------------------------------ 6890 6891/\S*\s/B 6892------------------------------------------------------------------ 6893 Bra 6894 \S*+ 6895 \s 6896 Ket 6897 End 6898------------------------------------------------------------------ 6899 6900/\S*\S/B 6901------------------------------------------------------------------ 6902 Bra 6903 \S* 6904 \S 6905 Ket 6906 End 6907------------------------------------------------------------------ 6908 6909/\S*\w/B 6910------------------------------------------------------------------ 6911 Bra 6912 \S* 6913 \w 6914 Ket 6915 End 6916------------------------------------------------------------------ 6917 6918/\S*\W/B 6919------------------------------------------------------------------ 6920 Bra 6921 \S* 6922 \W 6923 Ket 6924 End 6925------------------------------------------------------------------ 6926 6927/\w*a/B 6928------------------------------------------------------------------ 6929 Bra 6930 \w* 6931 a 6932 Ket 6933 End 6934------------------------------------------------------------------ 6935 6936/\w*2/B 6937------------------------------------------------------------------ 6938 Bra 6939 \w* 6940 2 6941 Ket 6942 End 6943------------------------------------------------------------------ 6944 6945/\w*\d/B 6946------------------------------------------------------------------ 6947 Bra 6948 \w* 6949 \d 6950 Ket 6951 End 6952------------------------------------------------------------------ 6953 6954/\w*\D/B 6955------------------------------------------------------------------ 6956 Bra 6957 \w* 6958 \D 6959 Ket 6960 End 6961------------------------------------------------------------------ 6962 6963/\w*\s/B 6964------------------------------------------------------------------ 6965 Bra 6966 \w*+ 6967 \s 6968 Ket 6969 End 6970------------------------------------------------------------------ 6971 6972/\w*\S/B 6973------------------------------------------------------------------ 6974 Bra 6975 \w* 6976 \S 6977 Ket 6978 End 6979------------------------------------------------------------------ 6980 6981/\w*\w/B 6982------------------------------------------------------------------ 6983 Bra 6984 \w* 6985 \w 6986 Ket 6987 End 6988------------------------------------------------------------------ 6989 6990/\w*\W/B 6991------------------------------------------------------------------ 6992 Bra 6993 \w*+ 6994 \W 6995 Ket 6996 End 6997------------------------------------------------------------------ 6998 6999/\W*a/B 7000------------------------------------------------------------------ 7001 Bra 7002 \W*+ 7003 a 7004 Ket 7005 End 7006------------------------------------------------------------------ 7007 7008/\W*2/B 7009------------------------------------------------------------------ 7010 Bra 7011 \W*+ 7012 2 7013 Ket 7014 End 7015------------------------------------------------------------------ 7016 7017/\W*\d/B 7018------------------------------------------------------------------ 7019 Bra 7020 \W*+ 7021 \d 7022 Ket 7023 End 7024------------------------------------------------------------------ 7025 7026/\W*\D/B 7027------------------------------------------------------------------ 7028 Bra 7029 \W* 7030 \D 7031 Ket 7032 End 7033------------------------------------------------------------------ 7034 7035/\W*\s/B 7036------------------------------------------------------------------ 7037 Bra 7038 \W* 7039 \s 7040 Ket 7041 End 7042------------------------------------------------------------------ 7043 7044/\W*\S/B 7045------------------------------------------------------------------ 7046 Bra 7047 \W* 7048 \S 7049 Ket 7050 End 7051------------------------------------------------------------------ 7052 7053/\W*\w/B 7054------------------------------------------------------------------ 7055 Bra 7056 \W*+ 7057 \w 7058 Ket 7059 End 7060------------------------------------------------------------------ 7061 7062/\W*\W/B 7063------------------------------------------------------------------ 7064 Bra 7065 \W* 7066 \W 7067 Ket 7068 End 7069------------------------------------------------------------------ 7070 7071/[^a]+a/B 7072------------------------------------------------------------------ 7073 Bra 7074 [^a]++ 7075 a 7076 Ket 7077 End 7078------------------------------------------------------------------ 7079 7080/[^a]+a/Bi 7081------------------------------------------------------------------ 7082 Bra 7083 /i [^a]++ 7084 /i a 7085 Ket 7086 End 7087------------------------------------------------------------------ 7088 7089/[^a]+A/Bi 7090------------------------------------------------------------------ 7091 Bra 7092 /i [^a]++ 7093 /i A 7094 Ket 7095 End 7096------------------------------------------------------------------ 7097 7098/[^a]+b/B 7099------------------------------------------------------------------ 7100 Bra 7101 [^a]+ 7102 b 7103 Ket 7104 End 7105------------------------------------------------------------------ 7106 7107/[^a]+\d/B 7108------------------------------------------------------------------ 7109 Bra 7110 [^a]+ 7111 \d 7112 Ket 7113 End 7114------------------------------------------------------------------ 7115 7116/a*[^a]/B 7117------------------------------------------------------------------ 7118 Bra 7119 a*+ 7120 [^a] 7121 Ket 7122 End 7123------------------------------------------------------------------ 7124 7125/(?P<abc>x)(?P<xyz>y)/I 7126Capture group count = 2 7127Named capture groups: 7128 abc 1 7129 xyz 2 7130First code unit = 'x' 7131Last code unit = 'y' 7132Subject length lower bound = 2 7133 xy\=copy=abc,copy=xyz 7134 0: xy 7135 1: x 7136 2: y 7137 C x (1) abc (group 1) 7138 C y (1) xyz (group 2) 7139 7140/(?<abc>x)(?'xyz'y)/I 7141Capture group count = 2 7142Named capture groups: 7143 abc 1 7144 xyz 2 7145First code unit = 'x' 7146Last code unit = 'y' 7147Subject length lower bound = 2 7148 xy\=copy=abc,copy=xyz 7149 0: xy 7150 1: x 7151 2: y 7152 C x (1) abc (group 1) 7153 C y (1) xyz (group 2) 7154 7155/(?<abc'x)(?'xyz'y)/I 7156Failed: error 142 at offset 6: syntax error in subpattern name (missing terminator?) 7157 7158/(?<abc>x)(?'xyz>y)/I 7159Failed: error 142 at offset 15: syntax error in subpattern name (missing terminator?) 7160 7161/(?P'abc'x)(?P<xyz>y)/I 7162Failed: error 141 at offset 3: unrecognized character after (?P 7163 7164/^(?:(?(ZZ)a|b)(?<ZZ>X))+/ 7165 bXaX 7166 0: bXaX 7167 1: X 7168 bXbX 7169 0: bX 7170 1: X 7171\= Expect no match 7172 aXaX 7173No match 7174 aXbX 7175No match 7176 7177/^(?P>abc)(?<abcd>xxx)/ 7178Failed: error 115 at offset 5: reference to non-existent subpattern 7179 7180/^(?P>abc)(?<abc>x|y)/ 7181 xx 7182 0: xx 7183 1: x 7184 xy 7185 0: xy 7186 1: y 7187 yy 7188 0: yy 7189 1: y 7190 yx 7191 0: yx 7192 1: x 7193 7194/^(?P>abc)(?P<abc>x|y)/ 7195 xx 7196 0: xx 7197 1: x 7198 xy 7199 0: xy 7200 1: y 7201 yy 7202 0: yy 7203 1: y 7204 yx 7205 0: yx 7206 1: x 7207 7208/^((?(abc)a|b)(?<abc>x|y))+/ 7209 bxay 7210 0: bxay 7211 1: ay 7212 2: y 7213 bxby 7214 0: bx 7215 1: bx 7216 2: x 7217\= Expect no match 7218 axby 7219No match 7220 7221/^(((?P=abc)|X)(?<abc>x|y))+/ 7222 XxXxxx 7223 0: XxXxxx 7224 1: xx 7225 2: x 7226 3: x 7227 XxXyyx 7228 0: XxXyyx 7229 1: yx 7230 2: y 7231 3: x 7232 XxXyxx 7233 0: XxXy 7234 1: Xy 7235 2: X 7236 3: y 7237\= Expect no match 7238 x 7239No match 7240 7241/^(?1)(abc)/ 7242 abcabc 7243 0: abcabc 7244 1: abc 7245 7246/^(?:(?:\1|X)(a|b))+/ 7247 Xaaa 7248 0: Xaaa 7249 1: a 7250 Xaba 7251 0: Xa 7252 1: a 7253 7254/^[\E\Qa\E-\Qz\E]+/B 7255------------------------------------------------------------------ 7256 Bra 7257 ^ 7258 [a-z]++ 7259 Ket 7260 End 7261------------------------------------------------------------------ 7262 7263/^[a\Q]bc\E]/B 7264------------------------------------------------------------------ 7265 Bra 7266 ^ 7267 [\]a-c] 7268 Ket 7269 End 7270------------------------------------------------------------------ 7271 7272/^[a-\Q\E]/B 7273------------------------------------------------------------------ 7274 Bra 7275 ^ 7276 [\-a] 7277 Ket 7278 End 7279------------------------------------------------------------------ 7280 7281/^(?P>abc)[()](?<abc>)/B 7282------------------------------------------------------------------ 7283 Bra 7284 ^ 7285 Recurse 7286 [()] 7287 CBra 1 7288 Ket 7289 Ket 7290 End 7291------------------------------------------------------------------ 7292 7293/^((?(abc)y)[()](?P<abc>x))+/B 7294------------------------------------------------------------------ 7295 Bra 7296 ^ 7297 CBra 1 7298 Cond 7299 2 Cond ref 7300 y 7301 Ket 7302 [()] 7303 CBra 2 7304 x 7305 Ket 7306 KetRmax 7307 Ket 7308 End 7309------------------------------------------------------------------ 7310 (xy)x 7311 0: (xy)x 7312 1: y)x 7313 2: x 7314 7315/^(?P>abc)\Q()\E(?<abc>)/B 7316------------------------------------------------------------------ 7317 Bra 7318 ^ 7319 Recurse 7320 () 7321 CBra 1 7322 Ket 7323 Ket 7324 End 7325------------------------------------------------------------------ 7326 7327/^(?P>abc)[a\Q(]\E(](?<abc>)/B 7328------------------------------------------------------------------ 7329 Bra 7330 ^ 7331 Recurse 7332 [(\]a] 7333 CBra 1 7334 Ket 7335 Ket 7336 End 7337------------------------------------------------------------------ 7338 7339/^(?P>abc) # this is (a comment) 7340 (?<abc>)/Bx 7341------------------------------------------------------------------ 7342 Bra 7343 ^ 7344 Recurse 7345 CBra 1 7346 Ket 7347 Ket 7348 End 7349------------------------------------------------------------------ 7350 7351/^\W*(?:(?<one>(?<two>.)\W*(?&one)\W*\k<two>|)|(?<three>(?<four>.)\W*(?&three)\W*\k'four'|\W*.\W*))\W*$/Ii 7352Capture group count = 4 7353Max back reference = 4 7354Named capture groups: 7355 four 4 7356 one 1 7357 three 3 7358 two 2 7359May match empty string 7360Compile options: caseless 7361Overall options: anchored caseless 7362Subject length lower bound = 0 7363 1221 7364 0: 1221 7365 1: 1221 7366 2: 1 7367 Satan, oscillate my metallic sonatas! 7368 0: Satan, oscillate my metallic sonatas! 7369 1: <unset> 7370 2: <unset> 7371 3: Satan, oscillate my metallic sonatas 7372 4: S 7373 A man, a plan, a canal: Panama! 7374 0: A man, a plan, a canal: Panama! 7375 1: <unset> 7376 2: <unset> 7377 3: A man, a plan, a canal: Panama 7378 4: A 7379 Able was I ere I saw Elba. 7380 0: Able was I ere I saw Elba. 7381 1: <unset> 7382 2: <unset> 7383 3: Able was I ere I saw Elba 7384 4: A 7385\= Expect no match 7386 The quick brown fox 7387No match 7388 7389/(?=(\w+))\1:/I 7390Capture group count = 1 7391Max back reference = 1 7392Starting code units: 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P 7393 Q R S T U V W X Y Z _ 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 7394Last code unit = ':' 7395Subject length lower bound = 2 7396 abcd: 7397 0: abcd: 7398 1: abcd 7399 7400/(?=(?'abc'\w+))\k<abc>:/I 7401Capture group count = 1 7402Max back reference = 1 7403Named capture groups: 7404 abc 1 7405Starting code units: 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P 7406 Q R S T U V W X Y Z _ 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 7407Last code unit = ':' 7408Subject length lower bound = 2 7409 abcd: 7410 0: abcd: 7411 1: abcd 7412 7413/(?'abc'a|b)(?<abc>d|e)\k<abc>{2}/dupnames 7414 adaa 7415 0: adaa 7416 1: a 7417 2: d 7418\= Expect no match 7419 addd 7420No match 7421 adbb 7422No match 7423 7424/(?'abc'a|b)(?<abc>d|e)(?&abc){2}/dupnames 7425 bdaa 7426 0: bdaa 7427 1: b 7428 2: d 7429 bdab 7430 0: bdab 7431 1: b 7432 2: d 7433\= Expect no match 7434 bddd 7435No match 7436 7437/(?(<bc))/ 7438Failed: error 142 at offset 6: syntax error in subpattern name (missing terminator?) 7439 7440/(?(''))/ 7441Failed: error 162 at offset 4: subpattern name expected 7442 7443/(?('R')stuff)/ 7444Failed: error 115 at offset 4: reference to non-existent subpattern 7445 7446/((abc (?(R) (?(R1)1) (?(R2)2) X | (?1) (?2) (?R) ))) /x 7447 abcabc1Xabc2XabcXabcabc 7448 0: abcabc1Xabc2XabcX 7449 1: abcabc1Xabc2XabcX 7450 2: abcabc1Xabc2XabcX 7451 7452/(?<A> (?'B' abc (?(R) (?(R&A)1) (?(R&B)2) X | (?1) (?2) (?R) ))) /x 7453 abcabc1Xabc2XabcXabcabc 7454 0: abcabc1Xabc2XabcX 7455 1: abcabc1Xabc2XabcX 7456 2: abcabc1Xabc2XabcX 7457 7458/(?<A> (?'B' abc (?(R) (?(R&C)1) (?(R&B)2) X | (?1) (?2) (?R) ))) /x 7459Failed: error 115 at offset 27: reference to non-existent subpattern 7460 7461/^(?(DEFINE) abc | xyz ) /x 7462Failed: error 154 at offset 4: DEFINE subpattern contains more than one branch 7463 7464/(?(DEFINE) abc) xyz/Ix 7465Capture group count = 0 7466Options: extended 7467First code unit = 'x' 7468Last code unit = 'z' 7469Subject length lower bound = 3 7470 7471/(a|)*\d/ 7472 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4\=ovector=0 7473 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 7474 1: 7475\= Expect no match 7476 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\=ovector=0 7477No match 7478 7479/^a.b/newline=lf 7480 a\rb 7481 0: a\x0db 7482\= Expect no match 7483 a\nb 7484No match 7485 7486/^a.b/newline=cr 7487 a\nb 7488 0: a\x0ab 7489\= Expect no match 7490 a\rb 7491No match 7492 7493/^a.b/newline=anycrlf 7494 a\x85b 7495 0: a\x85b 7496\= Expect no match 7497 a\rb 7498No match 7499 7500/^a.b/newline=any 7501\= Expect no match 7502 a\nb 7503No match 7504 a\rb 7505No match 7506 a\x85b 7507No match 7508 7509/^abc./gmx,newline=any 7510 abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x85abc7 JUNK 7511 0: abc1 7512 0: abc2 7513 0: abc3 7514 0: abc4 7515 0: abc5 7516 0: abc6 7517 0: abc7 7518 7519/abc.$/gmx,newline=any 7520 abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc7 abc9 7521 0: abc1 7522 0: abc2 7523 0: abc3 7524 0: abc4 7525 0: abc5 7526 0: abc6 7527 0: abc9 7528 7529/^a\Rb/bsr=unicode 7530 a\nb 7531 0: a\x0ab 7532 a\rb 7533 0: a\x0db 7534 a\r\nb 7535 0: a\x0d\x0ab 7536 a\x0bb 7537 0: a\x0bb 7538 a\x0cb 7539 0: a\x0cb 7540 a\x85b 7541 0: a\x85b 7542\= Expect no match 7543 a\n\rb 7544No match 7545 7546/^a\R*b/bsr=unicode 7547 ab 7548 0: ab 7549 a\nb 7550 0: a\x0ab 7551 a\rb 7552 0: a\x0db 7553 a\r\nb 7554 0: a\x0d\x0ab 7555 a\x0bb 7556 0: a\x0bb 7557 a\x0cb 7558 0: a\x0cb 7559 a\x85b 7560 0: a\x85b 7561 a\n\rb 7562 0: a\x0a\x0db 7563 a\n\r\x85\x0cb 7564 0: a\x0a\x0d\x85\x0cb 7565 7566/^a\R+b/bsr=unicode 7567 a\nb 7568 0: a\x0ab 7569 a\rb 7570 0: a\x0db 7571 a\r\nb 7572 0: a\x0d\x0ab 7573 a\x0bb 7574 0: a\x0bb 7575 a\x0cb 7576 0: a\x0cb 7577 a\x85b 7578 0: a\x85b 7579 a\n\rb 7580 0: a\x0a\x0db 7581 a\n\r\x85\x0cb 7582 0: a\x0a\x0d\x85\x0cb 7583\= Expect no match 7584 ab 7585No match 7586 7587/^a\R{1,3}b/bsr=unicode 7588 a\nb 7589 0: a\x0ab 7590 a\n\rb 7591 0: a\x0a\x0db 7592 a\n\r\x85b 7593 0: a\x0a\x0d\x85b 7594 a\r\n\r\nb 7595 0: a\x0d\x0a\x0d\x0ab 7596 a\r\n\r\n\r\nb 7597 0: a\x0d\x0a\x0d\x0a\x0d\x0ab 7598 a\n\r\n\rb 7599 0: a\x0a\x0d\x0a\x0db 7600 a\n\n\r\nb 7601 0: a\x0a\x0a\x0d\x0ab 7602\= Expect no match 7603 a\n\n\n\rb 7604No match 7605 a\r 7606No match 7607 7608/(?&abc)X(?<abc>P)/I 7609Capture group count = 1 7610Named capture groups: 7611 abc 1 7612Last code unit = 'P' 7613Subject length lower bound = 3 7614 abcPXP123 7615 0: PXP 7616 1: P 7617 7618/(?1)X(?<abc>P)/I 7619Capture group count = 1 7620Named capture groups: 7621 abc 1 7622Last code unit = 'P' 7623Subject length lower bound = 3 7624 abcPXP123 7625 0: PXP 7626 1: P 7627 7628/(?:a(?&abc)b)*(?<abc>x)/ 7629 123axbaxbaxbx456 7630 0: axbaxbaxbx 7631 1: x 7632 123axbaxbaxb456 7633 0: x 7634 1: x 7635 7636/(?:a(?&abc)b){1,5}(?<abc>x)/ 7637 123axbaxbaxbx456 7638 0: axbaxbaxbx 7639 1: x 7640 7641/(?:a(?&abc)b){2,5}(?<abc>x)/ 7642 123axbaxbaxbx456 7643 0: axbaxbaxbx 7644 1: x 7645 7646/(?:a(?&abc)b){2,}(?<abc>x)/ 7647 123axbaxbaxbx456 7648 0: axbaxbaxbx 7649 1: x 7650 7651/(abc)(?i:(?1))/ 7652 defabcabcxyz 7653 0: abcabc 7654 1: abc 7655\= Expect no match 7656 DEFabcABCXYZ 7657No match 7658 7659/(abc)(?:(?i)(?1))/ 7660 defabcabcxyz 7661 0: abcabc 7662 1: abc 7663\= Expect no match 7664 DEFabcABCXYZ 7665No match 7666 7667/^(a)\g-2/ 7668Failed: error 115 at offset 8: reference to non-existent subpattern 7669 7670/^(a)\g/ 7671Failed: error 157 at offset 6: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number 7672 7673/^(a)\g{0}/ 7674Failed: error 115 at offset 9: reference to non-existent subpattern 7675 7676/^(a)\g{3/ 7677Failed: error 157 at offset 6: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number 7678 7679/^(a)\g{aa}/ 7680Failed: error 115 at offset 7: reference to non-existent subpattern 7681 7682/^a.b/newline=lf 7683 a\rb 7684 0: a\x0db 7685\= Expect no match 7686 a\nb 7687No match 7688 7689/.+foo/ 7690 afoo 7691 0: afoo 7692\= Expect no match 7693 \r\nfoo 7694No match 7695 \nfoo 7696No match 7697 7698/.+foo/newline=crlf 7699 afoo 7700 0: afoo 7701 \nfoo 7702 0: \x0afoo 7703\= Expect no match 7704 \r\nfoo 7705No match 7706 7707/.+foo/newline=any 7708 afoo 7709 0: afoo 7710\= Expect no match 7711 \nfoo 7712No match 7713 \r\nfoo 7714No match 7715 7716/.+foo/s 7717 afoo 7718 0: afoo 7719 \r\nfoo 7720 0: \x0d\x0afoo 7721 \nfoo 7722 0: \x0afoo 7723 7724/^$/gm,newline=any 7725 abc\r\rxyz 7726 0: 7727 abc\n\rxyz 7728 0: 7729\= Expect no match 7730 abc\r\nxyz 7731No match 7732 7733/(?m)^$/g,newline=any,aftertext 7734 abc\r\n\r\n 7735 0: 7736 0+ \x0d\x0a 7737 7738/(?m)^$|^\r\n/g,newline=any,aftertext 7739 abc\r\n\r\n 7740 0: 7741 0+ \x0d\x0a 7742 0: \x0d\x0a 7743 0+ 7744 7745/(?m)$/g,newline=any,aftertext 7746 abc\r\n\r\n 7747 0: 7748 0+ \x0d\x0a\x0d\x0a 7749 0: 7750 0+ \x0d\x0a 7751 0: 7752 0+ 7753 7754/abc.$/gmx,newline=anycrlf 7755 abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc9 7756 0: abc1 7757 0: abc4 7758 0: abc5 7759 0: abc9 7760 7761/^X/m 7762 XABC 7763 0: X 7764\= Expect no match 7765 XABC\=notbol 7766No match 7767 7768/(ab|c)(?-1)/B 7769------------------------------------------------------------------ 7770 Bra 7771 CBra 1 7772 ab 7773 Alt 7774 c 7775 Ket 7776 Recurse 7777 Ket 7778 End 7779------------------------------------------------------------------ 7780 abc 7781 0: abc 7782 1: ab 7783 7784/xy(?+1)(abc)/B 7785------------------------------------------------------------------ 7786 Bra 7787 xy 7788 Recurse 7789 CBra 1 7790 abc 7791 Ket 7792 Ket 7793 End 7794------------------------------------------------------------------ 7795 xyabcabc 7796 0: xyabcabc 7797 1: abc 7798\= Expect no match 7799 xyabc 7800No match 7801 7802/x(?-0)y/ 7803Failed: error 126 at offset 5: a relative value of zero is not allowed 7804 7805/x(?-1)y/ 7806Failed: error 115 at offset 5: reference to non-existent subpattern 7807 7808/x(?+0)y/ 7809Failed: error 126 at offset 5: a relative value of zero is not allowed 7810 7811/x(?+1)y/ 7812Failed: error 115 at offset 5: reference to non-existent subpattern 7813 7814/^(abc)?(?(-1)X|Y)/B 7815------------------------------------------------------------------ 7816 Bra 7817 ^ 7818 Brazero 7819 CBra 1 7820 abc 7821 Ket 7822 Cond 7823 1 Cond ref 7824 X 7825 Alt 7826 Y 7827 Ket 7828 Ket 7829 End 7830------------------------------------------------------------------ 7831 abcX 7832 0: abcX 7833 1: abc 7834 Y 7835 0: Y 7836\= Expect no match 7837 abcY 7838No match 7839 7840/^((?(+1)X|Y)(abc))+/B 7841------------------------------------------------------------------ 7842 Bra 7843 ^ 7844 CBra 1 7845 Cond 7846 2 Cond ref 7847 X 7848 Alt 7849 Y 7850 Ket 7851 CBra 2 7852 abc 7853 Ket 7854 KetRmax 7855 Ket 7856 End 7857------------------------------------------------------------------ 7858 YabcXabc 7859 0: YabcXabc 7860 1: Xabc 7861 2: abc 7862 YabcXabcXabc 7863 0: YabcXabcXabc 7864 1: Xabc 7865 2: abc 7866\= Expect no match 7867 XabcXabc 7868No match 7869 7870/(?(-1)a)/B 7871Failed: error 115 at offset 5: reference to non-existent subpattern 7872 7873/((?(-1)a))/B 7874------------------------------------------------------------------ 7875 Bra 7876 CBra 1 7877 Cond 7878 1 Cond ref 7879 a 7880 Ket 7881 Ket 7882 Ket 7883 End 7884------------------------------------------------------------------ 7885 7886/((?(-2)a))/B 7887Failed: error 115 at offset 6: reference to non-existent subpattern 7888 7889/^(?(+1)X|Y)(.)/B 7890------------------------------------------------------------------ 7891 Bra 7892 ^ 7893 Cond 7894 1 Cond ref 7895 X 7896 Alt 7897 Y 7898 Ket 7899 CBra 1 7900 Any 7901 Ket 7902 Ket 7903 End 7904------------------------------------------------------------------ 7905 Y! 7906 0: Y! 7907 1: ! 7908 7909/(?<A>tom|bon)-\k{A}/ 7910 tom-tom 7911 0: tom-tom 7912 1: tom 7913 bon-bon 7914 0: bon-bon 7915 1: bon 7916\= Expect no match 7917 tom-bon 7918No match 7919 7920/\g{A/ 7921Failed: error 142 at offset 4: syntax error in subpattern name (missing terminator?) 7922 7923/(?|(abc)|(xyz))/B 7924------------------------------------------------------------------ 7925 Bra 7926 Bra 7927 CBra 1 7928 abc 7929 Ket 7930 Alt 7931 CBra 1 7932 xyz 7933 Ket 7934 Ket 7935 Ket 7936 End 7937------------------------------------------------------------------ 7938 >abc< 7939 0: abc 7940 1: abc 7941 >xyz< 7942 0: xyz 7943 1: xyz 7944 7945/(x)(?|(abc)|(xyz))(x)/B 7946------------------------------------------------------------------ 7947 Bra 7948 CBra 1 7949 x 7950 Ket 7951 Bra 7952 CBra 2 7953 abc 7954 Ket 7955 Alt 7956 CBra 2 7957 xyz 7958 Ket 7959 Ket 7960 CBra 3 7961 x 7962 Ket 7963 Ket 7964 End 7965------------------------------------------------------------------ 7966 xabcx 7967 0: xabcx 7968 1: x 7969 2: abc 7970 3: x 7971 xxyzx 7972 0: xxyzx 7973 1: x 7974 2: xyz 7975 3: x 7976 7977/(x)(?|(abc)(pqr)|(xyz))(x)/B 7978------------------------------------------------------------------ 7979 Bra 7980 CBra 1 7981 x 7982 Ket 7983 Bra 7984 CBra 2 7985 abc 7986 Ket 7987 CBra 3 7988 pqr 7989 Ket 7990 Alt 7991 CBra 2 7992 xyz 7993 Ket 7994 Ket 7995 CBra 4 7996 x 7997 Ket 7998 Ket 7999 End 8000------------------------------------------------------------------ 8001 xabcpqrx 8002 0: xabcpqrx 8003 1: x 8004 2: abc 8005 3: pqr 8006 4: x 8007 xxyzx 8008 0: xxyzx 8009 1: x 8010 2: xyz 8011 3: <unset> 8012 4: x 8013 8014/\H++X/B 8015------------------------------------------------------------------ 8016 Bra 8017 \H++ 8018 X 8019 Ket 8020 End 8021------------------------------------------------------------------ 8022\= Expect no match 8023 XXXX 8024No match 8025 8026/\H+\hY/B 8027------------------------------------------------------------------ 8028 Bra 8029 \H++ 8030 \h 8031 Y 8032 Ket 8033 End 8034------------------------------------------------------------------ 8035 XXXX Y 8036 0: XXXX Y 8037 8038/\H+ Y/B 8039------------------------------------------------------------------ 8040 Bra 8041 \H++ 8042 Y 8043 Ket 8044 End 8045------------------------------------------------------------------ 8046 8047/\h+A/B 8048------------------------------------------------------------------ 8049 Bra 8050 \h++ 8051 A 8052 Ket 8053 End 8054------------------------------------------------------------------ 8055 8056/\v*B/B 8057------------------------------------------------------------------ 8058 Bra 8059 \v*+ 8060 B 8061 Ket 8062 End 8063------------------------------------------------------------------ 8064 8065/\V+\x0a/B 8066------------------------------------------------------------------ 8067 Bra 8068 \V++ 8069 \x0a 8070 Ket 8071 End 8072------------------------------------------------------------------ 8073 8074/A+\h/B 8075------------------------------------------------------------------ 8076 Bra 8077 A++ 8078 \h 8079 Ket 8080 End 8081------------------------------------------------------------------ 8082 8083/ *\H/B 8084------------------------------------------------------------------ 8085 Bra 8086 *+ 8087 \H 8088 Ket 8089 End 8090------------------------------------------------------------------ 8091 8092/A*\v/B 8093------------------------------------------------------------------ 8094 Bra 8095 A*+ 8096 \v 8097 Ket 8098 End 8099------------------------------------------------------------------ 8100 8101/\x0b*\V/B 8102------------------------------------------------------------------ 8103 Bra 8104 \x0b*+ 8105 \V 8106 Ket 8107 End 8108------------------------------------------------------------------ 8109 8110/\d+\h/B 8111------------------------------------------------------------------ 8112 Bra 8113 \d++ 8114 \h 8115 Ket 8116 End 8117------------------------------------------------------------------ 8118 8119/\d*\v/B 8120------------------------------------------------------------------ 8121 Bra 8122 \d*+ 8123 \v 8124 Ket 8125 End 8126------------------------------------------------------------------ 8127 8128/S+\h\S+\v/B 8129------------------------------------------------------------------ 8130 Bra 8131 S++ 8132 \h 8133 \S++ 8134 \v 8135 Ket 8136 End 8137------------------------------------------------------------------ 8138 8139/\w{3,}\h\w+\v/B 8140------------------------------------------------------------------ 8141 Bra 8142 \w{3} 8143 \w*+ 8144 \h 8145 \w++ 8146 \v 8147 Ket 8148 End 8149------------------------------------------------------------------ 8150 8151/\h+\d\h+\w\h+\S\h+\H/B 8152------------------------------------------------------------------ 8153 Bra 8154 \h++ 8155 \d 8156 \h++ 8157 \w 8158 \h++ 8159 \S 8160 \h++ 8161 \H 8162 Ket 8163 End 8164------------------------------------------------------------------ 8165 8166/\v+\d\v+\w\v+\S\v+\V/B 8167------------------------------------------------------------------ 8168 Bra 8169 \v++ 8170 \d 8171 \v++ 8172 \w 8173 \v++ 8174 \S 8175 \v++ 8176 \V 8177 Ket 8178 End 8179------------------------------------------------------------------ 8180 8181/\H+\h\H+\d/B 8182------------------------------------------------------------------ 8183 Bra 8184 \H++ 8185 \h 8186 \H+ 8187 \d 8188 Ket 8189 End 8190------------------------------------------------------------------ 8191 8192/\V+\v\V+\w/B 8193------------------------------------------------------------------ 8194 Bra 8195 \V++ 8196 \v 8197 \V+ 8198 \w 8199 Ket 8200 End 8201------------------------------------------------------------------ 8202 8203/\( (?: [^()]* | (?R) )* \)/x 8204(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(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)\=jitstack=1024 8205 0: (0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(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) 8206 8207/[\E]AAA/ 8208Failed: error 106 at offset 7: missing terminating ] for character class 8209 8210/[\Q\E]AAA/ 8211Failed: error 106 at offset 9: missing terminating ] for character class 8212 8213/[^\E]AAA/ 8214Failed: error 106 at offset 8: missing terminating ] for character class 8215 8216/[^\Q\E]AAA/ 8217Failed: error 106 at offset 10: missing terminating ] for character class 8218 8219/[\E^]AAA/ 8220Failed: error 106 at offset 8: missing terminating ] for character class 8221 8222/[\Q\E^]AAA/ 8223Failed: error 106 at offset 10: missing terminating ] for character class 8224 8225/A(*PRUNE)B(*SKIP)C(*THEN)D(*COMMIT)E(*F)F(*FAIL)G(?!)H(*ACCEPT)I/B 8226------------------------------------------------------------------ 8227 Bra 8228 A 8229 *PRUNE 8230 B 8231 *SKIP 8232 C 8233 *THEN 8234 D 8235 *COMMIT 8236 E 8237 *FAIL 8238 F 8239 *FAIL 8240 G 8241 *FAIL 8242 H 8243 *ACCEPT 8244 I 8245 Ket 8246 End 8247------------------------------------------------------------------ 8248 8249/^a+(*FAIL)/auto_callout 8250\= Expect no match 8251 aaaaaa 8252--->aaaaaa 8253 +0 ^ ^ 8254 +1 ^ a+ 8255 +3 ^ ^ (*FAIL) 8256 +3 ^ ^ (*FAIL) 8257 +3 ^ ^ (*FAIL) 8258 +3 ^ ^ (*FAIL) 8259 +3 ^ ^ (*FAIL) 8260 +3 ^^ (*FAIL) 8261No match 8262 8263/a+b?c+(*FAIL)/auto_callout 8264\= Expect no match 8265 aaabccc 8266--->aaabccc 8267 +0 ^ a+ 8268 +2 ^ ^ b? 8269 +4 ^ ^ c+ 8270 +6 ^ ^ (*FAIL) 8271 +6 ^ ^ (*FAIL) 8272 +6 ^ ^ (*FAIL) 8273 +0 ^ a+ 8274 +2 ^ ^ b? 8275 +4 ^ ^ c+ 8276 +6 ^ ^ (*FAIL) 8277 +6 ^ ^ (*FAIL) 8278 +6 ^ ^ (*FAIL) 8279 +0 ^ a+ 8280 +2 ^^ b? 8281 +4 ^ ^ c+ 8282 +6 ^ ^ (*FAIL) 8283 +6 ^ ^ (*FAIL) 8284 +6 ^ ^ (*FAIL) 8285No match 8286 8287/a+b?(*PRUNE)c+(*FAIL)/auto_callout 8288\= Expect no match 8289 aaabccc 8290--->aaabccc 8291 +0 ^ a+ 8292 +2 ^ ^ b? 8293 +4 ^ ^ (*PRUNE) 8294+12 ^ ^ c+ 8295+14 ^ ^ (*FAIL) 8296+14 ^ ^ (*FAIL) 8297+14 ^ ^ (*FAIL) 8298 +0 ^ a+ 8299 +2 ^ ^ b? 8300 +4 ^ ^ (*PRUNE) 8301+12 ^ ^ c+ 8302+14 ^ ^ (*FAIL) 8303+14 ^ ^ (*FAIL) 8304+14 ^ ^ (*FAIL) 8305 +0 ^ a+ 8306 +2 ^^ b? 8307 +4 ^ ^ (*PRUNE) 8308+12 ^ ^ c+ 8309+14 ^ ^ (*FAIL) 8310+14 ^ ^ (*FAIL) 8311+14 ^ ^ (*FAIL) 8312No match 8313 8314/a+b?(*COMMIT)c+(*FAIL)/auto_callout 8315\= Expect no match 8316 aaabccc 8317--->aaabccc 8318 +0 ^ a+ 8319 +2 ^ ^ b? 8320 +4 ^ ^ (*COMMIT) 8321+13 ^ ^ c+ 8322+15 ^ ^ (*FAIL) 8323+15 ^ ^ (*FAIL) 8324+15 ^ ^ (*FAIL) 8325No match 8326 8327/a+b?(*SKIP)c+(*FAIL)/auto_callout 8328\= Expect no match 8329 aaabcccaaabccc 8330--->aaabcccaaabccc 8331 +0 ^ a+ 8332 +2 ^ ^ b? 8333 +4 ^ ^ (*SKIP) 8334+11 ^ ^ c+ 8335+13 ^ ^ (*FAIL) 8336+13 ^ ^ (*FAIL) 8337+13 ^ ^ (*FAIL) 8338 +0 ^ a+ 8339 +2 ^ ^ b? 8340 +4 ^ ^ (*SKIP) 8341+11 ^ ^ c+ 8342+13 ^ ^ (*FAIL) 8343+13 ^ ^ (*FAIL) 8344+13 ^ ^ (*FAIL) 8345No match 8346 8347/a+b?(*THEN)c+(*FAIL)/auto_callout 8348\= Expect no match 8349 aaabccc 8350--->aaabccc 8351 +0 ^ a+ 8352 +2 ^ ^ b? 8353 +4 ^ ^ (*THEN) 8354+11 ^ ^ c+ 8355+13 ^ ^ (*FAIL) 8356+13 ^ ^ (*FAIL) 8357+13 ^ ^ (*FAIL) 8358 +0 ^ a+ 8359 +2 ^ ^ b? 8360 +4 ^ ^ (*THEN) 8361+11 ^ ^ c+ 8362+13 ^ ^ (*FAIL) 8363+13 ^ ^ (*FAIL) 8364+13 ^ ^ (*FAIL) 8365 +0 ^ a+ 8366 +2 ^^ b? 8367 +4 ^ ^ (*THEN) 8368+11 ^ ^ c+ 8369+13 ^ ^ (*FAIL) 8370+13 ^ ^ (*FAIL) 8371+13 ^ ^ (*FAIL) 8372No match 8373 8374/a(*MARK)b/ 8375Failed: error 166 at offset 7: (*MARK) must have an argument 8376 8377/\g6666666666/ 8378Failed: error 161 at offset 7: subpattern number is too big 8379 8380/[\g6666666666]/B 8381------------------------------------------------------------------ 8382 Bra 8383 [6g] 8384 Ket 8385 End 8386------------------------------------------------------------------ 8387 8388/(?1)\c[/ 8389Failed: error 115 at offset 3: reference to non-existent subpattern 8390 8391/.+A/newline=crlf 8392\= Expect no match 8393 \r\nA 8394No match 8395 8396/\nA/newline=crlf 8397 \r\nA 8398 0: \x0aA 8399 8400/[\r\n]A/newline=crlf 8401 \r\nA 8402 0: \x0aA 8403 8404/(\r|\n)A/newline=crlf 8405 \r\nA 8406 0: \x0aA 8407 1: \x0a 8408 8409/a(*CR)b/ 8410Failed: error 160 at offset 5: (*VERB) not recognized or malformed 8411 8412/(*CR)a.b/ 8413 a\nb 8414 0: a\x0ab 8415\= Expect no match 8416 a\rb 8417No match 8418 8419/(*CR)a.b/newline=lf 8420 a\nb 8421 0: a\x0ab 8422\= Expect no match 8423 a\rb 8424No match 8425 8426/(*LF)a.b/newline=CRLF 8427 a\rb 8428 0: a\x0db 8429\= Expect no match 8430 a\nb 8431No match 8432 8433/(*CRLF)a.b/ 8434 a\rb 8435 0: a\x0db 8436 a\nb 8437 0: a\x0ab 8438\= Expect no match 8439 a\r\nb 8440No match 8441 8442/(*ANYCRLF)a.b/newline=CR 8443\= Expect no match 8444 a\rb 8445No match 8446 a\nb 8447No match 8448 a\r\nb 8449No match 8450 8451/(*ANY)a.b/newline=cr 8452\= Expect no match 8453 a\rb 8454No match 8455 a\nb 8456No match 8457 a\r\nb 8458No match 8459 a\x85b 8460No match 8461 8462/(*ANY).*/g 8463 abc\r\ndef 8464 0: abc 8465 0: 8466 0: def 8467 0: 8468 8469/(*ANYCRLF).*/g 8470 abc\r\ndef 8471 0: abc 8472 0: 8473 0: def 8474 0: 8475 8476/(*CRLF).*/g 8477 abc\r\ndef 8478 0: abc 8479 0: 8480 0: def 8481 0: 8482 8483/(*NUL)^.*/ 8484 a\nb\x00ccc 8485 0: a\x0ab 8486 8487/(*NUL)^.*/s 8488 a\nb\x00ccc 8489 0: a\x0ab\x00ccc 8490 8491/^x/m,newline=NUL 8492 ab\x00xy 8493 0: x 8494 8495/'#comment' 0d 0a 00 '^x\' 0a 'y'/x,newline=nul,hex 8496 x\nyz 8497 0: x\x0ay 8498 8499/(*NUL)^X\NY/ 8500 X\nY 8501 0: X\x0aY 8502 X\rY 8503 0: X\x0dY 8504\= Expect no match 8505 X\x00Y 8506No match 8507 8508/a\Rb/I,bsr=anycrlf 8509Capture group count = 0 8510\R matches CR, LF, or CRLF 8511First code unit = 'a' 8512Last code unit = 'b' 8513Subject length lower bound = 3 8514 a\rb 8515 0: a\x0db 8516 a\nb 8517 0: a\x0ab 8518 a\r\nb 8519 0: a\x0d\x0ab 8520\= Expect no match 8521 a\x85b 8522No match 8523 a\x0bb 8524No match 8525 8526/a\Rb/I,bsr=unicode 8527Capture group count = 0 8528\R matches any Unicode newline 8529First code unit = 'a' 8530Last code unit = 'b' 8531Subject length lower bound = 3 8532 a\rb 8533 0: a\x0db 8534 a\nb 8535 0: a\x0ab 8536 a\r\nb 8537 0: a\x0d\x0ab 8538 a\x85b 8539 0: a\x85b 8540 a\x0bb 8541 0: a\x0bb 8542 8543/a\R?b/I,bsr=anycrlf 8544Capture group count = 0 8545\R matches CR, LF, or CRLF 8546First code unit = 'a' 8547Last code unit = 'b' 8548Subject length lower bound = 2 8549 a\rb 8550 0: a\x0db 8551 a\nb 8552 0: a\x0ab 8553 a\r\nb 8554 0: a\x0d\x0ab 8555\= Expect no match 8556 a\x85b 8557No match 8558 a\x0bb 8559No match 8560 8561/a\R?b/I,bsr=unicode 8562Capture group count = 0 8563\R matches any Unicode newline 8564First code unit = 'a' 8565Last code unit = 'b' 8566Subject length lower bound = 2 8567 a\rb 8568 0: a\x0db 8569 a\nb 8570 0: a\x0ab 8571 a\r\nb 8572 0: a\x0d\x0ab 8573 a\x85b 8574 0: a\x85b 8575 a\x0bb 8576 0: a\x0bb 8577 8578/a\R{2,4}b/I,bsr=anycrlf 8579Capture group count = 0 8580\R matches CR, LF, or CRLF 8581First code unit = 'a' 8582Last code unit = 'b' 8583Subject length lower bound = 4 8584 a\r\n\nb 8585 0: a\x0d\x0a\x0ab 8586 a\n\r\rb 8587 0: a\x0a\x0d\x0db 8588 a\r\n\r\n\r\n\r\nb 8589 0: a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0ab 8590\= Expect no match 8591 a\x85\x85b 8592No match 8593 a\x0b\x0bb 8594No match 8595 8596/a\R{2,4}b/I,bsr=unicode 8597Capture group count = 0 8598\R matches any Unicode newline 8599First code unit = 'a' 8600Last code unit = 'b' 8601Subject length lower bound = 4 8602 a\r\rb 8603 0: a\x0d\x0db 8604 a\n\n\nb 8605 0: a\x0a\x0a\x0ab 8606 a\r\n\n\r\rb 8607 0: a\x0d\x0a\x0a\x0d\x0db 8608 a\x85\x85b 8609 0: a\x85\x85b 8610 a\x0b\x0bb 8611 0: a\x0b\x0bb 8612\= Expect no match 8613 a\r\r\r\r\rb 8614No match 8615 8616/(*BSR_ANYCRLF)a\Rb/I 8617Capture group count = 0 8618\R matches CR, LF, or CRLF 8619First code unit = 'a' 8620Last code unit = 'b' 8621Subject length lower bound = 3 8622 a\nb 8623 0: a\x0ab 8624 a\rb 8625 0: a\x0db 8626 8627/(*BSR_UNICODE)a\Rb/I 8628Capture group count = 0 8629\R matches any Unicode newline 8630First code unit = 'a' 8631Last code unit = 'b' 8632Subject length lower bound = 3 8633 a\x85b 8634 0: a\x85b 8635 8636/(*BSR_ANYCRLF)(*CRLF)a\Rb/I 8637Capture group count = 0 8638\R matches CR, LF, or CRLF 8639Forced newline is CRLF 8640First code unit = 'a' 8641Last code unit = 'b' 8642Subject length lower bound = 3 8643 a\nb 8644 0: a\x0ab 8645 a\rb 8646 0: a\x0db 8647 8648/(*CRLF)(*BSR_UNICODE)a\Rb/I 8649Capture group count = 0 8650\R matches any Unicode newline 8651Forced newline is CRLF 8652First code unit = 'a' 8653Last code unit = 'b' 8654Subject length lower bound = 3 8655 a\x85b 8656 0: a\x85b 8657 8658/(*CRLF)(*BSR_ANYCRLF)(*CR)ab/I 8659Capture group count = 0 8660\R matches CR, LF, or CRLF 8661Forced newline is CR 8662First code unit = 'a' 8663Last code unit = 'b' 8664Subject length lower bound = 2 8665 8666/(?<a>)(?&)/ 8667Failed: error 162 at offset 9: subpattern name expected 8668 8669/(?<abc>)(?&a)/ 8670Failed: error 115 at offset 11: reference to non-existent subpattern 8671 8672/(?<a>)(?&aaaaaaaaaaaaaaaaaaaaaaa)/ 8673Failed: error 115 at offset 9: reference to non-existent subpattern 8674 8675/(?+-a)/ 8676Failed: error 129 at offset 2: digit expected after (?+ or (?- 8677 8678/(?-+a)/ 8679Failed: error 111 at offset 3: unrecognized character after (? or (?- 8680 8681/(?(-1))/ 8682Failed: error 115 at offset 5: reference to non-existent subpattern 8683 8684/(?(+10))/ 8685Failed: error 115 at offset 4: reference to non-existent subpattern 8686 8687/(?(10))/ 8688Failed: error 115 at offset 3: reference to non-existent subpattern 8689 8690/(?(+2))()()/ 8691 8692/(?(2))()()/ 8693 8694/\k''/ 8695Failed: error 162 at offset 3: subpattern name expected 8696 8697/\k<>/ 8698Failed: error 162 at offset 3: subpattern name expected 8699 8700/\k{}/ 8701Failed: error 162 at offset 3: subpattern name expected 8702 8703/\k/ 8704Failed: error 169 at offset 2: \k is not followed by a braced, angle-bracketed, or quoted name 8705 8706/\kabc/ 8707Failed: error 169 at offset 2: \k is not followed by a braced, angle-bracketed, or quoted name 8708 8709/(?P=)/ 8710Failed: error 162 at offset 4: subpattern name expected 8711 8712/(?P>)/ 8713Failed: error 162 at offset 4: subpattern name expected 8714 8715/[[:foo:]]/ 8716Failed: error 130 at offset 3: unknown POSIX class name 8717 8718/[[:1234:]]/ 8719Failed: error 130 at offset 3: unknown POSIX class name 8720 8721/[[:f\oo:]]/ 8722Failed: error 130 at offset 3: unknown POSIX class name 8723 8724/[[: :]]/ 8725Failed: error 130 at offset 3: unknown POSIX class name 8726 8727/[[:...:]]/ 8728Failed: error 130 at offset 3: unknown POSIX class name 8729 8730/[[:l\ower:]]/ 8731Failed: error 130 at offset 3: unknown POSIX class name 8732 8733/[[:abc\:]]/ 8734Failed: error 130 at offset 3: unknown POSIX class name 8735 8736/[abc[:x\]pqr:]]/ 8737Failed: error 130 at offset 6: unknown POSIX class name 8738 8739/[[:a\dz:]]/ 8740Failed: error 130 at offset 3: unknown POSIX class name 8741 8742/(^(a|b\g<-1'c))/ 8743Failed: error 157 at offset 8: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number 8744 8745/^(?+1)(?<a>x|y){0}z/ 8746 xzxx 8747 0: xz 8748 yzyy 8749 0: yz 8750\= Expect no match 8751 xxz 8752No match 8753 8754/(\3)(\1)(a)/ 8755\= Expect no match 8756 cat 8757No match 8758 8759/(\3)(\1)(a)/allow_empty_class,match_unset_backref,dupnames 8760 cat 8761 0: a 8762 1: 8763 2: 8764 3: a 8765 8766/TA]/ 8767 The ACTA] comes 8768 0: TA] 8769 8770/TA]/allow_empty_class,match_unset_backref,dupnames 8771 The ACTA] comes 8772 0: TA] 8773 8774/(?2)[]a()b](abc)/ 8775Failed: error 115 at offset 3: reference to non-existent subpattern 8776 abcbabc 8777 8778/(?2)[^]a()b](abc)/ 8779Failed: error 115 at offset 3: reference to non-existent subpattern 8780 abcbabc 8781 8782/(?1)[]a()b](abc)/ 8783 abcbabc 8784 0: abcbabc 8785 1: abc 8786\= Expect no match 8787 abcXabc 8788No match 8789 8790/(?1)[^]a()b](abc)/ 8791 abcXabc 8792 0: abcXabc 8793 1: abc 8794\= Expect no match 8795 abcbabc 8796No match 8797 8798/(?2)[]a()b](abc)(xyz)/ 8799 xyzbabcxyz 8800 0: xyzbabcxyz 8801 1: abc 8802 2: xyz 8803 8804/(?&N)[]a(?<N>)](?<M>abc)/ 8805Failed: error 115 at offset 3: reference to non-existent subpattern 8806 abc<abc 8807 8808/(?&N)[]a(?<N>)](abc)/ 8809Failed: error 115 at offset 3: reference to non-existent subpattern 8810 abc<abc 8811 8812/a[]b/ 8813Failed: error 106 at offset 4: missing terminating ] for character class 8814 8815/a[^]b/ 8816Failed: error 106 at offset 5: missing terminating ] for character class 8817 8818/a[]b/allow_empty_class,match_unset_backref,dupnames 8819\= Expect no match 8820 ab 8821No match 8822 8823/a[]+b/allow_empty_class,match_unset_backref,dupnames 8824\= Expect no match 8825 ab 8826No match 8827 8828/a[]*+b/allow_empty_class,match_unset_backref,dupnames 8829\= Expect no match 8830 ab 8831No match 8832 8833/a[^]b/allow_empty_class,match_unset_backref,dupnames 8834 aXb 8835 0: aXb 8836 a\nb 8837 0: a\x0ab 8838\= Expect no match 8839 ab 8840No match 8841 8842/a[^]+b/allow_empty_class,match_unset_backref,dupnames 8843 aXb 8844 0: aXb 8845 a\nX\nXb 8846 0: a\x0aX\x0aXb 8847\= Expect no match 8848 ab 8849No match 8850 8851/a(?!)b/B 8852------------------------------------------------------------------ 8853 Bra 8854 a 8855 *FAIL 8856 b 8857 Ket 8858 End 8859------------------------------------------------------------------ 8860 8861/(?!)?a/B 8862------------------------------------------------------------------ 8863 Bra 8864 Brazero 8865 Assert not 8866 Ket 8867 a 8868 Ket 8869 End 8870------------------------------------------------------------------ 8871 ab 8872 0: a 8873 8874/a(*FAIL)+b/ 8875Failed: error 109 at offset 8: quantifier does not follow a repeatable item 8876 8877/(abc|pqr|123){0}[xyz]/I 8878Capture group count = 1 8879Starting code units: x y z 8880Subject length lower bound = 1 8881 8882/(?(?=.*b)b|^)/I,auto_callout 8883Capture group count = 0 8884May match empty string 8885Options: auto_callout 8886Subject length lower bound = 0 8887 adc 8888--->adc 8889 +0 ^ (? 8890 +2 ^ (?= 8891 +5 ^ .* 8892 +7 ^ ^ b 8893 +7 ^ ^ b 8894 +7 ^^ b 8895 +7 ^ b 8896+11 ^ ^ 8897+12 ^ ) 8898+13 ^ End of pattern 8899 0: 8900 abc 8901--->abc 8902 +0 ^ (? 8903 +2 ^ (?= 8904 +5 ^ .* 8905 +7 ^ ^ b 8906 +7 ^ ^ b 8907 +7 ^^ b 8908 +8 ^ ^ ) 8909 +9 ^ b 8910 +0 ^ (? 8911 +2 ^ (?= 8912 +5 ^ .* 8913 +7 ^ ^ b 8914 +7 ^^ b 8915 +7 ^ b 8916 +8 ^^ ) 8917 +9 ^ b 8918+10 ^^ | 8919+13 ^^ End of pattern 8920 0: b 8921 8922/(?(?=b).*b|^d)/I 8923Capture group count = 0 8924Subject length lower bound = 1 8925 8926/(?(?=.*b).*b|^d)/I 8927Capture group count = 0 8928Subject length lower bound = 1 8929 8930/xyz/auto_callout 8931 xyz 8932--->xyz 8933 +0 ^ x 8934 +1 ^^ y 8935 +2 ^ ^ z 8936 +3 ^ ^ End of pattern 8937 0: xyz 8938 abcxyz 8939--->abcxyz 8940 +0 ^ x 8941 +1 ^^ y 8942 +2 ^ ^ z 8943 +3 ^ ^ End of pattern 8944 0: xyz 8945\= Expect no match 8946 abc 8947No match 8948 abcxypqr 8949No match 8950 8951/xyz/auto_callout,no_start_optimize 8952 abcxyz 8953--->abcxyz 8954 +0 ^ x 8955 +0 ^ x 8956 +0 ^ x 8957 +0 ^ x 8958 +1 ^^ y 8959 +2 ^ ^ z 8960 +3 ^ ^ End of pattern 8961 0: xyz 8962\= Expect no match 8963 abc 8964--->abc 8965 +0 ^ x 8966 +0 ^ x 8967 +0 ^ x 8968 +0 ^ x 8969No match 8970 abcxypqr 8971--->abcxypqr 8972 +0 ^ x 8973 +0 ^ x 8974 +0 ^ x 8975 +0 ^ x 8976 +1 ^^ y 8977 +2 ^ ^ z 8978 +0 ^ x 8979 +0 ^ x 8980 +0 ^ x 8981 +0 ^ x 8982 +0 ^ x 8983No match 8984 8985/(*NO_START_OPT)xyz/auto_callout 8986 abcxyz 8987--->abcxyz 8988+15 ^ x 8989+15 ^ x 8990+15 ^ x 8991+15 ^ x 8992+16 ^^ y 8993+17 ^ ^ z 8994+18 ^ ^ End of pattern 8995 0: xyz 8996 8997/(*NO_AUTO_POSSESS)a+b/B 8998------------------------------------------------------------------ 8999 Bra 9000 a+ 9001 b 9002 Ket 9003 End 9004------------------------------------------------------------------ 9005 9006/xyz/auto_callout,no_start_optimize 9007 abcxyz 9008--->abcxyz 9009 +0 ^ x 9010 +0 ^ x 9011 +0 ^ x 9012 +0 ^ x 9013 +1 ^^ y 9014 +2 ^ ^ z 9015 +3 ^ ^ End of pattern 9016 0: xyz 9017 9018/^"((?(?=[a])[^"])|b)*"$/auto_callout 9019 "ab" 9020--->"ab" 9021 +0 ^ ^ 9022 +1 ^ " 9023 +2 ^^ ( 9024 +3 ^^ (? 9025 +5 ^^ (?= 9026 +8 ^^ [a] 9027+11 ^ ^ ) 9028+12 ^^ [^"] 9029+16 ^ ^ ) 9030+17 ^ ^ | 9031 +3 ^ ^ (? 9032 +5 ^ ^ (?= 9033 +8 ^ ^ [a] 9034+17 ^ ^ | 9035+21 ^ ^ " 9036+18 ^ ^ b 9037+19 ^ ^ )* 9038 +3 ^ ^ (? 9039 +5 ^ ^ (?= 9040 +8 ^ ^ [a] 9041+17 ^ ^ | 9042+21 ^ ^ " 9043+22 ^ ^ $ 9044+23 ^ ^ End of pattern 9045 0: "ab" 9046 1: 9047 9048/^"((?(?=[a])[^"])|b)*"$/ 9049 "ab" 9050 0: "ab" 9051 1: 9052 9053/^X(?5)(a)(?|(b)|(q))(c)(d)Y/ 9054Failed: error 115 at offset 5: reference to non-existent subpattern 9055 XYabcdY 9056 9057/^X(?&N)(a)(?|(b)|(q))(c)(d)(?<N>Y)/ 9058 XYabcdY 9059 0: XYabcdY 9060 1: a 9061 2: b 9062 3: c 9063 4: d 9064 5: Y 9065 9066/Xa{2,4}b/ 9067 X\=ps 9068Partial match: X 9069 Xa\=ps 9070Partial match: Xa 9071 Xaa\=ps 9072Partial match: Xaa 9073 Xaaa\=ps 9074Partial match: Xaaa 9075 Xaaaa\=ps 9076Partial match: Xaaaa 9077 9078/Xa{2,4}?b/ 9079 X\=ps 9080Partial match: X 9081 Xa\=ps 9082Partial match: Xa 9083 Xaa\=ps 9084Partial match: Xaa 9085 Xaaa\=ps 9086Partial match: Xaaa 9087 Xaaaa\=ps 9088Partial match: Xaaaa 9089 9090/Xa{2,4}+b/ 9091 X\=ps 9092Partial match: X 9093 Xa\=ps 9094Partial match: Xa 9095 Xaa\=ps 9096Partial match: Xaa 9097 Xaaa\=ps 9098Partial match: Xaaa 9099 Xaaaa\=ps 9100Partial match: Xaaaa 9101 9102/X\d{2,4}b/ 9103 X\=ps 9104Partial match: X 9105 X3\=ps 9106Partial match: X3 9107 X33\=ps 9108Partial match: X33 9109 X333\=ps 9110Partial match: X333 9111 X3333\=ps 9112Partial match: X3333 9113 9114/X\d{2,4}?b/ 9115 X\=ps 9116Partial match: X 9117 X3\=ps 9118Partial match: X3 9119 X33\=ps 9120Partial match: X33 9121 X333\=ps 9122Partial match: X333 9123 X3333\=ps 9124Partial match: X3333 9125 9126/X\d{2,4}+b/ 9127 X\=ps 9128Partial match: X 9129 X3\=ps 9130Partial match: X3 9131 X33\=ps 9132Partial match: X33 9133 X333\=ps 9134Partial match: X333 9135 X3333\=ps 9136Partial match: X3333 9137 9138/X\D{2,4}b/ 9139 X\=ps 9140Partial match: X 9141 Xa\=ps 9142Partial match: Xa 9143 Xaa\=ps 9144Partial match: Xaa 9145 Xaaa\=ps 9146Partial match: Xaaa 9147 Xaaaa\=ps 9148Partial match: Xaaaa 9149 9150/X\D{2,4}?b/ 9151 X\=ps 9152Partial match: X 9153 Xa\=ps 9154Partial match: Xa 9155 Xaa\=ps 9156Partial match: Xaa 9157 Xaaa\=ps 9158Partial match: Xaaa 9159 Xaaaa\=ps 9160Partial match: Xaaaa 9161 9162/X\D{2,4}+b/ 9163 X\=ps 9164Partial match: X 9165 Xa\=ps 9166Partial match: Xa 9167 Xaa\=ps 9168Partial match: Xaa 9169 Xaaa\=ps 9170Partial match: Xaaa 9171 Xaaaa\=ps 9172Partial match: Xaaaa 9173 9174/X[abc]{2,4}b/ 9175 X\=ps 9176Partial match: X 9177 Xa\=ps 9178Partial match: Xa 9179 Xaa\=ps 9180Partial match: Xaa 9181 Xaaa\=ps 9182Partial match: Xaaa 9183 Xaaaa\=ps 9184Partial match: Xaaaa 9185 9186/X[abc]{2,4}?b/ 9187 X\=ps 9188Partial match: X 9189 Xa\=ps 9190Partial match: Xa 9191 Xaa\=ps 9192Partial match: Xaa 9193 Xaaa\=ps 9194Partial match: Xaaa 9195 Xaaaa\=ps 9196Partial match: Xaaaa 9197 9198/X[abc]{2,4}+b/ 9199 X\=ps 9200Partial match: X 9201 Xa\=ps 9202Partial match: Xa 9203 Xaa\=ps 9204Partial match: Xaa 9205 Xaaa\=ps 9206Partial match: Xaaa 9207 Xaaaa\=ps 9208Partial match: Xaaaa 9209 9210/X[^a]{2,4}b/ 9211 X\=ps 9212Partial match: X 9213 Xz\=ps 9214Partial match: Xz 9215 Xzz\=ps 9216Partial match: Xzz 9217 Xzzz\=ps 9218Partial match: Xzzz 9219 Xzzzz\=ps 9220Partial match: Xzzzz 9221 9222/X[^a]{2,4}?b/ 9223 X\=ps 9224Partial match: X 9225 Xz\=ps 9226Partial match: Xz 9227 Xzz\=ps 9228Partial match: Xzz 9229 Xzzz\=ps 9230Partial match: Xzzz 9231 Xzzzz\=ps 9232Partial match: Xzzzz 9233 9234/X[^a]{2,4}+b/ 9235 X\=ps 9236Partial match: X 9237 Xz\=ps 9238Partial match: Xz 9239 Xzz\=ps 9240Partial match: Xzz 9241 Xzzz\=ps 9242Partial match: Xzzz 9243 Xzzzz\=ps 9244Partial match: Xzzzz 9245 9246/(Y)X\1{2,4}b/ 9247 YX\=ps 9248Partial match: YX 9249 YXY\=ps 9250Partial match: YXY 9251 YXYY\=ps 9252Partial match: YXYY 9253 YXYYY\=ps 9254Partial match: YXYYY 9255 YXYYYY\=ps 9256Partial match: YXYYYY 9257 9258/(Y)X\1{2,4}?b/ 9259 YX\=ps 9260Partial match: YX 9261 YXY\=ps 9262Partial match: YXY 9263 YXYY\=ps 9264Partial match: YXYY 9265 YXYYY\=ps 9266Partial match: YXYYY 9267 YXYYYY\=ps 9268Partial match: YXYYYY 9269 9270/(Y)X\1{2,4}+b/ 9271 YX\=ps 9272Partial match: YX 9273 YXY\=ps 9274Partial match: YXY 9275 YXYY\=ps 9276Partial match: YXYY 9277 YXYYY\=ps 9278Partial match: YXYYY 9279 YXYYYY\=ps 9280Partial match: YXYYYY 9281 9282/\++\KZ|\d+X|9+Y/startchar 9283 ++++123999\=ps 9284Partial match: 123999 9285 ++++123999Y\=ps 9286 0: 999Y 9287 ++++Z1234\=ps 9288 0: ++++Z 9289 ^^^^ 9290 9291/Z(*F)/ 9292\= Expect no match 9293 Z\=ps 9294No match 9295 ZA\=ps 9296No match 9297 9298/Z(?!)/ 9299\= Expect no match 9300 Z\=ps 9301No match 9302 ZA\=ps 9303No match 9304 9305/dog(sbody)?/ 9306 dogs\=ps 9307 0: dog 9308 dogs\=ph 9309Partial match: dogs 9310 9311/dog(sbody)??/ 9312 dogs\=ps 9313 0: dog 9314 dogs\=ph 9315 0: dog 9316 9317/dog|dogsbody/ 9318 dogs\=ps 9319 0: dog 9320 dogs\=ph 9321 0: dog 9322 9323/dogsbody|dog/ 9324 dogs\=ps 9325 0: dog 9326 dogs\=ph 9327Partial match: dogs 9328 9329/\bthe cat\b/ 9330 the cat\=ps 9331 0: the cat 9332 the cat\=ph 9333Partial match: the cat 9334 9335/abc/ 9336 abc\=ps 9337 0: abc 9338 abc\=ph 9339 0: abc 9340 9341/abc\K123/startchar 9342 xyzabc123pqr 9343 0: abc123 9344 ^^^ 9345 xyzabc12\=ps 9346Partial match: abc12 9347 xyzabc12\=ph 9348Partial match: abc12 9349 9350/(?<=abc)123/ 9351 xyzabc123pqr 9352 0: 123 9353 xyzabc12\=ps 9354Partial match: 12 9355 xyzabc12\=ph 9356Partial match: 12 9357 9358/\babc\b/ 9359 +++abc+++ 9360 0: abc 9361 +++ab\=ps 9362Partial match: ab 9363 +++ab\=ph 9364Partial match: ab 9365 9366/(?&word)(?&element)(?(DEFINE)(?<element><[^m][^>]>[^<])(?<word>\w*+))/B 9367------------------------------------------------------------------ 9368 Bra 9369 Recurse 9370 Recurse 9371 Cond 9372 Cond false 9373 CBra 1 9374 < 9375 [^m] 9376 [^>] 9377 > 9378 [^<] 9379 Ket 9380 CBra 2 9381 \w*+ 9382 Ket 9383 Ket 9384 Ket 9385 End 9386------------------------------------------------------------------ 9387 9388/(?&word)(?&element)(?(DEFINE)(?<element><[^\d][^>]>[^<])(?<word>\w*+))/B 9389------------------------------------------------------------------ 9390 Bra 9391 Recurse 9392 Recurse 9393 Cond 9394 Cond false 9395 CBra 1 9396 < 9397 [\x00-/:-\xff] (neg) 9398 [^>] 9399 > 9400 [^<] 9401 Ket 9402 CBra 2 9403 \w*+ 9404 Ket 9405 Ket 9406 Ket 9407 End 9408------------------------------------------------------------------ 9409 9410/(ab)(x(y)z(cd(*ACCEPT)))pq/B 9411------------------------------------------------------------------ 9412 Bra 9413 CBra 1 9414 ab 9415 Ket 9416 CBra 2 9417 x 9418 CBra 3 9419 y 9420 Ket 9421 z 9422 CBra 4 9423 cd 9424 Close 4 9425 Close 2 9426 *ACCEPT 9427 Ket 9428 Ket 9429 pq 9430 Ket 9431 End 9432------------------------------------------------------------------ 9433 9434/abc\K/aftertext,startchar 9435 abcdef 9436 0: abc 9437 ^^^ 9438 0+ def 9439 abcdef\=notempty_atstart 9440 0: abc 9441 ^^^ 9442 0+ def 9443 xyzabcdef\=notempty_atstart 9444 0: abc 9445 ^^^ 9446 0+ def 9447\= Expect no match 9448 abcdef\=notempty 9449No match 9450 xyzabcdef\=notempty 9451No match 9452 9453/^(?:(?=abc)|abc\K)/aftertext,startchar 9454 abcdef 9455 0: 9456 0+ abcdef 9457 abcdef\=notempty_atstart 9458 0: abc 9459 ^^^ 9460 0+ def 9461\= Expect no match 9462 abcdef\=notempty 9463No match 9464 9465/a?b?/aftertext 9466 xyz 9467 0: 9468 0+ xyz 9469 xyzabc 9470 0: 9471 0+ xyzabc 9472 xyzabc\=notempty 9473 0: ab 9474 0+ c 9475 xyzabc\=notempty_atstart 9476 0: 9477 0+ yzabc 9478 xyz\=notempty_atstart 9479 0: 9480 0+ yz 9481\= Expect no match 9482 xyz\=notempty 9483No match 9484 9485/^a?b?/aftertext 9486 xyz 9487 0: 9488 0+ xyz 9489 xyzabc 9490 0: 9491 0+ xyzabc 9492\= Expect no match 9493 xyzabc\=notempty 9494No match 9495 xyzabc\=notempty_atstart 9496No match 9497 xyz\=notempty_atstart 9498No match 9499 xyz\=notempty 9500No match 9501 9502/^(?<name>a|b\g<name>c)/ 9503 aaaa 9504 0: a 9505 1: a 9506 bacxxx 9507 0: bac 9508 1: bac 9509 bbaccxxx 9510 0: bbacc 9511 1: bbacc 9512 bbbacccxx 9513 0: bbbaccc 9514 1: bbbaccc 9515 9516/^(?<name>a|b\g'name'c)/ 9517 aaaa 9518 0: a 9519 1: a 9520 bacxxx 9521 0: bac 9522 1: bac 9523 bbaccxxx 9524 0: bbacc 9525 1: bbacc 9526 bbbacccxx 9527 0: bbbaccc 9528 1: bbbaccc 9529 9530/^(a|b\g<1>c)/ 9531 aaaa 9532 0: a 9533 1: a 9534 bacxxx 9535 0: bac 9536 1: bac 9537 bbaccxxx 9538 0: bbacc 9539 1: bbacc 9540 bbbacccxx 9541 0: bbbaccc 9542 1: bbbaccc 9543 9544/^(a|b\g'1'c)/ 9545 aaaa 9546 0: a 9547 1: a 9548 bacxxx 9549 0: bac 9550 1: bac 9551 bbaccxxx 9552 0: bbacc 9553 1: bbacc 9554 bbbacccxx 9555 0: bbbaccc 9556 1: bbbaccc 9557 9558/^(a|b\g'-1'c)/ 9559 aaaa 9560 0: a 9561 1: a 9562 bacxxx 9563 0: bac 9564 1: bac 9565 bbaccxxx 9566 0: bbacc 9567 1: bbacc 9568 bbbacccxx 9569 0: bbbaccc 9570 1: bbbaccc 9571 9572/(^(a|b\g<-1>c))/ 9573 aaaa 9574 0: a 9575 1: a 9576 2: a 9577 bacxxx 9578 0: bac 9579 1: bac 9580 2: bac 9581 bbaccxxx 9582 0: bbacc 9583 1: bbacc 9584 2: bbacc 9585 bbbacccxx 9586 0: bbbaccc 9587 1: bbbaccc 9588 2: bbbaccc 9589 9590/(?-i:\g<name>)(?i:(?<name>a))/ 9591 XaaX 9592 0: aa 9593 1: a 9594 XAAX 9595 0: AA 9596 1: A 9597 9598/(?i:\g<name>)(?-i:(?<name>a))/ 9599 XaaX 9600 0: aa 9601 1: a 9602\= Expect no match 9603 XAAX 9604No match 9605 9606/(?-i:\g<+1>)(?i:(a))/ 9607 XaaX 9608 0: aa 9609 1: a 9610 XAAX 9611 0: AA 9612 1: A 9613 9614/(?=(?<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>\})\}))\{/ 9615 9616/(?<n>a|b|c)\g<n>*/ 9617 abc 9618 0: abc 9619 1: a 9620 accccbbb 9621 0: accccbbb 9622 1: a 9623 9624/^X(?7)(a)(?|(b)|(q)(r)(s))(c)(d)(Y)/ 9625 XYabcdY 9626 0: XYabcdY 9627 1: a 9628 2: b 9629 3: <unset> 9630 4: <unset> 9631 5: c 9632 6: d 9633 7: Y 9634 9635/(?<=b(?1)|zzz)(a)/ 9636 xbaax 9637 0: a 9638 1: a 9639 xzzzax 9640 0: a 9641 1: a 9642 9643/(a)(?<=b\1)/ 9644 9645/(a)(?<=b+(?1))/ 9646Failed: error 125 at offset 3: lookbehind assertion is not fixed length 9647 9648/(a+)(?<=b(?1))/ 9649Failed: error 125 at offset 4: lookbehind assertion is not fixed length 9650 9651/(a(?<=b(?1)))/ 9652Failed: error 125 at offset 2: lookbehind assertion is not fixed length 9653 9654/(?<=b(?1))xyz/ 9655Failed: error 115 at offset 8: reference to non-existent subpattern 9656 9657/(?<=b(?1))xyz(b+)pqrstuvew/ 9658Failed: error 125 at offset 0: lookbehind assertion is not fixed length 9659 9660/(a|bc)\1/I 9661Capture group count = 1 9662Max back reference = 1 9663Starting code units: a b 9664Subject length lower bound = 2 9665 9666/(a|bc)\1{2,3}/I 9667Capture group count = 1 9668Max back reference = 1 9669Starting code units: a b 9670Subject length lower bound = 3 9671 9672/(a|bc)(?1)/I 9673Capture group count = 1 9674Starting code units: a b 9675Subject length lower bound = 2 9676 9677/(a|b\1)(a|b\1)/I 9678Capture group count = 2 9679Max back reference = 1 9680Starting code units: a b 9681Subject length lower bound = 2 9682 9683/(a|b\1){2}/I 9684Capture group count = 1 9685Max back reference = 1 9686Starting code units: a b 9687Subject length lower bound = 2 9688 9689/(a|bbbb\1)(a|bbbb\1)/I 9690Capture group count = 2 9691Max back reference = 1 9692Starting code units: a b 9693Subject length lower bound = 2 9694 9695/(a|bbbb\1){2}/I 9696Capture group count = 1 9697Max back reference = 1 9698Starting code units: a b 9699Subject length lower bound = 2 9700 9701/^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]/I 9702Capture group count = 1 9703Compile options: <none> 9704Overall options: anchored 9705First code unit = 'F' 9706Last code unit = ':' 9707Subject length lower bound = 22 9708 9709/<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>/Iis 9710Capture group count = 11 9711Options: caseless dotall 9712First code unit = '<' 9713Last code unit = '>' 9714Subject length lower bound = 47 9715 9716"(?>.*/)foo"I 9717Capture group count = 0 9718Last code unit = 'o' 9719Subject length lower bound = 4 9720 9721/(?(?=[^a-z]+[a-z]) \d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} ) /Ix 9722Capture group count = 0 9723Options: extended 9724Last code unit = '-' 9725Subject length lower bound = 8 9726 9727/(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/Ii 9728Capture group count = 1 9729Options: caseless 9730Starting code units: A B C a b c 9731Subject length lower bound = 1 9732 9733/(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/I 9734Capture group count = 0 9735Starting code units: c d 9736Last code unit = 'b' 9737Subject length lower bound = 41 9738 9739/<a[\s]+href[\s]*=[\s]* # find <a href= 9740 ([\"\'])? # find single or double quote 9741 (?(1) (.*?)\1 | ([^\s]+)) # if quote found, match up to next matching 9742 # quote, otherwise match up to next space 9743/Iisx 9744Capture group count = 3 9745Max back reference = 1 9746Options: caseless dotall extended 9747First code unit = '<' 9748Last code unit = '=' 9749Subject length lower bound = 9 9750 9751/^(?!:) # colon disallowed at start 9752 (?: # start of item 9753 (?: [0-9a-f]{1,4} | # 1-4 hex digits or 9754 (?(1)0 | () ) ) # if null previously matched, fail; else null 9755 : # followed by colon 9756 ){1,7} # end item; 1-7 of them required 9757 [0-9a-f]{1,4} $ # final hex number at end of string 9758 (?(1)|.) # check that there was an empty component 9759 /Iix 9760Capture group count = 1 9761Max back reference = 1 9762Compile options: caseless extended 9763Overall options: anchored caseless extended 9764Last code unit = ':' 9765Subject length lower bound = 2 9766 9767/(?|(?<a>A)|(?<a>B))/I 9768Capture group count = 1 9769Named capture groups: 9770 a 1 9771Starting code units: A B 9772Subject length lower bound = 1 9773 AB\=copy=a 9774 0: A 9775 1: A 9776 C A (1) a (group 1) 9777 BA\=copy=a 9778 0: B 9779 1: B 9780 C B (1) a (group 1) 9781 9782/(?|(?<a>A)|(?<b>B))/ 9783Failed: error 165 at offset 16: different names for subpatterns of the same number are not allowed 9784 9785/(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) | 9786 b(?<quote> (?<apostrophe>')|(?<realquote>")) ) 9787 (?('quote')[a-z]+|[0-9]+)/Ix,dupnames 9788Capture group count = 6 9789Max back reference = 4 9790Named capture groups: 9791 apostrophe 2 9792 apostrophe 5 9793 quote 1 9794 quote 4 9795 realquote 3 9796 realquote 6 9797Options: dupnames extended 9798Starting code units: a b 9799Subject length lower bound = 3 9800 a"aaaaa 9801 0: a"aaaaa 9802 1: " 9803 2: <unset> 9804 3: " 9805 b"aaaaa 9806 0: b"aaaaa 9807 1: <unset> 9808 2: <unset> 9809 3: <unset> 9810 4: " 9811 5: <unset> 9812 6: " 9813\= Expect no match 9814 b"11111 9815No match 9816 a"11111 9817No match 9818 9819/^(?|(a)(b)(c)(?<D>d)|(?<D>e)) (?('D')X|Y)/IBx,dupnames 9820------------------------------------------------------------------ 9821 Bra 9822 ^ 9823 Bra 9824 CBra 1 9825 a 9826 Ket 9827 CBra 2 9828 b 9829 Ket 9830 CBra 3 9831 c 9832 Ket 9833 CBra 4 9834 d 9835 Ket 9836 Alt 9837 CBra 1 9838 e 9839 Ket 9840 Ket 9841 Cond 9842 Cond ref <D>2 9843 X 9844 Alt 9845 Y 9846 Ket 9847 Ket 9848 End 9849------------------------------------------------------------------ 9850Capture group count = 4 9851Max back reference = 4 9852Named capture groups: 9853 D 4 9854 D 1 9855Compile options: dupnames extended 9856Overall options: anchored dupnames extended 9857Starting code units: a e 9858Subject length lower bound = 2 9859 abcdX 9860 0: abcdX 9861 1: a 9862 2: b 9863 3: c 9864 4: d 9865 eX 9866 0: eX 9867 1: e 9868\= Expect no match 9869 abcdY 9870No match 9871 ey 9872No match 9873 9874/(?<A>a) (b)(c) (?<A>d (?(R&A)$ | (?4)) )/IBx,dupnames 9875------------------------------------------------------------------ 9876 Bra 9877 CBra 1 9878 a 9879 Ket 9880 CBra 2 9881 b 9882 Ket 9883 CBra 3 9884 c 9885 Ket 9886 CBra 4 9887 d 9888 Cond 9889 Cond recurse <A>2 9890 $ 9891 Alt 9892 Recurse 9893 Ket 9894 Ket 9895 Ket 9896 End 9897------------------------------------------------------------------ 9898Capture group count = 4 9899Max back reference = 4 9900Named capture groups: 9901 A 1 9902 A 4 9903Options: dupnames extended 9904First code unit = 'a' 9905Last code unit = 'd' 9906Subject length lower bound = 4 9907 abcdd 9908 0: abcdd 9909 1: a 9910 2: b 9911 3: c 9912 4: dd 9913\= Expect no match 9914 abcdde 9915No match 9916 9917/abcd*/ 9918 xxxxabcd\=ps 9919 0: abcd 9920 xxxxabcd\=ph 9921Partial match: abcd 9922 9923/abcd*/i 9924 xxxxabcd\=ps 9925 0: abcd 9926 xxxxabcd\=ph 9927Partial match: abcd 9928 XXXXABCD\=ps 9929 0: ABCD 9930 XXXXABCD\=ph 9931Partial match: ABCD 9932 9933/abc\d*/ 9934 xxxxabc1\=ps 9935 0: abc1 9936 xxxxabc1\=ph 9937Partial match: abc1 9938 9939/(a)bc\1*/ 9940 xxxxabca\=ps 9941 0: abca 9942 1: a 9943 xxxxabca\=ph 9944Partial match: abca 9945 9946/abc[de]*/ 9947 xxxxabcde\=ps 9948 0: abcde 9949 xxxxabcde\=ph 9950Partial match: abcde 9951 9952/(\3)(\1)(a)/allow_empty_class,match_unset_backref,dupnames 9953 cat 9954 0: a 9955 1: 9956 2: 9957 3: a 9958 9959/(\3)(\1)(a)/I,allow_empty_class,match_unset_backref,dupnames 9960Capture group count = 3 9961Max back reference = 3 9962Options: allow_empty_class dupnames match_unset_backref 9963Last code unit = 'a' 9964Subject length lower bound = 1 9965 cat 9966 0: a 9967 1: 9968 2: 9969 3: a 9970 9971/(\3)(\1)(a)/I 9972Capture group count = 3 9973Max back reference = 3 9974Last code unit = 'a' 9975Subject length lower bound = 3 9976\= Expect no match 9977 cat 9978No match 9979 9980/i(?(DEFINE)(?<s>a))/I 9981Capture group count = 1 9982Named capture groups: 9983 s 1 9984First code unit = 'i' 9985Subject length lower bound = 1 9986 i 9987 0: i 9988 9989/()i(?(1)a)/I 9990Capture group count = 1 9991Max back reference = 1 9992First code unit = 'i' 9993Subject length lower bound = 1 9994 ia 9995 0: ia 9996 1: 9997 9998/(?i)a(?-i)b|c/B 9999------------------------------------------------------------------ 10000 Bra 10001 /i a 10002 b 10003 Alt 10004 c 10005 Ket 10006 End 10007------------------------------------------------------------------ 10008 XabX 10009 0: ab 10010 XAbX 10011 0: Ab 10012 CcC 10013 0: c 10014\= Expect no match 10015 XABX 10016No match 10017 10018/(?i)a(?s)b|c/B 10019------------------------------------------------------------------ 10020 Bra 10021 /i ab 10022 Alt 10023 /i c 10024 Ket 10025 End 10026------------------------------------------------------------------ 10027 10028/(?i)a(?s-i)b|c/B 10029------------------------------------------------------------------ 10030 Bra 10031 /i a 10032 b 10033 Alt 10034 c 10035 Ket 10036 End 10037------------------------------------------------------------------ 10038 10039/^(ab(c\1)d|x){2}$/B 10040------------------------------------------------------------------ 10041 Bra 10042 ^ 10043 CBra 1 10044 ab 10045 CBra 2 10046 c 10047 \1 10048 Ket 10049 d 10050 Alt 10051 x 10052 Ket 10053 CBra 1 10054 ab 10055 CBra 2 10056 c 10057 \1 10058 Ket 10059 d 10060 Alt 10061 x 10062 Ket 10063 $ 10064 Ket 10065 End 10066------------------------------------------------------------------ 10067 xabcxd 10068 0: xabcxd 10069 1: abcxd 10070 2: cx 10071 10072/^(?&t)*+(?(DEFINE)(?<t>.))$/B 10073------------------------------------------------------------------ 10074 Bra 10075 ^ 10076 Braposzero 10077 SBraPos 10078 Recurse 10079 KetRpos 10080 Cond 10081 Cond false 10082 CBra 1 10083 Any 10084 Ket 10085 Ket 10086 $ 10087 Ket 10088 End 10089------------------------------------------------------------------ 10090 10091/^(?&t)*(?(DEFINE)(?<t>.))$/B 10092------------------------------------------------------------------ 10093 Bra 10094 ^ 10095 Brazero 10096 SBra 10097 Recurse 10098 KetRmax 10099 Cond 10100 Cond false 10101 CBra 1 10102 Any 10103 Ket 10104 Ket 10105 $ 10106 Ket 10107 End 10108------------------------------------------------------------------ 10109 10110# This one is here because Perl gives the match as "b" rather than "ab". I 10111# believe this to be a Perl bug. 10112 10113/(?>a\Kb)z|(ab)/ 10114 ab\=startchar 10115 0: ab 10116 1: ab 10117 10118/(?P<L1>(?P<L2>0|)|(?P>L2)(?P>L1))/ 10119 abcd 10120 0: 10121 1: 10122 2: 10123 0abc 10124 0: 0 10125 1: 0 10126 2: 0 10127 10128/abc(*MARK:)pqr/ 10129Failed: error 166 at offset 10: (*MARK) must have an argument 10130 10131/abc(*:)pqr/ 10132Failed: error 166 at offset 6: (*MARK) must have an argument 10133 10134/(*COMMIT:X)/B 10135------------------------------------------------------------------ 10136 Bra 10137 *COMMIT X 10138 Ket 10139 End 10140------------------------------------------------------------------ 10141 10142# This should, and does, fail. In Perl, it does not, which I think is a 10143# bug because replacing the B in the pattern by (B|D) does make it fail. 10144# Turning off Perl's optimization by inserting (??{""}) also makes it fail. 10145 10146/A(*COMMIT)B/aftertext,mark 10147\= Expect no match 10148 ACABX 10149No match 10150 10151# These should be different, but in Perl they are not, which I think 10152# is a bug in Perl. 10153 10154/A(*THEN)B|A(*THEN)C/mark 10155 AC 10156 0: AC 10157 10158/A(*PRUNE)B|A(*PRUNE)C/mark 10159\= Expect no match 10160 AC 10161No match 10162 10163# Mark names can be duplicated. Perl doesn't give a mark for this one, 10164# though PCRE2 does. 10165 10166/^A(*:A)B|^X(*:A)Y/mark 10167\= Expect no match 10168 XAQQ 10169No match, mark = A 10170 10171# COMMIT at the start of a pattern should be the same as an anchor. Perl 10172# optimizations defeat this. So does the PCRE2 optimization unless we disable 10173# it. 10174 10175/(*COMMIT)ABC/ 10176 ABCDEFG 10177 0: ABC 10178 10179/(*COMMIT)ABC/no_start_optimize 10180\= Expect no match 10181 DEFGABC 10182No match 10183 10184/^(ab (c+(*THEN)cd) | xyz)/x 10185\= Expect no match 10186 abcccd 10187No match 10188 10189/^(ab (c+(*PRUNE)cd) | xyz)/x 10190\= Expect no match 10191 abcccd 10192No match 10193 10194/^(ab (c+(*FAIL)cd) | xyz)/x 10195\= Expect no match 10196 abcccd 10197No match 10198 10199# Perl gets some of these wrong 10200 10201/(?>.(*ACCEPT))*?5/ 10202 abcde 10203 0: a 10204 10205/(.(*ACCEPT))*?5/ 10206 abcde 10207 0: a 10208 1: a 10209 10210/(.(*ACCEPT))5/ 10211 abcde 10212 0: a 10213 1: a 10214 10215/(.(*ACCEPT))*5/ 10216 abcde 10217 0: a 10218 1: a 10219 10220/A\NB./B 10221------------------------------------------------------------------ 10222 Bra 10223 A 10224 Any 10225 B 10226 Any 10227 Ket 10228 End 10229------------------------------------------------------------------ 10230 ACBD 10231 0: ACBD 10232\= Expect no match 10233 A\nB 10234No match 10235 ACB\n 10236No match 10237 10238/A\NB./Bs 10239------------------------------------------------------------------ 10240 Bra 10241 A 10242 Any 10243 B 10244 AllAny 10245 Ket 10246 End 10247------------------------------------------------------------------ 10248 ACBD 10249 0: ACBD 10250 ACB\n 10251 0: ACB\x0a 10252\= Expect no match 10253 A\nB 10254No match 10255 10256/A\NB/newline=crlf 10257 A\nB 10258 0: A\x0aB 10259 A\rB 10260 0: A\x0dB 10261\= Expect no match 10262 A\r\nB 10263No match 10264 10265/\R+b/B 10266------------------------------------------------------------------ 10267 Bra 10268 \R++ 10269 b 10270 Ket 10271 End 10272------------------------------------------------------------------ 10273 10274/\R+\n/B 10275------------------------------------------------------------------ 10276 Bra 10277 \R+ 10278 \x0a 10279 Ket 10280 End 10281------------------------------------------------------------------ 10282 10283/\R+\d/B 10284------------------------------------------------------------------ 10285 Bra 10286 \R++ 10287 \d 10288 Ket 10289 End 10290------------------------------------------------------------------ 10291 10292/\d*\R/B 10293------------------------------------------------------------------ 10294 Bra 10295 \d*+ 10296 \R 10297 Ket 10298 End 10299------------------------------------------------------------------ 10300 10301/\s*\R/B 10302------------------------------------------------------------------ 10303 Bra 10304 \s* 10305 \R 10306 Ket 10307 End 10308------------------------------------------------------------------ 10309 \x20\x0a 10310 0: \x0a 10311 \x20\x0d 10312 0: \x0d 10313 \x20\x0d\x0a 10314 0: \x0d\x0a 10315 10316/\S*\R/B 10317------------------------------------------------------------------ 10318 Bra 10319 \S*+ 10320 \R 10321 Ket 10322 End 10323------------------------------------------------------------------ 10324 a\x0a 10325 0: a\x0a 10326 10327/X\h*\R/B 10328------------------------------------------------------------------ 10329 Bra 10330 X 10331 \h*+ 10332 \R 10333 Ket 10334 End 10335------------------------------------------------------------------ 10336 X\x20\x0a 10337 0: X \x0a 10338 10339/X\H*\R/B 10340------------------------------------------------------------------ 10341 Bra 10342 X 10343 \H* 10344 \R 10345 Ket 10346 End 10347------------------------------------------------------------------ 10348 X\x0d\x0a 10349 0: X\x0d\x0a 10350 10351/X\H+\R/B 10352------------------------------------------------------------------ 10353 Bra 10354 X 10355 \H+ 10356 \R 10357 Ket 10358 End 10359------------------------------------------------------------------ 10360 X\x0d\x0a 10361 0: X\x0d\x0a 10362 10363/X\H++\R/B 10364------------------------------------------------------------------ 10365 Bra 10366 X 10367 \H++ 10368 \R 10369 Ket 10370 End 10371------------------------------------------------------------------ 10372\= Expect no match 10373 X\x0d\x0a 10374No match 10375 10376/(?<=abc)def/ 10377 abc\=ph 10378Partial match: 10379 10380/abc$/ 10381 abc 10382 0: abc 10383 abc\=ps 10384 0: abc 10385 abc\=ph 10386Partial match: abc 10387 10388/abc$/m 10389 abc 10390 0: abc 10391 abc\n 10392 0: abc 10393 abc\=ph 10394Partial match: abc 10395 abc\n\=ph 10396 0: abc 10397 abc\=ps 10398 0: abc 10399 abc\n\=ps 10400 0: abc 10401 10402/abc\z/ 10403 abc 10404 0: abc 10405 abc\=ps 10406 0: abc 10407 abc\=ph 10408Partial match: abc 10409 10410/abc\Z/ 10411 abc 10412 0: abc 10413 abc\=ps 10414 0: abc 10415 abc\=ph 10416Partial match: abc 10417 10418/abc\b/ 10419 abc 10420 0: abc 10421 abc\=ps 10422 0: abc 10423 abc\=ph 10424Partial match: abc 10425 10426/abc\B/ 10427 abc\=ps 10428Partial match: abc 10429 abc\=ph 10430Partial match: abc 10431\= Expect no match 10432 abc 10433No match 10434 10435/.+/ 10436\= Bad offsets 10437 abc\=offset=4 10438Failed: error -33: bad offset value 10439 abc\=offset=-4 10440** Invalid value in 'offset=-4' 10441\= Valid data 10442 abc\=offset=0 10443 0: abc 10444 abc\=offset=1 10445 0: bc 10446 abc\=offset=2 10447 0: c 10448\= Expect no match 10449 abc\=offset=3 10450No match 10451 10452/^\cģ/ 10453Failed: error 168 at offset 3: \c must be followed by a printable ASCII character 10454 10455/(?P<abn>(?P=abn)xxx)/B 10456------------------------------------------------------------------ 10457 Bra 10458 CBra 1 10459 \1 10460 xxx 10461 Ket 10462 Ket 10463 End 10464------------------------------------------------------------------ 10465 10466/(a\1z)/B 10467------------------------------------------------------------------ 10468 Bra 10469 CBra 1 10470 a 10471 \1 10472 z 10473 Ket 10474 Ket 10475 End 10476------------------------------------------------------------------ 10477 10478/(?P<abn>(?P=abn)(?<badstufxxx)/B 10479Failed: error 142 at offset 29: syntax error in subpattern name (missing terminator?) 10480 10481/(?P<abn>(?P=axn)xxx)/B 10482Failed: error 115 at offset 12: reference to non-existent subpattern 10483 10484/(?P<abn>(?P=axn)xxx)(?<axn>yy)/B 10485------------------------------------------------------------------ 10486 Bra 10487 CBra 1 10488 \2 10489 xxx 10490 Ket 10491 CBra 2 10492 yy 10493 Ket 10494 Ket 10495 End 10496------------------------------------------------------------------ 10497 10498# These tests are here because Perl gets the first one wrong. 10499 10500/(\R*)(.)/s 10501 \r\n 10502 0: \x0d 10503 1: 10504 2: \x0d 10505 \r\r\n\n\r 10506 0: \x0d\x0d\x0a\x0a\x0d 10507 1: \x0d\x0d\x0a\x0a 10508 2: \x0d 10509 \r\r\n\n\r\n 10510 0: \x0d\x0d\x0a\x0a\x0d 10511 1: \x0d\x0d\x0a\x0a 10512 2: \x0d 10513 10514/(\R)*(.)/s 10515 \r\n 10516 0: \x0d 10517 1: <unset> 10518 2: \x0d 10519 \r\r\n\n\r 10520 0: \x0d\x0d\x0a\x0a\x0d 10521 1: \x0a 10522 2: \x0d 10523 \r\r\n\n\r\n 10524 0: \x0d\x0d\x0a\x0a\x0d 10525 1: \x0a 10526 2: \x0d 10527 10528/((?>\r\n|\n|\x0b|\f|\r|\x85)*)(.)/s 10529 \r\n 10530 0: \x0d 10531 1: 10532 2: \x0d 10533 \r\r\n\n\r 10534 0: \x0d\x0d\x0a\x0a\x0d 10535 1: \x0d\x0d\x0a\x0a 10536 2: \x0d 10537 \r\r\n\n\r\n 10538 0: \x0d\x0d\x0a\x0a\x0d 10539 1: \x0d\x0d\x0a\x0a 10540 2: \x0d 10541 10542# ------------- 10543 10544/^abc$/B 10545------------------------------------------------------------------ 10546 Bra 10547 ^ 10548 abc 10549 $ 10550 Ket 10551 End 10552------------------------------------------------------------------ 10553 10554/^abc$/Bm 10555------------------------------------------------------------------ 10556 Bra 10557 /m ^ 10558 abc 10559 /m $ 10560 Ket 10561 End 10562------------------------------------------------------------------ 10563 10564/^(a)*+(\w)/ 10565 aaaaX 10566 0: aaaaX 10567 1: a 10568 2: X 10569\= Expect no match 10570 aaaa 10571No match 10572 10573/^(?:a)*+(\w)/ 10574 aaaaX 10575 0: aaaaX 10576 1: X 10577\= Expect no match 10578 aaaa 10579No match 10580 10581/(a)++1234/IB 10582------------------------------------------------------------------ 10583 Bra 10584 CBraPos 1 10585 a 10586 KetRpos 10587 1234 10588 Ket 10589 End 10590------------------------------------------------------------------ 10591Capture group count = 1 10592First code unit = 'a' 10593Last code unit = '4' 10594Subject length lower bound = 5 10595 10596/([abc])++1234/I 10597Capture group count = 1 10598Starting code units: a b c 10599Last code unit = '4' 10600Subject length lower bound = 5 10601 10602/(?<=(abc)+)X/ 10603Failed: error 125 at offset 0: lookbehind assertion is not fixed length 10604 10605/(^ab)/I 10606Capture group count = 1 10607Compile options: <none> 10608Overall options: anchored 10609First code unit = 'a' 10610Subject length lower bound = 2 10611 10612/(^ab)++/I 10613Capture group count = 1 10614Compile options: <none> 10615Overall options: anchored 10616First code unit = 'a' 10617Subject length lower bound = 2 10618 10619/(^ab|^)+/I 10620Capture group count = 1 10621May match empty string 10622Compile options: <none> 10623Overall options: anchored 10624Subject length lower bound = 0 10625 10626/(^ab|^)++/I 10627Capture group count = 1 10628May match empty string 10629Compile options: <none> 10630Overall options: anchored 10631Subject length lower bound = 0 10632 10633/(?:^ab)/I 10634Capture group count = 0 10635Compile options: <none> 10636Overall options: anchored 10637First code unit = 'a' 10638Subject length lower bound = 2 10639 10640/(?:^ab)++/I 10641Capture group count = 0 10642Compile options: <none> 10643Overall options: anchored 10644First code unit = 'a' 10645Subject length lower bound = 2 10646 10647/(?:^ab|^)+/I 10648Capture group count = 0 10649May match empty string 10650Compile options: <none> 10651Overall options: anchored 10652Subject length lower bound = 0 10653 10654/(?:^ab|^)++/I 10655Capture group count = 0 10656May match empty string 10657Compile options: <none> 10658Overall options: anchored 10659Subject length lower bound = 0 10660 10661/(.*ab)/I 10662Capture group count = 1 10663First code unit at start or follows newline 10664Last code unit = 'b' 10665Subject length lower bound = 2 10666 10667/(.*ab)++/I 10668Capture group count = 1 10669First code unit at start or follows newline 10670Last code unit = 'b' 10671Subject length lower bound = 2 10672 10673/(.*ab|.*)+/I 10674Capture group count = 1 10675May match empty string 10676First code unit at start or follows newline 10677Subject length lower bound = 0 10678 10679/(.*ab|.*)++/I 10680Capture group count = 1 10681May match empty string 10682First code unit at start or follows newline 10683Subject length lower bound = 0 10684 10685/(?:.*ab)/I 10686Capture group count = 0 10687First code unit at start or follows newline 10688Last code unit = 'b' 10689Subject length lower bound = 2 10690 10691/(?:.*ab)++/I 10692Capture group count = 0 10693First code unit at start or follows newline 10694Last code unit = 'b' 10695Subject length lower bound = 2 10696 10697/(?:.*ab|.*)+/I 10698Capture group count = 0 10699May match empty string 10700First code unit at start or follows newline 10701Subject length lower bound = 0 10702 10703/(?:.*ab|.*)++/I 10704Capture group count = 0 10705May match empty string 10706First code unit at start or follows newline 10707Subject length lower bound = 0 10708 10709/(?=a)[bcd]/I 10710Capture group count = 0 10711First code unit = 'a' 10712Subject length lower bound = 1 10713 10714/((?=a))[bcd]/I 10715Capture group count = 1 10716First code unit = 'a' 10717Subject length lower bound = 1 10718 10719/((?=a))+[bcd]/I 10720Capture group count = 1 10721First code unit = 'a' 10722Subject length lower bound = 1 10723 10724/((?=a))++[bcd]/I 10725Capture group count = 1 10726First code unit = 'a' 10727Subject length lower bound = 1 10728 10729/(?=a+)[bcd]/Ii 10730Capture group count = 0 10731Options: caseless 10732First code unit = 'a' (caseless) 10733Subject length lower bound = 1 10734 10735/(?=a+?)[bcd]/Ii 10736Capture group count = 0 10737Options: caseless 10738First code unit = 'a' (caseless) 10739Subject length lower bound = 1 10740 10741/(?=a++)[bcd]/Ii 10742Capture group count = 0 10743Options: caseless 10744First code unit = 'a' (caseless) 10745Subject length lower bound = 1 10746 10747/(?=a{3})[bcd]/Ii 10748Capture group count = 0 10749Options: caseless 10750First code unit = 'a' (caseless) 10751Last code unit = 'a' (caseless) 10752Subject length lower bound = 2 10753 10754/(abc)\1+/ 10755 10756# Perl doesn't get these right IMO (the 3rd is PCRE2-specific) 10757 10758/(?1)(?:(b(*ACCEPT))){0}/ 10759 b 10760 0: b 10761 10762/(?1)(?:(b(*ACCEPT))){0}c/ 10763 bc 10764 0: bc 10765\= Expect no match 10766 b 10767No match 10768 10769/(?1)(?:((*ACCEPT))){0}c/ 10770 c 10771 0: c 10772 c\=notempty 10773 0: c 10774 10775/^.*?(?(?=a)a|b(*THEN)c)/ 10776\= Expect no match 10777 ba 10778No match 10779 10780/^.*?(?(?=a)a|bc)/ 10781 ba 10782 0: ba 10783 10784/^.*?(?(?=a)a(*THEN)b|c)/ 10785\= Expect no match 10786 ac 10787No match 10788 10789/^.*?(?(?=a)a(*THEN)b)c/ 10790\= Expect no match 10791 ac 10792No match 10793 10794/^.*?(a(*THEN)b)c/ 10795\= Expect no match 10796 aabc 10797No match 10798 10799/^.*? (?1) c (?(DEFINE)(a(*THEN)b))/x 10800 aabc 10801 0: aabc 10802 10803/^.*?(a(*THEN)b|z)c/ 10804 aabc 10805 0: aabc 10806 1: ab 10807 10808/^.*?(z|a(*THEN)b)c/ 10809 aabc 10810 0: aabc 10811 1: ab 10812 10813# These are here because they are not Perl-compatible; the studying means the 10814# mark is not seen. 10815 10816/(*MARK:A)(*SKIP:B)(C|X)/mark 10817 C 10818 0: C 10819 1: C 10820MK: A 10821\= Expect no match 10822 D 10823No match, mark = A 10824 10825/(*:A)A+(*SKIP:A)(B|Z)/mark 10826\= Expect no match 10827 AAAC 10828No match, mark = A 10829 10830# ---------------------------- 10831 10832"(?=a*(*ACCEPT)b)c" 10833 c 10834 0: c 10835 c\=notempty 10836 0: c 10837 10838/(?1)c(?(DEFINE)((*ACCEPT)b))/ 10839 c 10840 0: c 10841 c\=notempty 10842 0: c 10843 10844/(?>(*ACCEPT)b)c/ 10845 c 10846 0: 10847\= Expect no match 10848 c\=notempty 10849No match 10850 10851/(?:(?>(a)))+a%/allaftertext 10852 %aa% 10853 0: aa% 10854 0+ 10855 1: a 10856 1+ a% 10857 10858/(a)b|ac/allaftertext 10859 ac\=ovector=1 10860 0: ac 10861 0+ 10862 10863/(a)(b)x|abc/allaftertext 10864 abc\=ovector=2 10865 0: abc 10866 0+ 10867 10868/(a)bc|(a)(b)\2/ 10869 abc\=ovector=1 10870Matched, but too many substrings 10871 0: abc 10872 abc\=ovector=2 10873 0: abc 10874 1: a 10875 aba\=ovector=1 10876Matched, but too many substrings 10877 0: aba 10878 aba\=ovector=2 10879Matched, but too many substrings 10880 0: aba 10881 1: <unset> 10882 aba\=ovector=3 10883Matched, but too many substrings 10884 0: aba 10885 1: <unset> 10886 2: a 10887 aba\=ovector=4 10888 0: aba 10889 1: <unset> 10890 2: a 10891 3: b 10892 10893/(?(DEFINE)(a(?2)|b)(b(?1)|a))(?:(?1)|(?2))/I 10894Capture group count = 2 10895May match empty string 10896Subject length lower bound = 0 10897 10898/(a(?2)|b)(b(?1)|a)(?:(?1)|(?2))/I 10899Capture group count = 2 10900Starting code units: a b 10901Subject length lower bound = 3 10902 10903/(a(?2)|b)(b(?1)|a)(?1)(?2)/I 10904Capture group count = 2 10905Starting code units: a b 10906Subject length lower bound = 4 10907 10908/(abc)(?1)/I 10909Capture group count = 1 10910First code unit = 'a' 10911Last code unit = 'c' 10912Subject length lower bound = 6 10913 10914/(?:(foo)|(bar)|(baz))X/allcaptures 10915 bazfooX 10916 0: fooX 10917 1: foo 10918 2: <unset> 10919 3: <unset> 10920 foobazbarX 10921 0: barX 10922 1: <unset> 10923 2: bar 10924 3: <unset> 10925 barfooX 10926 0: fooX 10927 1: foo 10928 2: <unset> 10929 3: <unset> 10930 bazX 10931 0: bazX 10932 1: <unset> 10933 2: <unset> 10934 3: baz 10935 foobarbazX 10936 0: bazX 10937 1: <unset> 10938 2: <unset> 10939 3: baz 10940 bazfooX\=ovector=0 10941 0: fooX 10942 1: foo 10943 2: <unset> 10944 3: <unset> 10945 bazfooX\=ovector=1 10946Matched, but too many substrings 10947 0: fooX 10948 bazfooX\=ovector=2 10949 0: fooX 10950 1: foo 10951 bazfooX\=ovector=3 10952 0: fooX 10953 1: foo 10954 2: <unset> 10955 10956/(?=abc){3}abc/B 10957------------------------------------------------------------------ 10958 Bra 10959 Assert 10960 abc 10961 Ket 10962 Assert 10963 abc 10964 Ket 10965 Assert 10966 abc 10967 Ket 10968 abc 10969 Ket 10970 End 10971------------------------------------------------------------------ 10972 10973/(?=abc)+abc/B 10974------------------------------------------------------------------ 10975 Bra 10976 Assert 10977 abc 10978 Ket 10979 Brazero 10980 Assert 10981 abc 10982 Ket 10983 abc 10984 Ket 10985 End 10986------------------------------------------------------------------ 10987 10988/(?=abc)++abc/B 10989------------------------------------------------------------------ 10990 Bra 10991 Once 10992 Assert 10993 abc 10994 Ket 10995 Brazero 10996 Assert 10997 abc 10998 Ket 10999 Ket 11000 abc 11001 Ket 11002 End 11003------------------------------------------------------------------ 11004 11005/(?=abc){0}xyz/B 11006------------------------------------------------------------------ 11007 Bra 11008 Skip zero 11009 Assert 11010 abc 11011 Ket 11012 xyz 11013 Ket 11014 End 11015------------------------------------------------------------------ 11016 11017/(?=(a))?./B 11018------------------------------------------------------------------ 11019 Bra 11020 Brazero 11021 Assert 11022 CBra 1 11023 a 11024 Ket 11025 Ket 11026 Any 11027 Ket 11028 End 11029------------------------------------------------------------------ 11030 11031/(?=(a))??./B 11032------------------------------------------------------------------ 11033 Bra 11034 Braminzero 11035 Assert 11036 CBra 1 11037 a 11038 Ket 11039 Ket 11040 Any 11041 Ket 11042 End 11043------------------------------------------------------------------ 11044 11045/^(?=(a)){0}b(?1)/B 11046------------------------------------------------------------------ 11047 Bra 11048 ^ 11049 Skip zero 11050 Assert 11051 CBra 1 11052 a 11053 Ket 11054 Ket 11055 b 11056 Recurse 11057 Ket 11058 End 11059------------------------------------------------------------------ 11060 11061/(?(DEFINE)(a))?b(?1)/B 11062------------------------------------------------------------------ 11063 Bra 11064 Cond 11065 Cond false 11066 CBra 1 11067 a 11068 Ket 11069 Ket 11070 b 11071 Recurse 11072 Ket 11073 End 11074------------------------------------------------------------------ 11075 11076/^(?=(?1))?[az]([abc])d/B 11077------------------------------------------------------------------ 11078 Bra 11079 ^ 11080 Brazero 11081 Assert 11082 Recurse 11083 Ket 11084 [az] 11085 CBra 1 11086 [a-c] 11087 Ket 11088 d 11089 Ket 11090 End 11091------------------------------------------------------------------ 11092 11093/^(?!a){0}\w+/B 11094------------------------------------------------------------------ 11095 Bra 11096 ^ 11097 Skip zero 11098 Assert not 11099 a 11100 Ket 11101 \w++ 11102 Ket 11103 End 11104------------------------------------------------------------------ 11105 11106/(?<=(abc))?xyz/B 11107------------------------------------------------------------------ 11108 Bra 11109 Brazero 11110 Assert back 11111 Reverse 11112 CBra 1 11113 abc 11114 Ket 11115 Ket 11116 xyz 11117 Ket 11118 End 11119------------------------------------------------------------------ 11120 11121/[:a[:abc]b:]/B 11122------------------------------------------------------------------ 11123 Bra 11124 [:[a-c] 11125 b:] 11126 Ket 11127 End 11128------------------------------------------------------------------ 11129 11130/^(a(*:A)(d|e(*:B))z|aeq)/auto_callout 11131 adz 11132--->adz 11133 +0 ^ ^ 11134 +1 ^ ( 11135 +2 ^ a 11136 +3 ^^ (*:A) 11137 +8 ^^ ( 11138Latest Mark: A 11139 +9 ^^ d 11140+10 ^ ^ | 11141+18 ^ ^ z 11142+19 ^ ^ | 11143+24 ^ ^ End of pattern 11144 0: adz 11145 1: adz 11146 2: d 11147 aez 11148--->aez 11149 +0 ^ ^ 11150 +1 ^ ( 11151 +2 ^ a 11152 +3 ^^ (*:A) 11153 +8 ^^ ( 11154Latest Mark: A 11155 +9 ^^ d 11156+11 ^^ e 11157+12 ^ ^ (*:B) 11158+17 ^ ^ ) 11159Latest Mark: B 11160+18 ^ ^ z 11161+19 ^ ^ | 11162+24 ^ ^ End of pattern 11163 0: aez 11164 1: aez 11165 2: e 11166 aeqwerty 11167--->aeqwerty 11168 +0 ^ ^ 11169 +1 ^ ( 11170 +2 ^ a 11171 +3 ^^ (*:A) 11172 +8 ^^ ( 11173Latest Mark: A 11174 +9 ^^ d 11175+11 ^^ e 11176+12 ^ ^ (*:B) 11177+17 ^ ^ ) 11178Latest Mark: B 11179+18 ^ ^ z 11180+20 ^ a 11181+21 ^^ e 11182+22 ^ ^ q 11183+23 ^ ^ ) 11184+24 ^ ^ End of pattern 11185 0: aeq 11186 1: aeq 11187 11188/.(*F)/ 11189\= Expect no match 11190 abc\=ph 11191No match 11192 11193/\btype\b\W*?\btext\b\W*?\bjavascript\b/I 11194Capture group count = 0 11195Max lookbehind = 1 11196First code unit = 't' 11197Last code unit = 't' 11198Subject length lower bound = 18 11199 11200/\btype\b\W*?\btext\b\W*?\bjavascript\b|\burl\b\W*?\bshell:|<input\b.*?\btype\b\W*?\bimage\b|\bonkeyup\b\W*?\=/I 11201Capture group count = 0 11202Max lookbehind = 1 11203Starting code units: < o t u 11204Subject length lower bound = 8 11205 11206/a(*SKIP)c|b(*ACCEPT)|/I,aftertext 11207Capture group count = 0 11208May match empty string 11209Subject length lower bound = 0 11210 a 11211 0: 11212 0+ 11213 11214/a(*SKIP)c|b(*ACCEPT)cd(*ACCEPT)|x/I 11215Capture group count = 0 11216Starting code units: a b x 11217Subject length lower bound = 1 11218 ax 11219 0: x 11220 11221'a*(*ACCEPT)b'aftertext 11222 abc\=notempty_atstart 11223 0: a 11224 0+ bc 11225 bbb\=notempty_atstart 11226 0: 11227 0+ bb 11228\= Expect no match 11229 \=notempty_atstart 11230No match 11231 11232/(*ACCEPT)a/I,aftertext 11233Capture group count = 0 11234May match empty string 11235Subject length lower bound = 0 11236 bax 11237 0: 11238 0+ bax 11239 11240/z(*ACCEPT)a/I,aftertext 11241Capture group count = 0 11242First code unit = 'z' 11243Subject length lower bound = 1 11244 baxzbx 11245 0: z 11246 0+ bx 11247 11248/^(?>a+)(?>(z+))\w/B 11249------------------------------------------------------------------ 11250 Bra 11251 ^ 11252 Once 11253 a++ 11254 Ket 11255 Once 11256 CBra 1 11257 z++ 11258 Ket 11259 Ket 11260 \w 11261 Ket 11262 End 11263------------------------------------------------------------------ 11264 aaaazzzzb 11265 0: aaaazzzzb 11266 1: zzzz 11267\= Expect no match 11268 aazz 11269No match 11270 11271/(.)(\1|a(?2))/ 11272 bab 11273 0: bab 11274 1: b 11275 2: ab 11276 11277/\1|(.)(?R)\1/ 11278 cbbbc 11279 0: cbbbc 11280 1: c 11281 11282/(.)((?(1)c|a)|a(?2))/ 11283\= Expect no match 11284 baa 11285No match 11286 11287/(?P<abn>(?P=abn)xxx)/B 11288------------------------------------------------------------------ 11289 Bra 11290 CBra 1 11291 \1 11292 xxx 11293 Ket 11294 Ket 11295 End 11296------------------------------------------------------------------ 11297 11298/(a\1z)/B 11299------------------------------------------------------------------ 11300 Bra 11301 CBra 1 11302 a 11303 \1 11304 z 11305 Ket 11306 Ket 11307 End 11308------------------------------------------------------------------ 11309 11310/^a\x41z/alt_bsux,allow_empty_class,match_unset_backref,dupnames 11311 aAz 11312 0: aAz 11313\= Expect no match 11314 ax41z 11315No match 11316 11317/^a[m\x41]z/alt_bsux,allow_empty_class,match_unset_backref,dupnames 11318 aAz 11319 0: aAz 11320 11321/^a\x1z/alt_bsux,allow_empty_class,match_unset_backref,dupnames 11322 ax1z 11323 0: ax1z 11324 11325/^a\u0041z/alt_bsux,allow_empty_class,match_unset_backref,dupnames 11326 aAz 11327 0: aAz 11328\= Expect no match 11329 au0041z 11330No match 11331 11332/^a[m\u0041]z/alt_bsux,allow_empty_class,match_unset_backref,dupnames 11333 aAz 11334 0: aAz 11335 11336/^a\u041z/alt_bsux,allow_empty_class,match_unset_backref,dupnames 11337 au041z 11338 0: au041z 11339\= Expect no match 11340 aAz 11341No match 11342 11343/^a\U0041z/alt_bsux,allow_empty_class,match_unset_backref,dupnames 11344 aU0041z 11345 0: aU0041z 11346\= Expect no match 11347 aAz 11348No match 11349 11350/^\u{7a}/alt_bsux 11351 u{7a} 11352 0: u{7a} 11353\= Expect no match 11354 zoo 11355No match 11356 11357/^\u{7a}/extra_alt_bsux 11358 zoo 11359 0: z 11360 11361/(?(?=c)c|d)++Y/B 11362------------------------------------------------------------------ 11363 Bra 11364 BraPos 11365 Cond 11366 Assert 11367 c 11368 Ket 11369 c 11370 Alt 11371 d 11372 Ket 11373 KetRpos 11374 Y 11375 Ket 11376 End 11377------------------------------------------------------------------ 11378 11379/(?(?=c)c|d)*+Y/B 11380------------------------------------------------------------------ 11381 Bra 11382 Braposzero 11383 BraPos 11384 Cond 11385 Assert 11386 c 11387 Ket 11388 c 11389 Alt 11390 d 11391 Ket 11392 KetRpos 11393 Y 11394 Ket 11395 End 11396------------------------------------------------------------------ 11397 11398/a[\NB]c/ 11399Failed: error 171 at offset 4: \N is not supported in a class 11400 aNc 11401 11402/a[B-\Nc]/ 11403Failed: error 150 at offset 6: invalid range in character class 11404 11405/a[B\Nc]/ 11406Failed: error 171 at offset 5: \N is not supported in a class 11407 11408/(a)(?2){0,1999}?(b)/ 11409 11410/(a)(?(DEFINE)(b))(?2){0,1999}?(?2)/ 11411 11412# This test, with something more complicated than individual letters, causes 11413# different behaviour in Perl. Perhaps it disables some optimization; no tag is 11414# passed back for the failures, whereas in PCRE2 there is a tag. 11415 11416/(A|P)(*:A)(B|P) | (X|P)(X|P)(*:B)(Y|P)/x,mark 11417 AABC 11418 0: AB 11419 1: A 11420 2: B 11421MK: A 11422 XXYZ 11423 0: XXY 11424 1: <unset> 11425 2: <unset> 11426 3: X 11427 4: X 11428 5: Y 11429MK: B 11430\= Expect no match 11431 XAQQ 11432No match, mark = A 11433 XAQQXZZ 11434No match, mark = A 11435 AXQQQ 11436No match, mark = A 11437 AXXQQQ 11438No match, mark = B 11439 11440# Perl doesn't give marks for these, though it does if the alternatives are 11441# replaced by single letters. 11442 11443/(b|q)(*:m)f|a(*:n)w/mark 11444 aw 11445 0: aw 11446MK: n 11447\= Expect no match 11448 abc 11449No match, mark = m 11450 11451/(q|b)(*:m)f|a(*:n)w/mark 11452 aw 11453 0: aw 11454MK: n 11455\= Expect no match 11456 abc 11457No match, mark = m 11458 11459# After a partial match, the behaviour is as for a failure. 11460 11461/^a(*:X)bcde/mark 11462 abc\=ps 11463Partial match, mark=X: abc 11464 11465# These are here because Perl doesn't return a mark, except for the first. 11466 11467/(?=(*:x))(q|)/aftertext,mark 11468 abc 11469 0: 11470 0+ abc 11471 1: 11472MK: x 11473 11474/(?=(*:x))((*:y)q|)/aftertext,mark 11475 abc 11476 0: 11477 0+ abc 11478 1: 11479MK: x 11480 11481/(?=(*:x))(?:(*:y)q|)/aftertext,mark 11482 abc 11483 0: 11484 0+ abc 11485MK: x 11486 11487/(?=(*:x))(?>(*:y)q|)/aftertext,mark 11488 abc 11489 0: 11490 0+ abc 11491MK: x 11492 11493/(?=a(*:x))(?!a(*:y)c)/aftertext,mark 11494 ab 11495 0: 11496 0+ ab 11497MK: x 11498 11499/(?=a(*:x))(?=a(*:y)c|)/aftertext,mark 11500 ab 11501 0: 11502 0+ ab 11503MK: x 11504 11505/(..)\1/ 11506 ab\=ps 11507Partial match: ab 11508 aba\=ps 11509Partial match: aba 11510 abab\=ps 11511 0: abab 11512 1: ab 11513 11514/(..)\1/i 11515 ab\=ps 11516Partial match: ab 11517 abA\=ps 11518Partial match: abA 11519 aBAb\=ps 11520 0: aBAb 11521 1: aB 11522 11523/(..)\1{2,}/ 11524 ab\=ps 11525Partial match: ab 11526 aba\=ps 11527Partial match: aba 11528 abab\=ps 11529Partial match: abab 11530 ababa\=ps 11531Partial match: ababa 11532 ababab\=ps 11533 0: ababab 11534 1: ab 11535 ababab\=ph 11536Partial match: ababab 11537 abababa\=ps 11538 0: ababab 11539 1: ab 11540 abababa\=ph 11541Partial match: abababa 11542 11543/(..)\1{2,}/i 11544 ab\=ps 11545Partial match: ab 11546 aBa\=ps 11547Partial match: aBa 11548 aBAb\=ps 11549Partial match: aBAb 11550 AbaBA\=ps 11551Partial match: AbaBA 11552 abABAb\=ps 11553 0: abABAb 11554 1: ab 11555 aBAbaB\=ph 11556Partial match: aBAbaB 11557 abABabA\=ps 11558 0: abABab 11559 1: ab 11560 abaBABa\=ph 11561Partial match: abaBABa 11562 11563/(..)\1{2,}?x/i 11564 ab\=ps 11565Partial match: ab 11566 abA\=ps 11567Partial match: abA 11568 aBAb\=ps 11569Partial match: aBAb 11570 abaBA\=ps 11571Partial match: abaBA 11572 abAbaB\=ps 11573Partial match: abAbaB 11574 abaBabA\=ps 11575Partial match: abaBabA 11576 abAbABaBx\=ps 11577 0: abAbABaBx 11578 1: ab 11579 11580/^(..)\1/ 11581 aba\=ps 11582Partial match: aba 11583 11584/^(..)\1{2,3}x/ 11585 aba\=ps 11586Partial match: aba 11587 ababa\=ps 11588Partial match: ababa 11589 ababa\=ph 11590Partial match: ababa 11591 abababx 11592 0: abababx 11593 1: ab 11594 ababababx 11595 0: ababababx 11596 1: ab 11597 11598/^(..)\1{2,3}?x/ 11599 aba\=ps 11600Partial match: aba 11601 ababa\=ps 11602Partial match: ababa 11603 ababa\=ph 11604Partial match: ababa 11605 abababx 11606 0: abababx 11607 1: ab 11608 ababababx 11609 0: ababababx 11610 1: ab 11611 11612/^(..)(\1{2,3})ab/ 11613 abababab 11614 0: abababab 11615 1: ab 11616 2: abab 11617 11618/^\R/ 11619 \r\=ps 11620 0: \x0d 11621 \r\=ph 11622Partial match: \x0d 11623 11624/^\R{2,3}x/ 11625 \r\=ps 11626Partial match: \x0d 11627 \r\=ph 11628Partial match: \x0d 11629 \r\r\=ps 11630Partial match: \x0d\x0d 11631 \r\r\=ph 11632Partial match: \x0d\x0d 11633 \r\r\r\=ps 11634Partial match: \x0d\x0d\x0d 11635 \r\r\r\=ph 11636Partial match: \x0d\x0d\x0d 11637 \r\rx 11638 0: \x0d\x0dx 11639 \r\r\rx 11640 0: \x0d\x0d\x0dx 11641 11642/^\R{2,3}?x/ 11643 \r\=ps 11644Partial match: \x0d 11645 \r\=ph 11646Partial match: \x0d 11647 \r\r\=ps 11648Partial match: \x0d\x0d 11649 \r\r\=ph 11650Partial match: \x0d\x0d 11651 \r\r\r\=ps 11652Partial match: \x0d\x0d\x0d 11653 \r\r\r\=ph 11654Partial match: \x0d\x0d\x0d 11655 \r\rx 11656 0: \x0d\x0dx 11657 \r\r\rx 11658 0: \x0d\x0d\x0dx 11659 11660/^\R?x/ 11661 \r\=ps 11662Partial match: \x0d 11663 \r\=ph 11664Partial match: \x0d 11665 x 11666 0: x 11667 \rx 11668 0: \x0dx 11669 11670/^\R+x/ 11671 \r\=ps 11672Partial match: \x0d 11673 \r\=ph 11674Partial match: \x0d 11675 \r\n\=ps 11676Partial match: \x0d\x0a 11677 \r\n\=ph 11678Partial match: \x0d\x0a 11679 \rx 11680 0: \x0dx 11681 11682/^a$/newline=crlf 11683 a\r\=ps 11684Partial match: a\x0d 11685 a\r\=ph 11686Partial match: a\x0d 11687 11688/^a$/m,newline=crlf 11689 a\r\=ps 11690Partial match: a\x0d 11691 a\r\=ph 11692Partial match: a\x0d 11693 11694/^(a$|a\r)/newline=crlf 11695 a\r\=ps 11696 0: a\x0d 11697 1: a\x0d 11698 a\r\=ph 11699Partial match: a\x0d 11700 11701/^(a$|a\r)/m,newline=crlf 11702 a\r\=ps 11703 0: a\x0d 11704 1: a\x0d 11705 a\r\=ph 11706Partial match: a\x0d 11707 11708/./newline=crlf 11709 \r\=ps 11710 0: \x0d 11711 \r\=ph 11712Partial match: \x0d 11713 11714/.{2,3}/newline=crlf 11715 \r\=ps 11716Partial match: \x0d 11717 \r\=ph 11718Partial match: \x0d 11719 \r\r\=ps 11720 0: \x0d\x0d 11721 \r\r\=ph 11722Partial match: \x0d\x0d 11723 \r\r\r\=ps 11724 0: \x0d\x0d\x0d 11725 \r\r\r\=ph 11726Partial match: \x0d\x0d\x0d 11727 11728/.{2,3}?/newline=crlf 11729 \r\=ps 11730Partial match: \x0d 11731 \r\=ph 11732Partial match: \x0d 11733 \r\r\=ps 11734 0: \x0d\x0d 11735 \r\r\=ph 11736Partial match: \x0d\x0d 11737 \r\r\r\=ps 11738 0: \x0d\x0d 11739 \r\r\r\=ph 11740 0: \x0d\x0d 11741 11742"AB(C(D))(E(F))?(?(?=\2)(?=\4))" 11743 ABCDGHI\=ovector=01 11744Matched, but too many substrings 11745 0: ABCD 11746 11747# These are all run as real matches in test 1; here we are just checking the 11748# settings of the anchored and startline bits. 11749 11750/(?>.*?a)(?<=ba)/I 11751Capture group count = 0 11752Max lookbehind = 2 11753Last code unit = 'a' 11754Subject length lower bound = 1 11755 11756/(?:.*?a)(?<=ba)/I 11757Capture group count = 0 11758Max lookbehind = 2 11759First code unit at start or follows newline 11760Last code unit = 'a' 11761Subject length lower bound = 1 11762 11763/.*?a(*PRUNE)b/I 11764Capture group count = 0 11765Last code unit = 'b' 11766Subject length lower bound = 2 11767 11768/.*?a(*PRUNE)b/Is 11769Capture group count = 0 11770Options: dotall 11771Last code unit = 'b' 11772Subject length lower bound = 2 11773 11774/^a(*PRUNE)b/Is 11775Capture group count = 0 11776Compile options: dotall 11777Overall options: anchored dotall 11778First code unit = 'a' 11779Subject length lower bound = 2 11780 11781/.*?a(*SKIP)b/I 11782Capture group count = 0 11783Last code unit = 'b' 11784Subject length lower bound = 2 11785 11786/(?>.*?a)b/Is 11787Capture group count = 0 11788Options: dotall 11789Last code unit = 'b' 11790Subject length lower bound = 2 11791 11792/(?>.*?a)b/I 11793Capture group count = 0 11794Last code unit = 'b' 11795Subject length lower bound = 2 11796 11797/(?>^a)b/Is 11798Capture group count = 0 11799Compile options: dotall 11800Overall options: anchored dotall 11801First code unit = 'a' 11802Subject length lower bound = 2 11803 11804/(?>.*?)(?<=(abcd)|(wxyz))/I 11805Capture group count = 2 11806Max lookbehind = 4 11807May match empty string 11808Subject length lower bound = 0 11809 11810/(?>.*)(?<=(abcd)|(wxyz))/I 11811Capture group count = 2 11812Max lookbehind = 4 11813May match empty string 11814Subject length lower bound = 0 11815 11816"(?>.*)foo"I 11817Capture group count = 0 11818Last code unit = 'o' 11819Subject length lower bound = 3 11820 11821"(?>.*?)foo"I 11822Capture group count = 0 11823Last code unit = 'o' 11824Subject length lower bound = 3 11825 11826/(?>^abc)/Im 11827Capture group count = 0 11828Options: multiline 11829First code unit at start or follows newline 11830Last code unit = 'c' 11831Subject length lower bound = 3 11832 11833/(?>.*abc)/Im 11834Capture group count = 0 11835Options: multiline 11836Last code unit = 'c' 11837Subject length lower bound = 3 11838 11839/(?:.*abc)/Im 11840Capture group count = 0 11841Options: multiline 11842First code unit at start or follows newline 11843Last code unit = 'c' 11844Subject length lower bound = 3 11845 11846/(?:(a)+(?C1)bb|aa(?C2)b)/ 11847 aab\=callout_capture 11848Callout 1: last capture = 1 11849 1: a 11850--->aab 11851 ^ ^ b 11852Callout 1: last capture = 1 11853 1: a 11854--->aab 11855 ^^ b 11856Callout 2: last capture = 0 11857--->aab 11858 ^ ^ b 11859 0: aab 11860 11861/(?:(a)++(?C1)bb|aa(?C2)b)/ 11862 aab\=callout_capture 11863Callout 1: last capture = 1 11864 1: a 11865--->aab 11866 ^ ^ b 11867Callout 2: last capture = 0 11868--->aab 11869 ^ ^ b 11870 0: aab 11871 11872/(?:(?>(a))(?C1)bb|aa(?C2)b)/ 11873 aab\=callout_capture 11874Callout 1: last capture = 1 11875 1: a 11876--->aab 11877 ^^ b 11878Callout 2: last capture = 0 11879--->aab 11880 ^ ^ b 11881 0: aab 11882 11883/(?:(?1)(?C1)x|ab(?C2))((a)){0}/ 11884 aab\=callout_capture 11885Callout 1: last capture = 0 11886--->aab 11887 ^^ x 11888Callout 1: last capture = 0 11889--->aab 11890 ^^ x 11891Callout 2: last capture = 0 11892--->aab 11893 ^ ^ ) 11894 0: ab 11895 11896/(?1)(?C1)((a)(?C2)){0}/ 11897 aab\=callout_capture 11898Callout 2: last capture = 2 11899 1: <unset> 11900 2: a 11901--->aab 11902 ^^ ){0} 11903Callout 1: last capture = 0 11904--->aab 11905 ^^ ( 11906 0: a 11907 11908/(?:(a)+(?C1)bb|aa(?C2)b)++/ 11909 aab\=callout_capture 11910Callout 1: last capture = 1 11911 1: a 11912--->aab 11913 ^ ^ b 11914Callout 1: last capture = 1 11915 1: a 11916--->aab 11917 ^^ b 11918Callout 2: last capture = 0 11919--->aab 11920 ^ ^ b 11921 0: aab 11922 aab\=callout_capture,ovector=1 11923Callout 1: last capture = 1 11924 1: a 11925--->aab 11926 ^ ^ b 11927Callout 1: last capture = 1 11928 1: a 11929--->aab 11930 ^^ b 11931Callout 2: last capture = 0 11932--->aab 11933 ^ ^ b 11934 0: aab 11935 11936/(ab)x|ab/ 11937 ab\=ovector=0 11938 0: ab 11939 ab\=ovector=1 11940 0: ab 11941 11942/(?<=123)(*MARK:xx)abc/mark 11943 xxxx123a\=ph 11944Partial match, mark=xx: a 11945 xxxx123a\=ps 11946Partial match, mark=xx: a 11947 11948/123\Kabc/startchar 11949 xxxx123a\=ph 11950Partial match: 123a 11951 xxxx123a\=ps 11952Partial match: 123a 11953 11954/^(?(?=a)aa|bb)/auto_callout 11955 bb 11956--->bb 11957 +0 ^ ^ 11958 +1 ^ (? 11959 +3 ^ (?= 11960 +6 ^ a 11961+11 ^ b 11962+12 ^^ b 11963+13 ^ ^ ) 11964+14 ^ ^ End of pattern 11965 0: bb 11966 11967/(?C1)^(?C2)(?(?C99)(?=(?C3)a(?C4))(?C5)a(?C6)a(?C7)|(?C8)b(?C9)b(?C10))(?C11)/ 11968 bb 11969--->bb 11970 1 ^ ^ 11971 2 ^ (? 11972 99 ^ (?= 11973 3 ^ a 11974 8 ^ b 11975 9 ^^ b 11976 10 ^ ^ ) 11977 11 ^ ^ End of pattern 11978 0: bb 11979 11980# Perl seems to have a bug with this one. 11981 11982/aaaaa(*COMMIT)(*PRUNE)b|a+c/ 11983 aaaaaac 11984 0: aaaac 11985 11986# Here are some that Perl treats differently because of the way it handles 11987# backtracking verbs. 11988 11989/(?!a(*COMMIT)b)ac|ad/ 11990 ac 11991 0: ac 11992 ad 11993 0: ad 11994 11995/^(?!a(*THEN)b|ac)../ 11996 ad 11997 0: ad 11998\= Expect no match 11999 ac 12000No match 12001 12002/^(?=a(*THEN)b|ac)/ 12003 ac 12004 0: 12005 12006/\A.*?(?:a|b(*THEN)c)/ 12007 ba 12008 0: ba 12009 12010/\A.*?(?:a|b(*THEN)c)++/ 12011 ba 12012 0: ba 12013 12014/\A.*?(?:a|b(*THEN)c|d)/ 12015 ba 12016 0: ba 12017 12018/(?:(a(*MARK:X)a+(*SKIP:X)b)){0}(?:(?1)|aac)/ 12019 aac 12020 0: aac 12021 12022/\A.*?(a|b(*THEN)c)/ 12023 ba 12024 0: ba 12025 1: a 12026 12027/^(A(*THEN)B|A(*THEN)D)/ 12028 AD 12029 0: AD 12030 1: AD 12031 12032/(?!b(*THEN)a)bn|bnn/ 12033 bnn 12034 0: bn 12035 12036/(?(?=b(*SKIP)a)bn|bnn)/ 12037 bnn 12038 0: bnn 12039 12040/(?=b(*THEN)a|)bn|bnn/ 12041 bnn 12042 0: bn 12043 12044# This test causes a segfault with Perl 5.18.0 12045 12046/^(?=(a)){0}b(?1)/ 12047 backgammon 12048 0: ba 12049 12050/(?|(?<n>f)|(?<n>b))/I,dupnames 12051Capture group count = 1 12052Named capture groups: 12053 n 1 12054Options: dupnames 12055Starting code units: b f 12056Subject length lower bound = 1 12057 12058/(?<a>abc)(?<a>z)\k<a>()/IB,dupnames 12059------------------------------------------------------------------ 12060 Bra 12061 CBra 1 12062 abc 12063 Ket 12064 CBra 2 12065 z 12066 Ket 12067 \k<a>2 12068 CBra 3 12069 Ket 12070 Ket 12071 End 12072------------------------------------------------------------------ 12073Capture group count = 3 12074Max back reference = 2 12075Named capture groups: 12076 a 1 12077 a 2 12078Options: dupnames 12079First code unit = 'a' 12080Last code unit = 'z' 12081Subject length lower bound = 5 12082 12083/a*[bcd]/B 12084------------------------------------------------------------------ 12085 Bra 12086 a*+ 12087 [b-d] 12088 Ket 12089 End 12090------------------------------------------------------------------ 12091 12092/[bcd]*a/B 12093------------------------------------------------------------------ 12094 Bra 12095 [b-d]*+ 12096 a 12097 Ket 12098 End 12099------------------------------------------------------------------ 12100 12101# A complete set of tests for auto-possessification of character types, but 12102# omitting \C because it might be disabled (it has its own tests). 12103 12104/\D+\D \D+\d \D+\S \D+\s \D+\W \D+\w \D+. \D+\R \D+\H \D+\h \D+\V \D+\v \D+\Z \D+\z \D+$/Bx 12105------------------------------------------------------------------ 12106 Bra 12107 \D+ 12108 \D 12109 \D++ 12110 \d 12111 \D+ 12112 \S 12113 \D+ 12114 \s 12115 \D+ 12116 \W 12117 \D+ 12118 \w 12119 \D+ 12120 Any 12121 \D+ 12122 \R 12123 \D+ 12124 \H 12125 \D+ 12126 \h 12127 \D+ 12128 \V 12129 \D+ 12130 \v 12131 \D+ 12132 \Z 12133 \D++ 12134 \z 12135 \D+ 12136 $ 12137 Ket 12138 End 12139------------------------------------------------------------------ 12140 12141/\d+\D \d+\d \d+\S \d+\s \d+\W \d+\w \d+. \d+\R \d+\H \d+\h \d+\V \d+\v \d+\Z \d+\z \d+$/Bx 12142------------------------------------------------------------------ 12143 Bra 12144 \d++ 12145 \D 12146 \d+ 12147 \d 12148 \d+ 12149 \S 12150 \d++ 12151 \s 12152 \d++ 12153 \W 12154 \d+ 12155 \w 12156 \d+ 12157 Any 12158 \d++ 12159 \R 12160 \d+ 12161 \H 12162 \d++ 12163 \h 12164 \d+ 12165 \V 12166 \d++ 12167 \v 12168 \d++ 12169 \Z 12170 \d++ 12171 \z 12172 \d++ 12173 $ 12174 Ket 12175 End 12176------------------------------------------------------------------ 12177 12178/\S+\D \S+\d \S+\S \S+\s \S+\W \S+\w \S+. \S+\R \S+\H \S+\h \S+\V \S+\v \S+\Z \S+\z \S+$/Bx 12179------------------------------------------------------------------ 12180 Bra 12181 \S+ 12182 \D 12183 \S+ 12184 \d 12185 \S+ 12186 \S 12187 \S++ 12188 \s 12189 \S+ 12190 \W 12191 \S+ 12192 \w 12193 \S+ 12194 Any 12195 \S++ 12196 \R 12197 \S+ 12198 \H 12199 \S++ 12200 \h 12201 \S+ 12202 \V 12203 \S++ 12204 \v 12205 \S++ 12206 \Z 12207 \S++ 12208 \z 12209 \S++ 12210 $ 12211 Ket 12212 End 12213------------------------------------------------------------------ 12214 12215/\s+\D \s+\d \s+\S \s+\s \s+\W \s+\w \s+. \s+\R \s+\H \s+\h \s+\V \s+\v \s+\Z \s+\z \s+$/Bx 12216------------------------------------------------------------------ 12217 Bra 12218 \s+ 12219 \D 12220 \s++ 12221 \d 12222 \s++ 12223 \S 12224 \s+ 12225 \s 12226 \s+ 12227 \W 12228 \s++ 12229 \w 12230 \s+ 12231 Any 12232 \s+ 12233 \R 12234 \s+ 12235 \H 12236 \s+ 12237 \h 12238 \s+ 12239 \V 12240 \s+ 12241 \v 12242 \s+ 12243 \Z 12244 \s++ 12245 \z 12246 \s+ 12247 $ 12248 Ket 12249 End 12250------------------------------------------------------------------ 12251 12252/\W+\D \W+\d \W+\S \W+\s \W+\W \W+\w \W+. \W+\R \W+\H \W+\h \W+\V \W+\v \W+\Z \W+\z \W+$/Bx 12253------------------------------------------------------------------ 12254 Bra 12255 \W+ 12256 \D 12257 \W++ 12258 \d 12259 \W+ 12260 \S 12261 \W+ 12262 \s 12263 \W+ 12264 \W 12265 \W++ 12266 \w 12267 \W+ 12268 Any 12269 \W+ 12270 \R 12271 \W+ 12272 \H 12273 \W+ 12274 \h 12275 \W+ 12276 \V 12277 \W+ 12278 \v 12279 \W+ 12280 \Z 12281 \W++ 12282 \z 12283 \W+ 12284 $ 12285 Ket 12286 End 12287------------------------------------------------------------------ 12288 12289/\w+\D \w+\d \w+\S \w+\s \w+\W \w+\w \w+. \w+\R \w+\H \w+\h \w+\V \w+\v \w+\Z \w+\z \w+$/Bx 12290------------------------------------------------------------------ 12291 Bra 12292 \w+ 12293 \D 12294 \w+ 12295 \d 12296 \w+ 12297 \S 12298 \w++ 12299 \s 12300 \w++ 12301 \W 12302 \w+ 12303 \w 12304 \w+ 12305 Any 12306 \w++ 12307 \R 12308 \w+ 12309 \H 12310 \w++ 12311 \h 12312 \w+ 12313 \V 12314 \w++ 12315 \v 12316 \w++ 12317 \Z 12318 \w++ 12319 \z 12320 \w++ 12321 $ 12322 Ket 12323 End 12324------------------------------------------------------------------ 12325 12326/\R+\D \R+\d \R+\S \R+\s \R+\W \R+\w \R+. \R+\R \R+\H \R+\h \R+\V \R+\v \R+\Z \R+\z \R+$/Bx 12327------------------------------------------------------------------ 12328 Bra 12329 \R+ 12330 \D 12331 \R++ 12332 \d 12333 \R+ 12334 \S 12335 \R++ 12336 \s 12337 \R+ 12338 \W 12339 \R++ 12340 \w 12341 \R++ 12342 Any 12343 \R+ 12344 \R 12345 \R+ 12346 \H 12347 \R++ 12348 \h 12349 \R+ 12350 \V 12351 \R+ 12352 \v 12353 \R+ 12354 \Z 12355 \R++ 12356 \z 12357 \R+ 12358 $ 12359 Ket 12360 End 12361------------------------------------------------------------------ 12362 12363/\H+\D \H+\d \H+\S \H+\s \H+\W \H+\w \H+. \H+\R \H+\H \H+\h \H+\V \H+\v \H+\Z \H+\z \H+$/Bx 12364------------------------------------------------------------------ 12365 Bra 12366 \H+ 12367 \D 12368 \H+ 12369 \d 12370 \H+ 12371 \S 12372 \H+ 12373 \s 12374 \H+ 12375 \W 12376 \H+ 12377 \w 12378 \H+ 12379 Any 12380 \H+ 12381 \R 12382 \H+ 12383 \H 12384 \H++ 12385 \h 12386 \H+ 12387 \V 12388 \H+ 12389 \v 12390 \H+ 12391 \Z 12392 \H++ 12393 \z 12394 \H+ 12395 $ 12396 Ket 12397 End 12398------------------------------------------------------------------ 12399 12400/\h+\D \h+\d \h+\S \h+\s \h+\W \h+\w \h+. \h+\R \h+\H \h+\h \h+\V \h+\v \h+\Z \h+\z \h+$/Bx 12401------------------------------------------------------------------ 12402 Bra 12403 \h+ 12404 \D 12405 \h++ 12406 \d 12407 \h++ 12408 \S 12409 \h+ 12410 \s 12411 \h+ 12412 \W 12413 \h++ 12414 \w 12415 \h+ 12416 Any 12417 \h++ 12418 \R 12419 \h++ 12420 \H 12421 \h+ 12422 \h 12423 \h+ 12424 \V 12425 \h++ 12426 \v 12427 \h+ 12428 \Z 12429 \h++ 12430 \z 12431 \h+ 12432 $ 12433 Ket 12434 End 12435------------------------------------------------------------------ 12436 12437/\V+\D \V+\d \V+\S \V+\s \V+\W \V+\w \V+. \V+\R \V+\H \V+\h \V+\V \V+\v \V+\Z \V+\z \V+$/Bx 12438------------------------------------------------------------------ 12439 Bra 12440 \V+ 12441 \D 12442 \V+ 12443 \d 12444 \V+ 12445 \S 12446 \V+ 12447 \s 12448 \V+ 12449 \W 12450 \V+ 12451 \w 12452 \V+ 12453 Any 12454 \V++ 12455 \R 12456 \V+ 12457 \H 12458 \V+ 12459 \h 12460 \V+ 12461 \V 12462 \V++ 12463 \v 12464 \V+ 12465 \Z 12466 \V++ 12467 \z 12468 \V+ 12469 $ 12470 Ket 12471 End 12472------------------------------------------------------------------ 12473 12474/\v+\D \v+\d \v+\S \v+\s \v+\W \v+\w \v+. \v+\R \v+\H \v+\h \v+\V \v+\v \v+\Z \v+\z \v+$/Bx 12475------------------------------------------------------------------ 12476 Bra 12477 \v+ 12478 \D 12479 \v++ 12480 \d 12481 \v++ 12482 \S 12483 \v+ 12484 \s 12485 \v+ 12486 \W 12487 \v++ 12488 \w 12489 \v+ 12490 Any 12491 \v+ 12492 \R 12493 \v+ 12494 \H 12495 \v++ 12496 \h 12497 \v++ 12498 \V 12499 \v+ 12500 \v 12501 \v+ 12502 \Z 12503 \v++ 12504 \z 12505 \v+ 12506 $ 12507 Ket 12508 End 12509------------------------------------------------------------------ 12510 12511/ a+\D a+\d a+\S a+\s a+\W a+\w a+. a+\R a+\H a+\h a+\V a+\v a+\Z a+\z a+$/Bx 12512------------------------------------------------------------------ 12513 Bra 12514 a+ 12515 \D 12516 a++ 12517 \d 12518 a+ 12519 \S 12520 a++ 12521 \s 12522 a++ 12523 \W 12524 a+ 12525 \w 12526 a+ 12527 Any 12528 a++ 12529 \R 12530 a+ 12531 \H 12532 a++ 12533 \h 12534 a+ 12535 \V 12536 a++ 12537 \v 12538 a++ 12539 \Z 12540 a++ 12541 \z 12542 a++ 12543 $ 12544 Ket 12545 End 12546------------------------------------------------------------------ 12547 12548/\n+\D \n+\d \n+\S \n+\s \n+\W \n+\w \n+. \n+\R \n+\H \n+\h \n+\V \n+\v \n+\Z \n+\z \n+$/Bx 12549------------------------------------------------------------------ 12550 Bra 12551 \x0a+ 12552 \D 12553 \x0a++ 12554 \d 12555 \x0a++ 12556 \S 12557 \x0a+ 12558 \s 12559 \x0a+ 12560 \W 12561 \x0a++ 12562 \w 12563 \x0a+ 12564 Any 12565 \x0a+ 12566 \R 12567 \x0a+ 12568 \H 12569 \x0a++ 12570 \h 12571 \x0a++ 12572 \V 12573 \x0a+ 12574 \v 12575 \x0a+ 12576 \Z 12577 \x0a++ 12578 \z 12579 \x0a+ 12580 $ 12581 Ket 12582 End 12583------------------------------------------------------------------ 12584 12585/ .+\D .+\d .+\S .+\s .+\W .+\w .+. .+\R .+\H .+\h .+\V .+\v .+\Z .+\z .+$/Bx 12586------------------------------------------------------------------ 12587 Bra 12588 Any+ 12589 \D 12590 Any+ 12591 \d 12592 Any+ 12593 \S 12594 Any+ 12595 \s 12596 Any+ 12597 \W 12598 Any+ 12599 \w 12600 Any+ 12601 Any 12602 Any++ 12603 \R 12604 Any+ 12605 \H 12606 Any+ 12607 \h 12608 Any+ 12609 \V 12610 Any+ 12611 \v 12612 Any+ 12613 \Z 12614 Any++ 12615 \z 12616 Any+ 12617 $ 12618 Ket 12619 End 12620------------------------------------------------------------------ 12621 12622/ .+\D .+\d .+\S .+\s .+\W .+\w .+. .+\R .+\H .+\h .+\V .+\v .+\Z .+\z .+$/Bsx 12623------------------------------------------------------------------ 12624 Bra 12625 AllAny+ 12626 \D 12627 AllAny+ 12628 \d 12629 AllAny+ 12630 \S 12631 AllAny+ 12632 \s 12633 AllAny+ 12634 \W 12635 AllAny+ 12636 \w 12637 AllAny+ 12638 AllAny 12639 AllAny+ 12640 \R 12641 AllAny+ 12642 \H 12643 AllAny+ 12644 \h 12645 AllAny+ 12646 \V 12647 AllAny+ 12648 \v 12649 AllAny+ 12650 \Z 12651 AllAny++ 12652 \z 12653 AllAny+ 12654 $ 12655 Ket 12656 End 12657------------------------------------------------------------------ 12658 12659/ \D+$ \d+$ \S+$ \s+$ \W+$ \w+$ \R+$ \H+$ \h+$ \V+$ \v+$ a+$ \n+$ .+$ .+$/Bmx 12660------------------------------------------------------------------ 12661 Bra 12662 \D+ 12663 /m $ 12664 \d++ 12665 /m $ 12666 \S++ 12667 /m $ 12668 \s+ 12669 /m $ 12670 \W+ 12671 /m $ 12672 \w++ 12673 /m $ 12674 \R+ 12675 /m $ 12676 \H+ 12677 /m $ 12678 \h+ 12679 /m $ 12680 \V+ 12681 /m $ 12682 \v+ 12683 /m $ 12684 a+ 12685 /m $ 12686 \x0a+ 12687 /m $ 12688 Any+ 12689 /m $ 12690 Any+ 12691 /m $ 12692 Ket 12693 End 12694------------------------------------------------------------------ 12695 12696/(?=a+)a(a+)++a/B 12697------------------------------------------------------------------ 12698 Bra 12699 Assert 12700 a++ 12701 Ket 12702 a 12703 CBraPos 1 12704 a+ 12705 KetRpos 12706 a 12707 Ket 12708 End 12709------------------------------------------------------------------ 12710 12711/a+(bb|cc)a+(?:bb|cc)a+(?>bb|cc)a+(?:bb|cc)+a+(aa)a+(?:bb|aa)/B 12712------------------------------------------------------------------ 12713 Bra 12714 a++ 12715 CBra 1 12716 bb 12717 Alt 12718 cc 12719 Ket 12720 a++ 12721 Bra 12722 bb 12723 Alt 12724 cc 12725 Ket 12726 a++ 12727 Once 12728 bb 12729 Alt 12730 cc 12731 Ket 12732 a++ 12733 Bra 12734 bb 12735 Alt 12736 cc 12737 KetRmax 12738 a+ 12739 CBra 2 12740 aa 12741 Ket 12742 a+ 12743 Bra 12744 bb 12745 Alt 12746 aa 12747 Ket 12748 Ket 12749 End 12750------------------------------------------------------------------ 12751 12752/a+(bb|cc)?#a+(?:bb|cc)??#a+(?:bb|cc)?+#a+(?:bb|cc)*#a+(bb|cc)?a#a+(?:aa)?/B 12753------------------------------------------------------------------ 12754 Bra 12755 a++ 12756 Brazero 12757 CBra 1 12758 bb 12759 Alt 12760 cc 12761 Ket 12762 # 12763 a++ 12764 Braminzero 12765 Bra 12766 bb 12767 Alt 12768 cc 12769 Ket 12770 # 12771 a++ 12772 Once 12773 Brazero 12774 Bra 12775 bb 12776 Alt 12777 cc 12778 Ket 12779 Ket 12780 # 12781 a++ 12782 Brazero 12783 Bra 12784 bb 12785 Alt 12786 cc 12787 KetRmax 12788 # 12789 a+ 12790 Brazero 12791 CBra 2 12792 bb 12793 Alt 12794 cc 12795 Ket 12796 a# 12797 a+ 12798 Brazero 12799 Bra 12800 aa 12801 Ket 12802 Ket 12803 End 12804------------------------------------------------------------------ 12805 12806/a+(?:bb)?a#a+(?:|||)#a+(?:|b)a#a+(?:|||)?a/B 12807------------------------------------------------------------------ 12808 Bra 12809 a+ 12810 Brazero 12811 Bra 12812 bb 12813 Ket 12814 a# 12815 a++ 12816 Bra 12817 Alt 12818 Alt 12819 Alt 12820 Ket 12821 # 12822 a+ 12823 Bra 12824 Alt 12825 b 12826 Ket 12827 a# 12828 a+ 12829 Brazero 12830 Bra 12831 Alt 12832 Alt 12833 Alt 12834 Ket 12835 a 12836 Ket 12837 End 12838------------------------------------------------------------------ 12839 12840/[ab]*/B 12841------------------------------------------------------------------ 12842 Bra 12843 [ab]*+ 12844 Ket 12845 End 12846------------------------------------------------------------------ 12847 aaaa 12848 0: aaaa 12849 12850/[ab]*?/B 12851------------------------------------------------------------------ 12852 Bra 12853 [ab]*? 12854 Ket 12855 End 12856------------------------------------------------------------------ 12857 aaaa 12858 0: 12859 12860/[ab]?/B 12861------------------------------------------------------------------ 12862 Bra 12863 [ab]?+ 12864 Ket 12865 End 12866------------------------------------------------------------------ 12867 aaaa 12868 0: a 12869 12870/[ab]??/B 12871------------------------------------------------------------------ 12872 Bra 12873 [ab]?? 12874 Ket 12875 End 12876------------------------------------------------------------------ 12877 aaaa 12878 0: 12879 12880/[ab]+/B 12881------------------------------------------------------------------ 12882 Bra 12883 [ab]++ 12884 Ket 12885 End 12886------------------------------------------------------------------ 12887 aaaa 12888 0: aaaa 12889 12890/[ab]+?/B 12891------------------------------------------------------------------ 12892 Bra 12893 [ab]+? 12894 Ket 12895 End 12896------------------------------------------------------------------ 12897 aaaa 12898 0: a 12899 12900/[ab]{2,3}/B 12901------------------------------------------------------------------ 12902 Bra 12903 [ab]{2,3}+ 12904 Ket 12905 End 12906------------------------------------------------------------------ 12907 aaaa 12908 0: aaa 12909 12910/[ab]{2,3}?/B 12911------------------------------------------------------------------ 12912 Bra 12913 [ab]{2,3}? 12914 Ket 12915 End 12916------------------------------------------------------------------ 12917 aaaa 12918 0: aa 12919 12920/[ab]{2,}/B 12921------------------------------------------------------------------ 12922 Bra 12923 [ab]{2,}+ 12924 Ket 12925 End 12926------------------------------------------------------------------ 12927 aaaa 12928 0: aaaa 12929 12930/[ab]{2,}?/B 12931------------------------------------------------------------------ 12932 Bra 12933 [ab]{2,}? 12934 Ket 12935 End 12936------------------------------------------------------------------ 12937 aaaa 12938 0: aa 12939 12940/\d+\s{0,5}=\s*\S?=\w{0,4}\W*/B 12941------------------------------------------------------------------ 12942 Bra 12943 \d++ 12944 \s{0,5}+ 12945 = 12946 \s*+ 12947 \S? 12948 = 12949 \w{0,4}+ 12950 \W*+ 12951 Ket 12952 End 12953------------------------------------------------------------------ 12954 12955/[a-d]{5,12}[e-z0-9]*#[^a-z]+[b-y]*a[2-7]?[^0-9a-z]+/B 12956------------------------------------------------------------------ 12957 Bra 12958 [a-d]{5,12}+ 12959 [0-9e-z]*+ 12960 # 12961 [\x00-`{-\xff] (neg)++ 12962 [b-y]*+ 12963 a 12964 [2-7]?+ 12965 [\x00-/:-`{-\xff] (neg)++ 12966 Ket 12967 End 12968------------------------------------------------------------------ 12969 12970/[a-z]*\s#[ \t]?\S#[a-c]*\S#[C-G]+?\d#[4-8]*\D#[4-9,]*\D#[!$]{0,5}\w#[M-Xf-l]+\W#[a-c,]?\W/B 12971------------------------------------------------------------------ 12972 Bra 12973 [a-z]*+ 12974 \s 12975 # 12976 [\x09 ]?+ 12977 \S 12978 # 12979 [a-c]* 12980 \S 12981 # 12982 [C-G]++ 12983 \d 12984 # 12985 [4-8]*+ 12986 \D 12987 # 12988 [,4-9]* 12989 \D 12990 # 12991 [!$]{0,5}+ 12992 \w 12993 # 12994 [M-Xf-l]++ 12995 \W 12996 # 12997 [,a-c]? 12998 \W 12999 Ket 13000 End 13001------------------------------------------------------------------ 13002 13003/a+(aa|bb)*c#a*(bb|cc)*a#a?(bb|cc)*d#[a-f]*(g|hh)*f/B 13004------------------------------------------------------------------ 13005 Bra 13006 a+ 13007 Brazero 13008 CBra 1 13009 aa 13010 Alt 13011 bb 13012 KetRmax 13013 c# 13014 a* 13015 Brazero 13016 CBra 2 13017 bb 13018 Alt 13019 cc 13020 KetRmax 13021 a# 13022 a?+ 13023 Brazero 13024 CBra 3 13025 bb 13026 Alt 13027 cc 13028 KetRmax 13029 d# 13030 [a-f]* 13031 Brazero 13032 CBra 4 13033 g 13034 Alt 13035 hh 13036 KetRmax 13037 f 13038 Ket 13039 End 13040------------------------------------------------------------------ 13041 13042/[a-f]*(g|hh|i)*i#[a-x]{4,}(y{0,6})*y#[a-k]+(ll|mm)+n/B 13043------------------------------------------------------------------ 13044 Bra 13045 [a-f]*+ 13046 Brazero 13047 CBra 1 13048 g 13049 Alt 13050 hh 13051 Alt 13052 i 13053 KetRmax 13054 i# 13055 [a-x]{4,} 13056 Brazero 13057 SCBra 2 13058 y{0,6} 13059 KetRmax 13060 y# 13061 [a-k]++ 13062 CBra 3 13063 ll 13064 Alt 13065 mm 13066 KetRmax 13067 n 13068 Ket 13069 End 13070------------------------------------------------------------------ 13071 13072/[a-f]*(?>gg|hh)+#[a-f]*(?>gg|hh)?#[a-f]*(?>gg|hh)*a#[a-f]*(?>gg|hh)*h/B 13073------------------------------------------------------------------ 13074 Bra 13075 [a-f]*+ 13076 Once 13077 gg 13078 Alt 13079 hh 13080 KetRmax 13081 # 13082 [a-f]*+ 13083 Brazero 13084 Once 13085 gg 13086 Alt 13087 hh 13088 Ket 13089 # 13090 [a-f]* 13091 Brazero 13092 Once 13093 gg 13094 Alt 13095 hh 13096 KetRmax 13097 a# 13098 [a-f]*+ 13099 Brazero 13100 Once 13101 gg 13102 Alt 13103 hh 13104 KetRmax 13105 h 13106 Ket 13107 End 13108------------------------------------------------------------------ 13109 13110/[a-c]*d/IB 13111------------------------------------------------------------------ 13112 Bra 13113 [a-c]*+ 13114 d 13115 Ket 13116 End 13117------------------------------------------------------------------ 13118Capture group count = 0 13119Starting code units: a b c d 13120Last code unit = 'd' 13121Subject length lower bound = 1 13122 13123/[a-c]+d/IB 13124------------------------------------------------------------------ 13125 Bra 13126 [a-c]++ 13127 d 13128 Ket 13129 End 13130------------------------------------------------------------------ 13131Capture group count = 0 13132Starting code units: a b c 13133Last code unit = 'd' 13134Subject length lower bound = 2 13135 13136/[a-c]?d/IB 13137------------------------------------------------------------------ 13138 Bra 13139 [a-c]?+ 13140 d 13141 Ket 13142 End 13143------------------------------------------------------------------ 13144Capture group count = 0 13145Starting code units: a b c d 13146Last code unit = 'd' 13147Subject length lower bound = 1 13148 13149/[a-c]{4,6}d/IB 13150------------------------------------------------------------------ 13151 Bra 13152 [a-c]{4,6}+ 13153 d 13154 Ket 13155 End 13156------------------------------------------------------------------ 13157Capture group count = 0 13158Starting code units: a b c 13159Last code unit = 'd' 13160Subject length lower bound = 5 13161 13162/[a-c]{0,6}d/IB 13163------------------------------------------------------------------ 13164 Bra 13165 [a-c]{0,6}+ 13166 d 13167 Ket 13168 End 13169------------------------------------------------------------------ 13170Capture group count = 0 13171Starting code units: a b c d 13172Last code unit = 'd' 13173Subject length lower bound = 1 13174 13175# End of special auto-possessive tests 13176 13177/^A\o{1239}B/ 13178Failed: error 164 at offset 8: non-octal character in \o{} (closing brace missing?) 13179 A\123B 13180 13181/^A\oB/ 13182Failed: error 155 at offset 4: missing opening brace after \o 13183 13184/^A\x{zz}B/ 13185Failed: error 167 at offset 5: non-hex character in \x{} (closing brace missing?) 13186 13187/^A\x{12Z/ 13188Failed: error 167 at offset 7: non-hex character in \x{} (closing brace missing?) 13189 13190/^A\x{/ 13191Failed: error 178 at offset 5: digits missing in \x{} or \o{} or \N{U+} 13192 13193/[ab]++/B,no_auto_possess 13194------------------------------------------------------------------ 13195 Bra 13196 [ab]++ 13197 Ket 13198 End 13199------------------------------------------------------------------ 13200 13201/[^ab]*+/B,no_auto_possess 13202------------------------------------------------------------------ 13203 Bra 13204 [\x00-`c-\xff] (neg)*+ 13205 Ket 13206 End 13207------------------------------------------------------------------ 13208 13209/a{4}+/B,no_auto_possess 13210------------------------------------------------------------------ 13211 Bra 13212 a{4} 13213 Ket 13214 End 13215------------------------------------------------------------------ 13216 13217/a{4}+/Bi,no_auto_possess 13218------------------------------------------------------------------ 13219 Bra 13220 /i a{4} 13221 Ket 13222 End 13223------------------------------------------------------------------ 13224 13225/[a-[:digit:]]+/ 13226Failed: error 150 at offset 4: invalid range in character class 13227 13228/[A-[:digit:]]+/ 13229Failed: error 150 at offset 4: invalid range in character class 13230 13231/[a-[.xxx.]]+/ 13232Failed: error 150 at offset 4: invalid range in character class 13233 13234/[a-[=xxx=]]+/ 13235Failed: error 150 at offset 4: invalid range in character class 13236 13237/[a-[!xxx!]]+/ 13238Failed: error 108 at offset 3: range out of order in character class 13239 13240/[A-[!xxx!]]+/ 13241 A]]] 13242 0: A]]] 13243 13244/[a-\d]+/ 13245Failed: error 150 at offset 5: invalid range in character class 13246 13247/(?<0abc>xx)/ 13248Failed: error 144 at offset 3: subpattern name must start with a non-digit 13249 13250/(?&1abc)xx(?<1abc>y)/ 13251Failed: error 144 at offset 3: subpattern name must start with a non-digit 13252 13253/(?<ab-cd>xx)/ 13254Failed: error 142 at offset 5: syntax error in subpattern name (missing terminator?) 13255 13256/(?'0abc'xx)/ 13257Failed: error 144 at offset 3: subpattern name must start with a non-digit 13258 13259/(?P<0abc>xx)/ 13260Failed: error 144 at offset 4: subpattern name must start with a non-digit 13261 13262/\k<5ghj>/ 13263Failed: error 144 at offset 3: subpattern name must start with a non-digit 13264 13265/\k'5ghj'/ 13266Failed: error 144 at offset 3: subpattern name must start with a non-digit 13267 13268/\k{2fgh}/ 13269Failed: error 144 at offset 3: subpattern name must start with a non-digit 13270 13271/(?P=8yuki)/ 13272Failed: error 144 at offset 4: subpattern name must start with a non-digit 13273 13274/\g{4df}/ 13275Failed: error 157 at offset 2: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number 13276 13277/(?&1abc)xx(?<1abc>y)/ 13278Failed: error 144 at offset 3: subpattern name must start with a non-digit 13279 13280/(?P>1abc)xx(?<1abc>y)/ 13281Failed: error 144 at offset 4: subpattern name must start with a non-digit 13282 13283/\g'3gh'/ 13284Failed: error 157 at offset 2: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number 13285 13286/\g<5fg>/ 13287Failed: error 157 at offset 2: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number 13288 13289/(?(<4gh>)abc)/ 13290Failed: error 144 at offset 4: subpattern name must start with a non-digit 13291 13292/(?('4gh')abc)/ 13293Failed: error 144 at offset 4: subpattern name must start with a non-digit 13294 13295/(?(4gh)abc)/ 13296Failed: error 124 at offset 4: missing closing parenthesis for condition 13297 13298/(?(R&6yh)abc)/ 13299Failed: error 144 at offset 5: subpattern name must start with a non-digit 13300 13301/(((a\2)|(a*)\g<-1>))*a?/B 13302------------------------------------------------------------------ 13303 Bra 13304 Brazero 13305 SCBra 1 13306 CBra 2 13307 CBra 3 13308 a 13309 \2 13310 Ket 13311 Alt 13312 CBra 4 13313 a* 13314 Ket 13315 Recurse 13316 Ket 13317 KetRmax 13318 a?+ 13319 Ket 13320 End 13321------------------------------------------------------------------ 13322 13323# Test the ugly "start or end of word" compatibility syntax. 13324 13325/[[:<:]]red[[:>:]]/B 13326------------------------------------------------------------------ 13327 Bra 13328 \b 13329 Assert 13330 \w 13331 Ket 13332 red 13333 \b 13334 Assert back 13335 Reverse 13336 \w 13337 Ket 13338 Ket 13339 End 13340------------------------------------------------------------------ 13341 little red riding hood 13342 0: red 13343 a /red/ thing 13344 0: red 13345 red is a colour 13346 0: red 13347 put it all on red 13348 0: red 13349\= Expect no match 13350 no reduction 13351No match 13352 Alfred Winifred 13353No match 13354 13355/[a[:<:]] should give error/ 13356Failed: error 130 at offset 4: unknown POSIX class name 13357 13358/(?=ab\K)/aftertext,allow_lookaround_bsk 13359 abcd\=startchar 13360Start of matched string is beyond its end - displaying from end to start. 13361 0: ab 13362 0+ abcd 13363 13364/abcd/newline=lf,firstline 13365\= Expect no match 13366 xx\nxabcd 13367No match 13368 13369# Test stack guard external calls. 13370 13371/(((a)))/stackguard=1 13372Failed: error 133 at offset 7: parentheses are too deeply nested (stack check) 13373 13374/(((a)))/stackguard=2 13375Failed: error 133 at offset 7: parentheses are too deeply nested (stack check) 13376 13377/(((a)))/stackguard=3 13378 13379/(((((a)))))/ 13380 13381# End stack guard tests 13382 13383/^\w+(?>\s*)(?<=\w)/B 13384------------------------------------------------------------------ 13385 Bra 13386 ^ 13387 \w+ 13388 Once 13389 \s*+ 13390 Ket 13391 Assert back 13392 Reverse 13393 \w 13394 Ket 13395 Ket 13396 End 13397------------------------------------------------------------------ 13398 13399/\othing/ 13400Failed: error 155 at offset 2: missing opening brace after \o 13401 13402/\o{}/ 13403Failed: error 178 at offset 3: digits missing in \x{} or \o{} or \N{U+} 13404 13405/\o{whatever}/ 13406Failed: error 164 at offset 3: non-octal character in \o{} (closing brace missing?) 13407 13408/\xthing/ 13409 13410/\x{}/ 13411Failed: error 178 at offset 3: digits missing in \x{} or \o{} or \N{U+} 13412 13413/\x{whatever}/ 13414Failed: error 167 at offset 3: non-hex character in \x{} (closing brace missing?) 13415 13416/A\8B/ 13417Failed: error 115 at offset 2: reference to non-existent subpattern 13418 13419/A\9B/ 13420Failed: error 115 at offset 2: reference to non-existent subpattern 13421 13422# This one is here because Perl fails to match "12" for this pattern when the $ 13423# is present. 13424 13425/^(?(?=abc)\w{3}:|\d\d)$/ 13426 abc: 13427 0: abc: 13428 12 13429 0: 12 13430\= Expect no match 13431 123 13432No match 13433 xyz 13434No match 13435 13436# Perl gets this one wrong, giving "a" as the after text for ca and failing to 13437# match for cd. 13438 13439/(?(?=ab)ab)/aftertext 13440 abxxx 13441 0: ab 13442 0+ xxx 13443 ca 13444 0: 13445 0+ ca 13446 cd 13447 0: 13448 0+ cd 13449 13450# This should test both paths for processing OP_RECURSE. 13451 13452/(?(R)a+|(?R)b)/ 13453 aaaabcde 13454 0: aaaab 13455 aaaabcde\=ovector=100 13456 0: aaaab 13457 13458/a*?b*?/ 13459 ab 13460 0: 13461 13462/(*NOTEMPTY)a*?b*?/ 13463 ab 13464 0: a 13465 ba 13466 0: b 13467 cb 13468 0: b 13469 13470/(*NOTEMPTY_ATSTART)a*?b*?/aftertext 13471 ab 13472 0: a 13473 0+ b 13474 cdab 13475 0: 13476 0+ dab 13477 13478/(?(VERSION>=10.0)yes|no)/I 13479Capture group count = 0 13480Subject length lower bound = 2 13481 yesno 13482 0: yes 13483 13484/(?(VERSION>=10.04)yes|no)/ 13485 yesno 13486 0: yes 13487 13488/(?(VERSION=8)yes){3}/BI,aftertext 13489------------------------------------------------------------------ 13490 Bra 13491 Cond 13492 Cond false 13493 yes 13494 Ket 13495 Ket 13496 End 13497------------------------------------------------------------------ 13498Capture group count = 0 13499May match empty string 13500Subject length lower bound = 0 13501 yesno 13502 0: 13503 0+ yesno 13504 13505/(?(VERSION=8)yes|no){3}/I 13506Capture group count = 0 13507Subject length lower bound = 6 13508 yesnononoyes 13509 0: nonono 13510\= Expect no match 13511 yesno 13512No match 13513 13514/(?:(?<VERSION>abc)|xyz)(?(VERSION)yes|no)/I 13515Capture group count = 1 13516Max back reference = 1 13517Named capture groups: 13518 VERSION 1 13519Starting code units: a x 13520Subject length lower bound = 5 13521 abcyes 13522 0: abcyes 13523 1: abc 13524 xyzno 13525 0: xyzno 13526\= Expect no match 13527 abcno 13528No match 13529 xyzyes 13530No match 13531 13532/(?(VERSION<10)yes|no)/ 13533Failed: error 179 at offset 10: syntax error or number too big in (?(VERSION condition 13534 13535/(?(VERSION>10)yes|no)/ 13536Failed: error 179 at offset 11: syntax error or number too big in (?(VERSION condition 13537 13538/(?(VERSION>=10.0.0)yes|no)/ 13539Failed: error 179 at offset 16: syntax error or number too big in (?(VERSION condition 13540 13541/(?(VERSION=10.101)yes|no)/ 13542Failed: error 179 at offset 16: syntax error or number too big in (?(VERSION condition 13543 13544/abcd/I 13545Capture group count = 0 13546First code unit = 'a' 13547Last code unit = 'd' 13548Subject length lower bound = 4 13549 13550/abcd/I,no_start_optimize 13551Capture group count = 0 13552Options: no_start_optimize 13553 13554/(|ab)*?d/I 13555Capture group count = 1 13556Starting code units: a d 13557Last code unit = 'd' 13558Subject length lower bound = 1 13559 abd 13560 0: abd 13561 1: ab 13562 xyd 13563 0: d 13564 13565/(|ab)*?d/I,no_start_optimize 13566Capture group count = 1 13567Options: no_start_optimize 13568 abd 13569 0: abd 13570 1: ab 13571 xyd 13572 0: d 13573 13574/\k<A>*(?<A>aa)(?<A>bb)/match_unset_backref,dupnames 13575 aabb 13576 0: aabb 13577 1: aa 13578 2: bb 13579 13580/(((((a)))))/parens_nest_limit=2 13581Failed: error 119 at offset 3: parentheses are too deeply nested 13582 13583/abc/replace=XYZ 13584 123123 13585 0: 123123 13586 123abc123 13587 1: 123XYZ123 13588 123abc123abc123 13589 1: 123XYZ123abc123 13590 123123\=zero_terminate 13591 0: 123123 13592 123abc123\=zero_terminate 13593 1: 123XYZ123 13594 123abc123abc123\=zero_terminate 13595 1: 123XYZ123abc123 13596 13597/abc/g,replace=XYZ 13598 123abc123 13599 1: 123XYZ123 13600 123abc123abc123 13601 2: 123XYZ123XYZ123 13602 13603/abc/replace=X$$Z 13604 123abc123 13605 1: 123X$Z123 13606 13607/abc/g,replace=X$$Z 13608 123abc123abc123 13609 2: 123X$Z123X$Z123 13610 13611/a(b)c(d)e/replace=X$1Y${2}Z 13612 "abcde" 13613 1: "XbYdZ" 13614 13615/a(b)c(d)e/replace=X$1Y${2}Z,global 13616 "abcde-abcde" 13617 2: "XbYdZ-XbYdZ" 13618 13619/a(?<ONE>b)c(?<TWO>d)e/replace=X$ONE+${TWO}Z 13620 "abcde" 13621 1: "Xb+dZ" 13622 13623/a(?<ONE>b)c(?<TWO>d)e/g,replace=X$ONE+${TWO}Z 13624 "abcde-abcde-" 13625 2: "Xb+dZ-Xb+dZ-" 13626 13627/abc/replace=a$++ 13628 123abc 13629Failed: error -35 at offset 2 in replacement: invalid replacement string 13630 13631/abc/replace=a$bad 13632 123abc 13633Failed: error -49 at offset 5 in replacement: unknown substring 13634 13635/abc/replace=a${A234567890123456789_123456789012}z 13636 123abc 13637Failed: error -49 at offset 36 in replacement: unknown substring 13638 13639/abc/replace=a${A23456789012345678901234567890123}z 13640 123abc 13641Failed: error -35 at offset 35 in replacement: invalid replacement string 13642 13643/abc/replace=a${bcd 13644 123abc 13645Failed: error -58 at offset 6 in replacement: expected closing curly bracket in replacement string 13646 13647/abc/replace=a${b+d}z 13648 123abc 13649Failed: error -58 at offset 4 in replacement: expected closing curly bracket in replacement string 13650 13651/abc/replace=[10]XYZ 13652 123abc123 13653 1: 123XYZ123 13654 13655/abc/replace=[9]XYZ 13656 123abc123 13657Failed: error -48: no more memory 13658 13659/abc/replace=xyz 13660 1abc2\=partial_hard 13661Failed: error -34: bad option value 13662 13663/abc/replace=xyz 13664 123abc456 13665 1: 123xyz456 13666 123abc456\=replace=pqr 13667 1: 123pqr456 13668 123abc456abc789 13669 1: 123xyz456abc789 13670 123abc456abc789\=g 13671 2: 123xyz456xyz789 13672 13673/(?<=abc)(|def)/g,replace=<$0> 13674 123abcxyzabcdef789abcpqr 13675 4: 123abc<>xyzabc<><def>789abc<>pqr 13676 13677/./replace=$0 13678 a 13679 1: a 13680 13681/(.)(.)/replace=$2+$1 13682 abc 13683 1: b+ac 13684 13685/(?<A>.)(?<B>.)/replace=$B+$A 13686 abc 13687 1: b+ac 13688 13689/(.)(.)/g,replace=$2$1 13690 abcdefgh 13691 4: badcfehg 13692 13693/(*:pear)apple|(*:orange)lemon|(*:strawberry)blackberry/g,replace=${*MARK} 13694 apple lemon blackberry 13695 3: pear orange strawberry 13696 apple strudel 13697 1: pear strudel 13698 fruitless 13699 0: fruitless 13700 13701/(*:pear)apple|(*:orange)lemon|(*:strawberry)blackberry/replace=${*MARK} sauce, 13702 apple lemon blackberry 13703 1: pear sauce lemon blackberry 13704 13705/(*:pear)apple|(*:orange)lemon|(*:strawberry)blackberry/g,replace=<$*MARK> 13706 apple lemon blackberry 13707 3: <pear> <orange> <strawberry> 13708 apple strudel 13709 1: <pear> strudel 13710 fruitless 13711 0: fruitless 13712 13713/(*:pear)apple/g,replace=${*MARKING} 13714 apple lemon blackberry 13715Failed: error -35 at offset 11 in replacement: invalid replacement string 13716 13717/(*:pear)apple/g,replace=${*MARK-time 13718 apple lemon blackberry 13719Failed: error -58 at offset 7 in replacement: expected closing curly bracket in replacement string 13720 13721/(*:pear)apple/g,replace=${*mark} 13722 apple lemon blackberry 13723Failed: error -35 at offset 8 in replacement: invalid replacement string 13724 13725/(*:pear)apple|(*:orange)lemon|(*:strawberry)blackberry/g,replace=<$*MARKET> 13726 apple lemon blackberry 13727Failed: error -35 at offset 9 in replacement: invalid replacement string 13728 13729/(*:pear)apple|(*:orange)lemon|(*:strawberry)blackberry/g,replace=[22]${*MARK} 13730 apple lemon blackberry 13731Failed: error -48: no more memory 13732 apple lemon blackberry\=substitute_overflow_length 13733Failed: error -48: no more memory: 23 code units are needed 13734 13735/(*:pear)apple|(*:orange)lemon|(*:strawberry)blackberry/g,replace=[23]${*MARK} 13736 apple lemon blackberry 13737 3: pear orange strawberry 13738 13739/abc/ 13740 123abc123\=replace=[9]XYZ 13741Failed: error -48: no more memory 13742 123abc123\=substitute_overflow_length,replace=[9]XYZ 13743Failed: error -48: no more memory: 10 code units are needed 13744 123abc123\=substitute_overflow_length,replace=[6]XYZ 13745Failed: error -48: no more memory: 10 code units are needed 13746 123abc123\=substitute_overflow_length,replace=[1]XYZ 13747Failed: error -48: no more memory: 10 code units are needed 13748 123abc123\=substitute_overflow_length,replace=[0]XYZ 13749Failed: error -48: no more memory: 10 code units are needed 13750 13751/a(b)c/ 13752 123abc123\=replace=[9]x$1z 13753Failed: error -48: no more memory 13754 123abc123\=substitute_overflow_length,replace=[9]x$1z 13755Failed: error -48: no more memory: 10 code units are needed 13756 123abc123\=substitute_overflow_length,replace=[6]x$1z 13757Failed: error -48: no more memory: 10 code units are needed 13758 123abc123\=substitute_overflow_length,replace=[1]x$1z 13759Failed: error -48: no more memory: 10 code units are needed 13760 123abc123\=substitute_overflow_length,replace=[0]x$1z 13761Failed: error -48: no more memory: 10 code units are needed 13762 13763"((?=(?(?=(?(?=(?(?=()))))))))" 13764 a 13765 0: 13766 1: 13767 2: 13768 13769"(?(?=)==)(((((((((?=)))))))))" 13770\= Expect no match 13771 a 13772No match 13773 13774/(a)(b)|(c)/ 13775 XcX\=ovector=2,get=1,get=2,get=3,get=4,getall 13776Matched, but too many substrings 13777 0: c 13778 1: <unset> 13779Get substring 1 failed (-55): requested value is not set 13780Get substring 2 failed (-54): requested value is not available 13781Get substring 3 failed (-54): requested value is not available 13782Get substring 4 failed (-49): unknown substring 13783 0L c 13784 1L 13785 13786/x(?=ab\K)/allow_lookaround_bsk 13787 xab\=get=0 13788Start of matched string is beyond its end - displaying from end to start. 13789 0: ab 13790 0G (0) 13791 xab\=copy=0 13792Start of matched string is beyond its end - displaying from end to start. 13793 0: ab 13794 0C (0) 13795 xab\=getall 13796Start of matched string is beyond its end - displaying from end to start. 13797 0: ab 13798 0L 13799 13800/(?<A>a)|(?<A>b)/dupnames 13801 a\=ovector=1,copy=A,get=A,get=2 13802Matched, but too many substrings 13803 0: a 13804Copy substring 'A' failed (-54): requested value is not available 13805Get substring 2 failed (-54): requested value is not available 13806Get substring 'A' failed (-54): requested value is not available 13807 a\=ovector=2,copy=A,get=A,get=2 13808 0: a 13809 1: a 13810 C a (1) A (non-unique) 13811Get substring 2 failed (-54): requested value is not available 13812 G a (1) A (non-unique) 13813 b\=ovector=2,copy=A,get=A,get=2 13814Matched, but too many substrings 13815 0: b 13816 1: <unset> 13817Copy substring 'A' failed (-55): requested value is not set 13818Get substring 2 failed (-54): requested value is not available 13819Get substring 'A' failed (-55): requested value is not set 13820 13821/a(b)c(d)/ 13822 abc\=ph,copy=0,copy=1,getall 13823Partial match: abc 13824 0C abc (3) 13825Copy substring 1 failed (-2): partial match 13826get substring list failed (-2): partial match 13827 13828/^abc/info 13829Capture group count = 0 13830Compile options: <none> 13831Overall options: anchored 13832First code unit = 'a' 13833Subject length lower bound = 3 13834 13835/^abc/info,no_dotstar_anchor 13836Capture group count = 0 13837Compile options: no_dotstar_anchor 13838Overall options: anchored no_dotstar_anchor 13839First code unit = 'a' 13840Subject length lower bound = 3 13841 13842/.*\d/info,auto_callout 13843Capture group count = 0 13844Options: auto_callout 13845First code unit at start or follows newline 13846Subject length lower bound = 1 13847\= Expect no match 13848 aaa 13849--->aaa 13850 +0 ^ .* 13851 +2 ^ ^ \d 13852 +2 ^ ^ \d 13853 +2 ^^ \d 13854 +2 ^ \d 13855No match 13856 13857/.*\d/info,no_dotstar_anchor,auto_callout 13858Capture group count = 0 13859Options: auto_callout no_dotstar_anchor 13860Subject length lower bound = 1 13861\= Expect no match 13862 aaa 13863--->aaa 13864 +0 ^ .* 13865 +2 ^ ^ \d 13866 +2 ^ ^ \d 13867 +2 ^^ \d 13868 +2 ^ \d 13869 +0 ^ .* 13870 +2 ^ ^ \d 13871 +2 ^^ \d 13872 +2 ^ \d 13873 +0 ^ .* 13874 +2 ^^ \d 13875 +2 ^ \d 13876No match 13877 13878/.*\d/dotall,info 13879Capture group count = 0 13880Compile options: dotall 13881Overall options: anchored dotall 13882Subject length lower bound = 1 13883 13884/.*\d/dotall,no_dotstar_anchor,info 13885Capture group count = 0 13886Options: dotall no_dotstar_anchor 13887Subject length lower bound = 1 13888 13889/(*NO_DOTSTAR_ANCHOR)(?s).*\d/info 13890Capture group count = 0 13891Compile options: <none> 13892Overall options: no_dotstar_anchor 13893Subject length lower bound = 1 13894 13895'^(?:(a)|b)(?(1)A|B)' 13896 aA123\=ovector=1 13897Matched, but too many substrings 13898 0: aA 13899 aA123\=ovector=2 13900 0: aA 13901 1: a 13902 13903'^(?:(?<AA>a)|b)(?(<AA>)A|B)' 13904 aA123\=ovector=1 13905Matched, but too many substrings 13906 0: aA 13907 aA123\=ovector=2 13908 0: aA 13909 1: a 13910 13911'^(?<AA>)(?:(?<AA>a)|b)(?(<AA>)A|B)'dupnames 13912 aA123\=ovector=1 13913Matched, but too many substrings 13914 0: aA 13915 aA123\=ovector=2 13916Matched, but too many substrings 13917 0: aA 13918 1: 13919 aA123\=ovector=3 13920 0: aA 13921 1: 13922 2: a 13923 13924'^(?:(?<AA>X)|)(?:(?<AA>a)|b)\k{AA}'dupnames 13925 aa123\=ovector=1 13926Matched, but too many substrings 13927 0: aa 13928 aa123\=ovector=2 13929Matched, but too many substrings 13930 0: aa 13931 1: <unset> 13932 aa123\=ovector=3 13933 0: aa 13934 1: <unset> 13935 2: a 13936 13937/(?<N111>(?J)(?<N111>1(111111)11|)1|1|)(?(<N111>)1)/ 13938 13939/(?<N>(?J)(?<N>))(?-J)\k<N>/ 13940 13941# Quantifiers are not allowed on condition assertions, but are otherwise 13942# OK in conditions. 13943 13944/(?(?=0)?)+/ 13945Failed: error 109 at offset 7: quantifier does not follow a repeatable item 13946 13947/(?(?=0)(?=00)?00765)/ 13948 00765 13949 0: 00765 13950 13951/(?(?=0)(?=00)?00765|(?!3).56)/ 13952 00765 13953 0: 00765 13954 456 13955 0: 456 13956\= Expect no match 13957 356 13958No match 13959 13960'^(a)*+(\w)' 13961 g 13962 0: g 13963 1: <unset> 13964 2: g 13965 g\=ovector=1 13966Matched, but too many substrings 13967 0: g 13968 13969'^(?:a)*+(\w)' 13970 g 13971 0: g 13972 1: g 13973 g\=ovector=1 13974Matched, but too many substrings 13975 0: g 13976 13977# These two pattern showeds up compile-time bugs 13978 13979"((?2){0,1999}())?" 13980 13981/((?+1)(\1))/B 13982------------------------------------------------------------------ 13983 Bra 13984 CBra 1 13985 Recurse 13986 CBra 2 13987 \1 13988 Ket 13989 Ket 13990 Ket 13991 End 13992------------------------------------------------------------------ 13993 13994# Callouts with string arguments 13995 13996/a(?C"/ 13997Failed: error 181 at offset 4: missing terminating delimiter for callout with string argument 13998 13999/a(?C"a/ 14000Failed: error 181 at offset 4: missing terminating delimiter for callout with string argument 14001 14002/a(?C"a"/ 14003Failed: error 139 at offset 7: closing parenthesis for (?C expected 14004 14005/a(?C"a"bcde(?C"b")xyz/ 14006Failed: error 139 at offset 7: closing parenthesis for (?C expected 14007 14008/a(?C"a)b""c")/B 14009------------------------------------------------------------------ 14010 Bra 14011 a 14012 CalloutStr "a)b"c" 5 13 0 14013 Ket 14014 End 14015------------------------------------------------------------------ 14016 14017/ab(?C" any text with spaces ")cde/B 14018------------------------------------------------------------------ 14019 Bra 14020 ab 14021 CalloutStr " any text with spaces " 6 30 1 14022 cde 14023 Ket 14024 End 14025------------------------------------------------------------------ 14026 abcde 14027Callout (6): " any text with spaces " 14028--->abcde 14029 ^ ^ c 14030 0: abcde 14031 12abcde 14032Callout (6): " any text with spaces " 14033--->12abcde 14034 ^ ^ c 14035 0: abcde 14036 14037/^a(b)c(?C1)def/ 14038 abcdef 14039--->abcdef 14040 1 ^ ^ d 14041 0: abcdef 14042 1: b 14043 14044/^a(b)c(?C"AB")def/ 14045 abcdef 14046Callout (10): "AB" 14047--->abcdef 14048 ^ ^ d 14049 0: abcdef 14050 1: b 14051 14052/^a(b)c(?C1)def/ 14053 abcdef\=callout_capture 14054Callout 1: last capture = 1 14055 1: b 14056--->abcdef 14057 ^ ^ d 14058 0: abcdef 14059 1: b 14060 14061/^a(b)c(?C{AB})def/B 14062------------------------------------------------------------------ 14063 Bra 14064 ^ 14065 a 14066 CBra 1 14067 b 14068 Ket 14069 c 14070 CalloutStr {AB} 10 14 1 14071 def 14072 Ket 14073 End 14074------------------------------------------------------------------ 14075 abcdef\=callout_capture 14076Callout (10): {AB} last capture = 1 14077 1: b 14078--->abcdef 14079 ^ ^ d 14080 0: abcdef 14081 1: b 14082 14083/(?C`a``b`)(?C'a''b')(?C"a""b")(?C^a^^b^)(?C%a%%b%)(?C#a##b#)(?C$a$$b$)(?C{a}}b})/B,callout_info 14084------------------------------------------------------------------ 14085 Bra 14086 CalloutStr `a`b` 4 10 0 14087 CalloutStr 'a'b' 14 20 0 14088 CalloutStr "a"b" 24 30 0 14089 CalloutStr ^a^b^ 34 40 0 14090 CalloutStr %a%b% 44 50 0 14091 CalloutStr #a#b# 54 60 0 14092 CalloutStr $a$b$ 64 70 0 14093 CalloutStr {a}b} 74 80 0 14094 Ket 14095 End 14096------------------------------------------------------------------ 14097Callout `a`b` ( 14098Callout 'a'b' ( 14099Callout "a"b" ( 14100Callout ^a^b^ ( 14101Callout %a%b% ( 14102Callout #a#b# ( 14103Callout $a$b$ ( 14104Callout {a}b} 14105 14106/(?:a(?C`code`)){3}/B 14107------------------------------------------------------------------ 14108 Bra 14109 Bra 14110 a 14111 CalloutStr `code` 8 14 4 14112 Ket 14113 Bra 14114 a 14115 CalloutStr `code` 8 14 4 14116 Ket 14117 Bra 14118 a 14119 CalloutStr `code` 8 14 4 14120 Ket 14121 Ket 14122 End 14123------------------------------------------------------------------ 14124 14125/^(?(?C25)(?=abc)abcd|xyz)/B,callout_info 14126------------------------------------------------------------------ 14127 Bra 14128 ^ 14129 Cond 14130 Callout 25 9 3 14131 Assert 14132 abc 14133 Ket 14134 abcd 14135 Alt 14136 xyz 14137 Ket 14138 Ket 14139 End 14140------------------------------------------------------------------ 14141Callout 25 (?= 14142 abcdefg 14143--->abcdefg 14144 25 ^ (?= 14145 0: abcd 14146 xyz123 14147--->xyz123 14148 25 ^ (?= 14149 0: xyz 14150 14151/^(?(?C$abc$)(?=abc)abcd|xyz)/B 14152------------------------------------------------------------------ 14153 Bra 14154 ^ 14155 Cond 14156 CalloutStr $abc$ 7 12 3 14157 Assert 14158 abc 14159 Ket 14160 abcd 14161 Alt 14162 xyz 14163 Ket 14164 Ket 14165 End 14166------------------------------------------------------------------ 14167 abcdefg 14168Callout (7): $abc$ 14169--->abcdefg 14170 ^ (?= 14171 0: abcd 14172 xyz123 14173Callout (7): $abc$ 14174--->xyz123 14175 ^ (?= 14176 0: xyz 14177 14178/^ab(?C'first')cd(?C"second")ef/ 14179 abcdefg 14180Callout (7): 'first' 14181--->abcdefg 14182 ^ ^ c 14183Callout (20): "second" 14184--->abcdefg 14185 ^ ^ e 14186 0: abcdef 14187 14188/(?:a(?C`code`)){3}X/ 14189 aaaXY 14190Callout (8): `code` 14191--->aaaXY 14192 ^^ ){3} 14193Callout (8): `code` 14194--->aaaXY 14195 ^ ^ ){3} 14196Callout (8): `code` 14197--->aaaXY 14198 ^ ^ ){3} 14199 0: aaaX 14200 14201# Binary zero in callout string 14202# a ( ? C ' x z ' ) b 14203/ 61 28 3f 43 27 78 00 7a 27 29 62/hex,callout_info 14204Callout 'x\x00z' b 14205 abcdefgh 14206Callout (5): 'x\x00z' 14207--->abcdefgh 14208 ^^ b 14209 0: ab 14210 14211/(?(?!)^)/ 14212 14213/(?(?!)a|b)/ 14214 bbb 14215 0: b 14216\= Expect no match 14217 aaa 14218No match 14219 14220# JIT gives a different error message for the infinite recursion 14221 14222"(*NO_JIT)((?2)+)((?1)){" 14223 abcd{ 14224Failed: error -52: nested recursion at the same subject position 14225 14226# Perl fails to diagnose the absence of an assertion 14227 14228"(?(?<E>.*!.*)?)" 14229Failed: error 128 at offset 2: assertion expected after (?( or (?(?C) 14230 14231"X((?2)()*+){2}+"B 14232------------------------------------------------------------------ 14233 Bra 14234 X 14235 Once 14236 CBra 1 14237 Recurse 14238 Braposzero 14239 SCBraPos 2 14240 KetRpos 14241 Ket 14242 CBra 1 14243 Recurse 14244 Braposzero 14245 SCBraPos 2 14246 KetRpos 14247 Ket 14248 Ket 14249 Ket 14250 End 14251------------------------------------------------------------------ 14252 14253"X((?2)()*+){2}"B 14254------------------------------------------------------------------ 14255 Bra 14256 X 14257 CBra 1 14258 Recurse 14259 Braposzero 14260 SCBraPos 2 14261 KetRpos 14262 Ket 14263 CBra 1 14264 Recurse 14265 Braposzero 14266 SCBraPos 2 14267 KetRpos 14268 Ket 14269 Ket 14270 End 14271------------------------------------------------------------------ 14272 14273/(?<=\bABQ(3(?-7)))/ 14274Failed: error 115 at offset 15: reference to non-existent subpattern 14275 14276/(?<=\bABQ(3(?+7)))/ 14277Failed: error 115 at offset 15: reference to non-existent subpattern 14278 14279";(?<=()((?3))((?2)))" 14280Failed: error 125 at offset 1: lookbehind assertion is not fixed length 14281 14282# Perl loops on this (PCRE2 used to!) 14283 14284/(?<=\Ka)/g,aftertext,allow_lookaround_bsk 14285 aaaaa 14286 0: a 14287 0+ aaaa 14288 0: a 14289 0+ aaa 14290 0: a 14291 0+ aa 14292 0: a 14293 0+ a 14294 0: a 14295 0+ 14296 14297/(?<=\Ka)/altglobal,aftertext,allow_lookaround_bsk 14298 aaaaa 14299 0: a 14300 0+ aaaa 14301 0: a 14302 0+ aaa 14303 0: a 14304 0+ aa 14305 0: a 14306 0+ a 14307 0: a 14308 0+ 14309 14310/((?2){73}(?2))((?1))/info 14311Capture group count = 2 14312May match empty string 14313Subject length lower bound = 0 14314 14315/abc/ 14316\= Expect no match 14317 \[9x!xxx(]{9999} 14318No match 14319 14320/(abc)*/ 14321 \[abc]{5} 14322 0: abcabcabcabcabc 14323 1: abc 14324 14325/^/gm 14326 \n\n\n 14327 0: 14328 0: 14329 0: 14330 14331/^/gm,alt_circumflex 14332 \n\n\n 14333 0: 14334 0: 14335 0: 14336 0: 14337 14338/((((((((x))))))))\81/ 14339Failed: error 115 at offset 19: reference to non-existent subpattern 14340 xx1 14341 14342/((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((x))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))\80/ 14343 xx 14344Matched, but too many substrings 14345 0: xx 14346 1: x 14347 2: x 14348 3: x 14349 4: x 14350 5: x 14351 6: x 14352 7: x 14353 8: x 14354 9: x 1435510: x 1435611: x 1435712: x 1435813: x 1435914: x 14360 14361/\80/ 14362Failed: error 115 at offset 2: reference to non-existent subpattern 14363 14364/A\8B\9C/ 14365Failed: error 115 at offset 2: reference to non-existent subpattern 14366 A8B9C 14367 14368/(?x:((?'a')) # comment (with parentheses) and | vertical 14369(?-x:#not a comment (?'b')) # this is a comment () 14370(?'c')) # not a comment (?'d')/info 14371Capture group count = 5 14372Named capture groups: 14373 a 2 14374 b 3 14375 c 4 14376 d 5 14377First code unit = '#' 14378Last code unit = ' ' 14379Subject length lower bound = 32 14380 14381/(?|(?'a')(2)(?'b')|(?'a')(?'a')(3))/I,dupnames 14382Capture group count = 3 14383Named capture groups: 14384 a 1 14385 a 2 14386 b 3 14387Options: dupnames 14388Starting code units: 2 3 14389Subject length lower bound = 1 14390 A23B 14391 0: 2 14392 1: 14393 2: 2 14394 3: 14395 B32A 14396 0: 3 14397 1: 14398 2: 14399 3: 3 14400 14401# These are some patterns that used to cause buffer overflows or other errors 14402# while compiling. 14403 14404/.((?2)(?R)|\1|$)()/B 14405------------------------------------------------------------------ 14406 Bra 14407 Any 14408 CBra 1 14409 Recurse 14410 Recurse 14411 Alt 14412 \1 14413 Alt 14414 $ 14415 Ket 14416 CBra 2 14417 Ket 14418 Ket 14419 End 14420------------------------------------------------------------------ 14421 14422/.((?3)(?R)()(?2)|\1|$)()/B 14423------------------------------------------------------------------ 14424 Bra 14425 Any 14426 CBra 1 14427 Recurse 14428 Recurse 14429 CBra 2 14430 Ket 14431 Recurse 14432 Alt 14433 \1 14434 Alt 14435 $ 14436 Ket 14437 CBra 3 14438 Ket 14439 Ket 14440 End 14441------------------------------------------------------------------ 14442 14443/(\9*+(?2);\3++()2|)++{/ 14444Failed: error 115 at offset 2: reference to non-existent subpattern 14445 14446/\V\x85\9*+((?2)\3++()2)*:2/ 14447Failed: error 115 at offset 7: reference to non-existent subpattern 14448 14449/(((?(R)){0,2}) (?'x'((?'R')((?'R')))))/dupnames 14450 14451/(((?(X)){0,2}) (?'x'((?'X')((?'X')))))/dupnames 14452 14453/(((?(R)){0,2}) (?'x'((?'X')((?'R')))))/ 14454 14455"(?J)(?'d'(?'d'\g{d}))" 14456 14457"(?=!((?2)(?))({8(?<=(?1){29}8bbbb\x16\xd\xc6^($(\xa9H4){4}h}?1)B))\x15')" 14458Failed: error 125 at offset 16: lookbehind assertion is not fixed length 14459 14460/A(?'')Z/ 14461Failed: error 162 at offset 4: subpattern name expected 14462 14463"(?J:(?|(?'R')(\k'R')|((?'R'))))" 14464 14465/(?<=|(\,\$(?73591620449005828816)\xa8.{7}){6}\x09)/ 14466Failed: error 161 at offset 17: subpattern number is too big 14467 14468/^(?:(?(1)x|)+)+$()/B 14469------------------------------------------------------------------ 14470 Bra 14471 ^ 14472 SBra 14473 SCond 14474 1 Cond ref 14475 x 14476 Alt 14477 KetRmax 14478 KetRmax 14479 $ 14480 CBra 1 14481 Ket 14482 Ket 14483 End 14484------------------------------------------------------------------ 14485 14486/[[:>:]](?<)/ 14487Failed: error 162 at offset 10: subpattern name expected 14488 14489/((?x)(*:0))#(?'/ 14490Failed: error 162 at offset 15: subpattern name expected 14491 14492/(?C$[$)(?<]/ 14493Failed: error 162 at offset 10: subpattern name expected 14494 14495/(?C$)$)(?<]/ 14496Failed: error 162 at offset 10: subpattern name expected 14497 14498/(?(R))*+/B 14499------------------------------------------------------------------ 14500 Bra 14501 Braposzero 14502 SBraPos 14503 SCond 14504 Cond recurse any 14505 Ket 14506 KetRpos 14507 Ket 14508 End 14509------------------------------------------------------------------ 14510 abcd 14511 0: 14512 14513/((?x)(?#))#(?'/ 14514Failed: error 162 at offset 14: subpattern name expected 14515 14516/((?x)(?#))#(?'abc')/I 14517Capture group count = 2 14518Named capture groups: 14519 abc 2 14520First code unit = '#' 14521Subject length lower bound = 1 14522 14523/[[:\\](?<[::]/ 14524Failed: error 162 at offset 9: subpattern name expected 14525 14526/[[:\\](?'abc')[a:]/I 14527Capture group count = 1 14528Named capture groups: 14529 abc 1 14530Starting code units: : [ \ 14531Subject length lower bound = 2 14532 14533"[[[.\xe8Nq\xffq\xff\xe0\x2|||::Nq\xffq\xff\xe0\x6\x2|||::[[[:[::::::[[[[[::::::::[:[[[:[:::[[[[[[[[[[[[:::::::::::::::::[[.\xe8Nq\xffq\xff\xe0\x2|||::Nq\xffq\xff\xe0\x6\x2|||::[[[:[::::::[[[[[::::::::[:[[[:[:::[[[[[[[[[[[[[[:::E[[[:[:[[:[:::[[:::E[[[:[:[[:'[:::::E[[[:[::::::[[[:[[[[[[[::E[[[:[::::::[[[:[[[[[[[[:[[::[::::[[:::::::[[:[[[[[[[:[[::[:[[:[~" 14534Failed: error 106 at offset 353: missing terminating ] for character class 14535 14536/()(?(R)0)*+/B 14537------------------------------------------------------------------ 14538 Bra 14539 CBra 1 14540 Ket 14541 Braposzero 14542 SBraPos 14543 SCond 14544 Cond recurse any 14545 0 14546 Ket 14547 KetRpos 14548 Ket 14549 End 14550------------------------------------------------------------------ 14551 14552/(?R-:(?</ 14553Failed: error 158 at offset 3: (?R (recursive pattern call) must be followed by a closing parenthesis 14554 14555/(?R-:(?<)/ 14556Failed: error 158 at offset 3: (?R (recursive pattern call) must be followed by a closing parenthesis 14557 14558/(?(?C{\Q})(?!(?'/ 14559Failed: error 162 at offset 16: subpattern name expected 14560 14561/(?(?C{\Q})(?!(?'abc')))/I 14562Capture group count = 1 14563Named capture groups: 14564 abc 1 14565May match empty string 14566Subject length lower bound = 0 14567 14568/(?1){3918}(((((0(\k'R'))))(?J)(?'R'(?'R'\3){99})))/I 14569Capture group count = 8 14570Max back reference = 8 14571Named capture groups: 14572 R 7 14573 R 8 14574Duplicate name status changes 14575Last code unit = '0' 14576Subject length lower bound = 65535 14577 14578/(?|(aaa)|(b))\g{1}/I 14579Capture group count = 1 14580Max back reference = 1 14581Starting code units: a b 14582Subject length lower bound = 1 14583 14584/(?|(aaa)|(b))(?1)/I 14585Capture group count = 1 14586Starting code units: a b 14587Subject length lower bound = 4 14588 14589/(?|(aaa)|(b))/I 14590Capture group count = 1 14591Starting code units: a b 14592Subject length lower bound = 1 14593 14594/(?|(?'a'aaa)|(?'a'b))\k'a'/I 14595Capture group count = 1 14596Max back reference = 1 14597Named capture groups: 14598 a 1 14599Starting code units: a b 14600Subject length lower bound = 1 14601 14602/(?|(?'a'aaa)|(?'a'b))(?'a'cccc)\k'a'/I,dupnames 14603Capture group count = 2 14604Max back reference = 2 14605Named capture groups: 14606 a 1 14607 a 2 14608Options: dupnames 14609Starting code units: a b 14610Last code unit = 'c' 14611Subject length lower bound = 5 14612 14613/ab{3cd/ 14614 ab{3cd 14615 0: ab{3cd 14616 14617/ab{3,cd/ 14618 ab{3,cd 14619 0: ab{3,cd 14620 14621/ab{3,4a}cd/ 14622 ab{3,4a}cd 14623 0: ab{3,4a}cd 14624 14625/{4,5a}bc/ 14626 {4,5a}bc 14627 0: {4,5a}bc 14628 14629/\x0{ab}/ 14630 \0{ab} 14631 0: \x00{ab} 14632 14633/^(a(b))\1\g1\g{1}\g-1\g{-1}\g{-02}Z/ 14634 ababababbbabZXXXX 14635 0: ababababbbabZ 14636 1: ab 14637 2: b 14638 14639/.*?a(*PRUNE)b/ 14640 aab 14641 0: ab 14642 14643/.*?a(*PRUNE)b/s 14644 aab 14645 0: ab 14646 14647/^a(*PRUNE)b/s 14648\= Expect no match 14649 aab 14650No match 14651 14652/.*?a(*SKIP)b/ 14653 aab 14654 0: ab 14655 14656/(?(8000000000/ 14657Failed: error 161 at offset 8: subpattern number is too big 14658 14659/((?(R8000000000)))/ 14660Failed: error 161 at offset 9: subpattern number is too big 14661 14662/0(?0)|(1)(*THEN)(*SKIP:0)(*FAIL)/ 14663\= Expect no match 14664 01 14665No match 14666 14667/(?(1)()\983040\2)/ 14668Failed: error 161 at offset 14: subpattern number is too big 14669 14670/(*LIMIT_MATCH=)abc/ 14671Failed: error 160 at offset 14: (*VERB) not recognized or malformed 14672 14673/(*CRLF)(*LIMIT_MATCH=)abc/ 14674Failed: error 160 at offset 21: (*VERB) not recognized or malformed 14675 14676/(?:ab)?(?:ab)(?:ab)/ 14677 abab 14678 0: abab 14679 ababab 14680 0: ababab 14681\= Expect no match 14682 aba 14683No match 14684 14685/((*MARK:A))++a(*SKIP:B)b/ 14686\= Expect no match 14687 aacb 14688No match 14689 14690/(*MARK:a\zb)z/alt_verbnames 14691Failed: error 140 at offset 10: invalid escape sequence in (*VERB) name 14692 14693/(*:ab\t(d\)c)xxx/ 14694Failed: error 122 at offset 12: unmatched closing parenthesis 14695 14696/(*:ab\t(d\)c)xxx/alt_verbnames,mark 14697 cxxxz 14698 0: xxx 14699MK: ab\x09(d)c 14700 14701/(*:A\Qxx)x\EB)x/alt_verbnames,mark 14702 x 14703 0: x 14704MK: Axx)xB 14705 14706/(*:A\ExxxB)x/alt_verbnames,mark 14707 x 14708 0: x 14709MK: AxxxB 14710 14711/(*: A \ and #comment 14712 \ B)x/x,alt_verbnames,mark 14713 x 14714 0: x 14715MK: A and B 14716 14717/(*: A \ and #comment 14718 \ B)x/alt_verbnames,mark 14719 x 14720 0: x 14721MK: A and #comment\x0a B 14722 14723/(*: A \ and #comment 14724 \ B)x/x,mark 14725 x 14726 0: x 14727MK: A \ and #comment\x0a \ B 14728 14729/(*: A \ and #comment 14730 \ B)x/mark 14731 x 14732 0: x 14733MK: A \ and #comment\x0a \ B 14734 14735/(*:A 14736B)x/alt_verbnames,mark 14737 x 14738 0: x 14739MK: A\x0aB 14740 14741/(*:abc\Qpqr)/alt_verbnames 14742Failed: error 160 at offset 12: (*VERB) not recognized or malformed 14743 14744/abc/use_offset_limit 14745 1234abcde\=offset_limit=100 14746 0: abc 14747 1234abcde\=offset_limit=9 14748 0: abc 14749 1234abcde\=offset_limit=4 14750 0: abc 14751 1234abcde\=offset_limit=4,offset=4 14752 0: abc 14753\= Expect no match 14754 1234abcde\=offset_limit=4,offset=5 14755No match 14756 1234abcde\=offset_limit=3 14757No match 14758 14759/(?<=abc)/use_offset_limit 14760 1234abc\=offset_limit=7 14761 0: 14762\= Expect no match 14763 1234abc\=offset_limit=6 14764No match 14765 14766/A/g,replace=-,use_offset_limit 14767 XAXAXAXAXA\=offset_limit=4 14768 2: X-X-XAXAXA 14769 14770/abc/ 14771\= Expect error 14772 1234abcde\=offset_limit=4 14773Failed: error -56: offset limit set without PCRE2_USE_OFFSET_LIMIT 14774 14775/^\w/m,use_offset_limit 14776 \n..\naa\=offset_limit=3 14777No match 14778 \n..\naa\=offset_limit=4 14779 0: a 14780 14781/abcd/null_context 14782 abcd\=null_context 14783 0: abcd 14784\= Expect error - not allowed together 14785 abcd\=null_context,find_limits 14786** Not allowed together: find_limits null_context 14787 abcd\=allusedtext,startchar 14788** Not allowed together: allusedtext startchar 14789 14790/abcd/replace=w\rx\x82y\o{333}z(\Q12\$34$$\x34\E5$$),substitute_extended 14791 abcd 14792 1: w\x0dx\x82y\xdbz(12\$34$$\x345$) 14793 14794/abcd/replace=w\rx\x82y\o{333}z(\Q12\$34$$\x34\E5$$),substitute_extended,substitute_literal 14795 >>abcd<< 14796 1: >>w\rx\x82y\o{333}z(\Q12\$34$$\x34\E5$$)<< 14797 14798/abcd/g,replace=\$1$2\,substitute_literal 14799 XabcdYabcdZ 14800 2: X\$1$2\Y\$1$2\Z 14801 14802/a(bc)(DE)/replace=a\u$1\U$1\E$1\l$2\L$2\Eab\Uab\LYZ\EDone,substitute_extended 14803 abcDE 14804 1: aBcBCbcdEdeabAByzDone 14805 14806/abcd/replace=xy\kz,substitute_extended 14807 abcd 14808Failed: error -57 at offset 4 in replacement: bad escape sequence in replacement string 14809 14810/a(?:(b)|(c))/substitute_extended,replace=X${1:+1:-1}X${2:+2:-2} 14811 ab 14812 1: X1X-2 14813 ac 14814 1: X-1X2 14815 ab\=replace=${1:+$1\:$1:$2} 14816 1: b:b 14817 ac\=replace=${1:+$1\:$1:$2} 14818 1: c 14819 >>ac<<\=replace=${1:+$1\:$1:$2},substitute_literal 14820 1: >>${1:+$1\:$1:$2}<< 14821 14822/a(?:(b)|(c))/substitute_extended,replace=X${1:-1:-1}X${2:-2:-2} 14823 ab 14824 1: XbX2:-2 14825 ac 14826 1: X1:-1Xc 14827 14828/(a)/substitute_extended,replace=>${1:+\Q$1:{}$$\E+\U$1}< 14829 a 14830 1: >$1:{}$$+A< 14831 14832/X(b)Y/substitute_extended 14833 XbY\=replace=x${1:+$1\U$1}y 14834 1: xbBY 14835 XbY\=replace=\Ux${1:+$1$1}y 14836 1: XBBY 14837 14838/a/substitute_extended,replace=${*MARK:+a:b} 14839 a 14840Failed: error -58 at offset 7 in replacement: expected closing curly bracket in replacement string 14841 14842/(abcd)/replace=${1:+xy\kz},substitute_extended 14843 abcd 14844Failed: error -57 at offset 8 in replacement: bad escape sequence in replacement string 14845 14846/(abcd)/ 14847 abcd\=replace=${1:+xy\kz},substitute_extended 14848Failed: error -57 at offset 8 in replacement: bad escape sequence in replacement string 14849 14850/abcd/substitute_extended,replace=>$1< 14851 abcd 14852Failed: error -49 at offset 3 in replacement: unknown substring 14853 14854/abcd/substitute_extended,replace=>xxx${xyz}<<< 14855 abcd 14856Failed: error -49 at offset 10 in replacement: unknown substring 14857 14858/(?J)(?:(?<A>a)|(?<A>b))/replace=<$A> 14859 [a] 14860 1: [<a>] 14861 [b] 14862 1: [<b>] 14863\= Expect error 14864 (a)\=ovector=1 14865Failed: error -54 at offset 3 in replacement: requested value is not available 14866 14867/(a)|(b)/replace=<$1> 14868\= Expect error 14869 b 14870Failed: error -55 at offset 3 in replacement: requested value is not set 14871 14872/(aa)(BB)/substitute_extended,replace=\U$1\L$2\E$1..\U$1\l$2$1 14873 aaBB 14874 1: AAbbaa..AAbBaa 14875 14876/abcd/replace=wxyz,substitute_matched 14877 abcd 14878 1: wxyz 14879 pqrs 14880 0: pqrs 14881 14882/abcd/g 14883 >abcd1234abcd5678<\=replace=wxyz,substitute_matched 14884 2: >wxyz1234wxyz5678< 14885 14886/^(o(\1{72}{\"{\\{00000059079}\d*){74}}){19}/I 14887Capture group count = 2 14888Max back reference = 1 14889Compile options: <none> 14890Overall options: anchored 14891First code unit = 'o' 14892Last code unit = '}' 14893Subject length lower bound = 65535 14894 14895/((p(?'K/ 14896Failed: error 142 at offset 7: syntax error in subpattern name (missing terminator?) 14897 14898/((p(?'K/no_auto_capture 14899Failed: error 142 at offset 7: syntax error in subpattern name (missing terminator?) 14900 14901/abc/replace=A$3123456789Z 14902 abc 14903Failed: error -49 at offset 3 in replacement: unknown substring 14904 14905/(?<!a{65535}a{5})x/I 14906Failed: error 187 at offset 0: lookbehind assertion is too long 14907 14908/(?<!a{65535})x/I 14909Capture group count = 0 14910Max lookbehind = 65535 14911First code unit = 'x' 14912Subject length lower bound = 1 14913 14914/(?=a\K)/replace=z,allow_lookaround_bsk 14915 BaCaD 14916Failed: error -60: match with end before start or start moved backwards is not supported 14917 14918/(?<=\K.)/g,replace=-,allow_lookaround_bsk 14919 ab 14920Failed: error -60: match with end before start or start moved backwards is not supported 14921 14922/(?'abcdefghijklmnopqrstuvwxyzABCDEFG'toolong)/ 14923Failed: error 148 at offset 36: subpattern name is too long (maximum 32 code units) 14924 14925/(?'abcdefghijklmnopqrstuvwxyzABCDEF'justright)/ 14926 14927# These two use zero-termination 14928/abcd/max_pattern_length=3 14929Failed: error 188 at offset 0: pattern string is longer than the limit set by the application 14930 14931/abc/max_pattern_length=3 14932 14933# These two, being hex, pass the length 14934/abcdefab/hex,max_pattern_length=3 14935Failed: error 188 at offset 0: pattern string is longer than the limit set by the application 14936 14937/abcdef/hex,max_pattern_length=3 14938 14939# These patterns used to take a long time to compile 14940 14941"(.*) 14942((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))((?-2)(?-2)) 14943((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))((?-2)(?-2)) 14944((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))"xI 14945Capture group count = 12 14946May match empty string 14947Options: extended 14948First code unit at start or follows newline 14949Subject length lower bound = 0 14950 14951"(?<=a() 14952((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))((?-2)(?-2)) 14953((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))((?-2)(?-2)) 14954((?-2)(?-2))((?-2)(?-2))((?-2)(?-2)) 14955a)"xI 14956Capture group count = 12 14957Max lookbehind = 2 14958May match empty string 14959Options: extended 14960Subject length lower bound = 0 14961 14962"(?|()|())(.*) 14963((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))((?-2)(?-2)) 14964((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))((?-2)(?-2)) 14965((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))"xI 14966Capture group count = 13 14967May match empty string 14968Options: extended 14969Subject length lower bound = 0 14970 14971"(?|()|())(?<=a() 14972((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))((?-2)(?-2)) 14973((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))((?-2)(?-2)) 14974((?-2)(?-2))((?-2)(?-2))((?-2)(?-2)) 14975a)"xI 14976Failed: error 135 at offset 9: lookbehind is too complicated 14977 14978# Test the use of malloc for caching group information when there are more 14979# groups than fit into the on-stack workspace. 14980 14981/\[()]{1024}/I,expand 14982Expanded: ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()() 14983Capture group count = 1024 14984May match empty string 14985Subject length lower bound = 0 14986 14987# Test minlength capped at 65535 14988 14989/(A{65000})\1{65000}/I 14990Capture group count = 1 14991Max back reference = 1 14992First code unit = 'A' 14993Last code unit = 'A' 14994Subject length lower bound = 65535 14995 14996# Test group scans when numbers are not unique 14997 14998/(?|()+|(a)+)/BI 14999------------------------------------------------------------------ 15000 Bra 15001 Bra 15002 SCBra 1 15003 KetRmax 15004 Alt 15005 CBra 1 15006 a 15007 KetRmax 15008 Ket 15009 Ket 15010 End 15011------------------------------------------------------------------ 15012Capture group count = 1 15013May match empty string 15014Subject length lower bound = 0 15015 15016/(?|(a)+|()+)/BI 15017------------------------------------------------------------------ 15018 Bra 15019 Bra 15020 CBra 1 15021 a 15022 KetRmax 15023 Alt 15024 SCBra 1 15025 KetRmax 15026 Ket 15027 Ket 15028 End 15029------------------------------------------------------------------ 15030Capture group count = 1 15031May match empty string 15032Subject length lower bound = 0 15033 15034/(?|()|(a))/BI 15035------------------------------------------------------------------ 15036 Bra 15037 Bra 15038 CBra 1 15039 Ket 15040 Alt 15041 CBra 1 15042 a 15043 Ket 15044 Ket 15045 Ket 15046 End 15047------------------------------------------------------------------ 15048Capture group count = 1 15049May match empty string 15050Subject length lower bound = 0 15051 15052/(?|(a)|())/BI 15053------------------------------------------------------------------ 15054 Bra 15055 Bra 15056 CBra 1 15057 a 15058 Ket 15059 Alt 15060 CBra 1 15061 Ket 15062 Ket 15063 Ket 15064 End 15065------------------------------------------------------------------ 15066Capture group count = 1 15067May match empty string 15068Subject length lower bound = 0 15069 15070# Test CRLF handling in empty string substitutions 15071 15072/^$/gm,newline=anycrlf,replace=- 15073 X\r\n\r\nY 15074 1: X\x0d\x0a-\x0d\x0aY 15075 15076/^$/gm,newline=crlf,replace=- 15077 X\r\n\r\nY 15078 1: X\x0d\x0a-\x0d\x0aY 15079 15080/^$/gm,newline=any,replace=- 15081 X\r\n\r\nY 15082 1: X\x0d\x0a-\x0d\x0aY 15083 15084"(*ANYCRLF)(?m)^(.*[^0-9\r\n].*|)$"g,replace=NaN 15085 15\r\nfoo\r\n20\r\nbar\r\nbaz\r\n\r\n20 15086 4: 15\x0d\x0aNaN\x0d\x0a20\x0d\x0aNaN\x0d\x0aNaN\x0d\x0aNaN\x0d\x0a20 15087 15088/a[[:punct:]b]/bincode 15089------------------------------------------------------------------ 15090 Bra 15091 a 15092 [!-/:-@[-`b{-~] 15093 Ket 15094 End 15095------------------------------------------------------------------ 15096 15097/a[b[:punct:]]/bincode 15098------------------------------------------------------------------ 15099 Bra 15100 a 15101 [!-/:-@[-`b{-~] 15102 Ket 15103 End 15104------------------------------------------------------------------ 15105 15106/L(?#(|++<!(2)?/B 15107------------------------------------------------------------------ 15108 Bra 15109 L?+ 15110 Ket 15111 End 15112------------------------------------------------------------------ 15113 15114/L(?#(|++<!(2)?/B,no_auto_possess 15115------------------------------------------------------------------ 15116 Bra 15117 L? 15118 Ket 15119 End 15120------------------------------------------------------------------ 15121 15122/L(?#(|++<!(2)?/B,auto_callout 15123------------------------------------------------------------------ 15124 Bra 15125 Callout 255 0 14 15126 L?+ 15127 Callout 255 14 0 15128 Ket 15129 End 15130------------------------------------------------------------------ 15131 15132/L(?#(|++<!(2)?/B,no_auto_possess,auto_callout 15133------------------------------------------------------------------ 15134 Bra 15135 Callout 255 0 14 15136 L? 15137 Callout 255 14 0 15138 Ket 15139 End 15140------------------------------------------------------------------ 15141 15142/(A*)\E+/B,auto_callout 15143------------------------------------------------------------------ 15144 Bra 15145 Callout 255 0 1 15146 SCBra 1 15147 Callout 255 1 2 15148 A* 15149 Callout 255 3 4 15150 KetRmax 15151 Callout 255 7 0 15152 Ket 15153 End 15154------------------------------------------------------------------ 15155 15156/()\Q\E*]/B,auto_callout 15157------------------------------------------------------------------ 15158 Bra 15159 Callout 255 0 1 15160 Brazero 15161 SCBra 1 15162 Callout 255 1 6 15163 KetRmax 15164 Callout 255 7 1 15165 ] 15166 Callout 255 8 0 15167 Ket 15168 End 15169------------------------------------------------------------------ 15170 a[bc]d 15171--->a[bc]d 15172 +0 ^ ( 15173 +1 ^ )\Q\E* 15174 +7 ^ ] 15175 +8 ^^ End of pattern 15176 0: ] 15177 1: 15178 15179/\x8a+f|;T?(*:;.'?`(\xeap ){![^()!y*''C*(?';]{1;(\x08)/B,alt_verbnames,dupnames,extended 15180------------------------------------------------------------------ 15181 Bra 15182 \x{8a}++ 15183 f 15184 Alt 15185 ; 15186 T? 15187 *MARK ;.'?`(\x{ea}p 15188 {! 15189 [\x00- "-&+-:<->@-BD-xz-\xff] (neg) 15190 {1; 15191 CBra 1 15192 \x08 15193 Ket 15194 Ket 15195 End 15196------------------------------------------------------------------ 15197 15198# Tests for NULL characters in comments and verb "names" and callouts 15199 15200# /A#B\x00C\x0aZ/ 15201/41 23 42 00 43 0a 5a/Bx,hex 15202------------------------------------------------------------------ 15203 Bra 15204 AZ 15205 Ket 15206 End 15207------------------------------------------------------------------ 15208 15209# /A+#B\x00C\x0a+/ 15210/41 2b 23 42 00 43 0a 2b/Bx,hex 15211------------------------------------------------------------------ 15212 Bra 15213 A++ 15214 Ket 15215 End 15216------------------------------------------------------------------ 15217 15218# /A(*:B\x00W#X\00Y\x0aC)Z/ 15219/41 28 2a 3a 42 00 57 23 58 00 59 0a 43 29 5a/Bx,hex,alt_verbnames 15220------------------------------------------------------------------ 15221 Bra 15222 A 15223 *MARK B\x{0}WC 15224 Z 15225 Ket 15226 End 15227------------------------------------------------------------------ 15228 15229# /A(*:B\x00W#X\00Y\x0aC)Z/ 15230/41 28 2a 3a 42 00 57 23 58 00 59 0a 43 29 5a/Bx,hex 15231------------------------------------------------------------------ 15232 Bra 15233 A 15234 *MARK B\x{0}W#X\x{0}Y\x{a}C 15235 Z 15236 Ket 15237 End 15238------------------------------------------------------------------ 15239 15240# /A(?C{X\x00Y})B/ 15241/41 28 3f 43 7b 58 00 59 7d 29 42/B,hex 15242------------------------------------------------------------------ 15243 Bra 15244 A 15245 CalloutStr {X\x{0}Y} 5 10 1 15246 B 15247 Ket 15248 End 15249------------------------------------------------------------------ 15250 15251# /A(?#X\x00Y)B/ 15252/41 28 3f 23 7b 00 7d 29 42/B,hex 15253------------------------------------------------------------------ 15254 Bra 15255 AB 15256 Ket 15257 End 15258------------------------------------------------------------------ 15259 15260# Tests for leading comment in extended patterns 15261 15262/ (?-x):?/extended 15263 15264/(?-x):?/extended 15265 15266/0b 28 3f 2d 78 29 3a/hex,extended 15267 15268/#comment 15269(?-x):?/extended 15270 15271/(8(*:6^\x09x\xa6l\)6!|\xd0:[^:|)\x09d\Z\d{85*m(?'(?<1!)*\W[*\xff]!!h\w]*\xbe;/alt_bsux,alt_verbnames,allow_empty_class,dollar_endonly,extended,multiline,never_utf,no_dotstar_anchor,no_start_optimize 15272Failed: error 162 at offset 49: subpattern name expected 15273 15274/a|(b)c/replace=>$1<,substitute_unset_empty 15275 cat 15276 1: c><t 15277 xbcom 15278 1: x>b<om 15279 15280/a|(b)c/ 15281 cat\=replace=>$1< 15282Failed: error -55 at offset 3 in replacement: requested value is not set 15283 cat\=replace=>$1<,substitute_unset_empty 15284 1: c><t 15285 xbcom\=replace=>$1<,substitute_unset_empty 15286 1: x>b<om 15287 15288/a|(b)c/substitute_extended 15289 cat\=replace=>${2:-xx}< 15290Failed: error -49 at offset 9 in replacement: unknown substring 15291 cat\=replace=>${2:-xx}<,substitute_unknown_unset 15292 1: c>xx<t 15293 cat\=replace=>${X:-xx}<,substitute_unknown_unset 15294 1: c>xx<t 15295 15296/a|(?'X'b)c/replace=>$X<,substitute_unset_empty 15297 cat 15298 1: c><t 15299 xbcom 15300 1: x>b<om 15301 15302/a|(?'X'b)c/replace=>$Y<,substitute_unset_empty 15303 cat 15304Failed: error -49 at offset 3 in replacement: unknown substring 15305 cat\=substitute_unknown_unset 15306 1: c><t 15307 cat\=substitute_unknown_unset,-substitute_unset_empty 15308Failed: error -55 at offset 3 in replacement: requested value is not set 15309 15310/a|(b)c/replace=>$2<,substitute_unset_empty 15311 cat 15312Failed: error -49 at offset 3 in replacement: unknown substring 15313 cat\=substitute_unknown_unset 15314 1: c><t 15315 cat\=substitute_unknown_unset,-substitute_unset_empty 15316Failed: error -55 at offset 3 in replacement: requested value is not set 15317 15318/()()()/use_offset_limit 15319 \=ovector=11000000000 15320** Invalid value in 'ovector=11000000000' 15321 \=callout_fail=11000000000 15322** Invalid value in 'callout_fail=11000000000' 15323 \=callout_fail=1:11000000000 15324** Invalid value in 'callout_fail=1:11000000000' 15325 \=callout_data=11000000000 15326** Invalid value in 'callout_data=11000000000' 15327 \=callout_data=-11000000000 15328** Invalid value in 'callout_data=-11000000000' 15329 \=offset_limit=1100000000000000000000 15330** Invalid value in 'offset_limit=1100000000000000000000' 15331 \=copy=11000000000 15332** Invalid value in 'copy=11000000000' 15333 15334/(*MARK:A\x00b)/mark 15335 abc 15336 0: 15337MK: A\x00b 15338 15339/(*MARK:A\x00b)/mark,alt_verbnames 15340 abc 15341 0: 15342MK: A\x00b 15343 15344/"(*MARK:A" 00 "b)"/mark,hex 15345 abc 15346 0: 15347MK: A\x00b 15348 15349/"(*MARK:A" 00 "b)"/mark,hex,alt_verbnames 15350 abc 15351 0: 15352MK: A\x00b 15353 15354/efg/hex 15355** Unexpected non-hex-digit 'g' at offset 2 in hex pattern: quote missing? 15356 15357/eff/hex 15358** Odd number of digits in hex pattern 15359 15360/effg/hex 15361** Unexpected non-hex-digit 'g' at offset 3 in hex pattern: quote missing? 15362 15363/(?J)(?'a'))(?'a')/ 15364Failed: error 122 at offset 10: unmatched closing parenthesis 15365 15366/(?<=((?C)0))/ 15367 9010 15368--->9010 15369 0 ^ 0 15370 0 ^ 0 15371 0: 15372 1: 0 15373\= Expect no match 15374 abc 15375--->abc 15376 0 ^ 0 15377 0 ^ 0 15378 0 ^ 0 15379No match 15380 15381/aaa/ 15382\[abc]{10000000000000000000000000000} 15383** Repeat count too large 15384\[a]{3} 15385 0: aaa 15386 15387/\[AB]{6000000000000000000000}/expand 15388** Pattern repeat count too large 15389 15390# Hex uses pattern length, not zero-terminated. This tests for overrunning 15391# the given length of a pattern. 15392 15393/'(*U'/hex 15394Failed: error 160 at offset 3: (*VERB) not recognized or malformed 15395 15396/'(*'/hex 15397Failed: error 109 at offset 1: quantifier does not follow a repeatable item 15398 15399/'('/hex 15400Failed: error 114 at offset 1: missing closing parenthesis 15401 15402//hex 15403 15404# These tests are here because Perl never allows a back reference in a 15405# lookbehind. PCRE2 supports some limited cases. 15406 15407/([ab])...(?<=\1)z/ 15408 a11az 15409 0: a11az 15410 1: a 15411 b11bz 15412 0: b11bz 15413 1: b 15414\= Expect no match 15415 b11az 15416No match 15417 15418/(?|([ab]))...(?<=\1)z/ 15419Failed: error 125 at offset 13: lookbehind assertion is not fixed length 15420 15421/([ab])(\1)...(?<=\2)z/ 15422 aa11az 15423 0: aa11az 15424 1: a 15425 2: a 15426 15427/(a\2)(b\1)(?<=\2)/ 15428Failed: error 125 at offset 10: lookbehind assertion is not fixed length 15429 15430/(?<A>[ab])...(?<=\k'A')z/ 15431 a11az 15432 0: a11az 15433 1: a 15434 b11bz 15435 0: b11bz 15436 1: b 15437\= Expect no match 15438 b11az 15439No match 15440 15441/(?<A>[ab])...(?<=\k'A')(?<A>)z/dupnames 15442Failed: error 125 at offset 13: lookbehind assertion is not fixed length 15443 15444# Perl does not support \g+n 15445 15446/((\g+1X)?([ab]))+/ 15447 aaXbbXa 15448 0: aaXbbXa 15449 1: bXa 15450 2: bX 15451 3: a 15452 15453/ab(?C1)c/auto_callout 15454 abc 15455--->abc 15456 +0 ^ a 15457 +1 ^^ b 15458 1 ^ ^ c 15459 +8 ^ ^ End of pattern 15460 0: abc 15461 15462/'ab(?C1)c'/hex,auto_callout 15463 abc 15464--->abc 15465 +0 ^ a 15466 +1 ^^ b 15467 1 ^ ^ c 15468 +8 ^ ^ End of pattern 15469 0: abc 15470 15471# Perl accepts these, but gives a warning. We can't warn, so give an error. 15472 15473/[a-[:digit:]]+/ 15474Failed: error 150 at offset 4: invalid range in character class 15475 a-a9-a 15476 15477/[A-[:digit:]]+/ 15478Failed: error 150 at offset 4: invalid range in character class 15479 A-A9-A 15480 15481/[a-\d]+/ 15482Failed: error 150 at offset 5: invalid range in character class 15483 a-a9-a 15484 15485/(?<RA>abc)(?(R)xyz)/B 15486------------------------------------------------------------------ 15487 Bra 15488 CBra 1 15489 abc 15490 Ket 15491 Cond 15492 Cond recurse any 15493 xyz 15494 Ket 15495 Ket 15496 End 15497------------------------------------------------------------------ 15498 15499/(?<R>abc)(?(R)xyz)/B 15500------------------------------------------------------------------ 15501 Bra 15502 CBra 1 15503 abc 15504 Ket 15505 Cond 15506 1 Cond ref 15507 xyz 15508 Ket 15509 Ket 15510 End 15511------------------------------------------------------------------ 15512 15513/(?=.*[A-Z])/I 15514Capture group count = 0 15515May match empty string 15516Subject length lower bound = 0 15517 15518/()(?<=(?0))/ 15519Failed: error 125 at offset 2: lookbehind assertion is not fixed length 15520 15521/(?<!|!(?<!))/ 15522 15523/(?<!|!|!||||||(?<!)||(?<!)!|!||(?<!)!|!(?<!)!|!|!|!||||!!|<!)!|!||||!|/ 15524 15525/{2,2{2,2/use_length 15526 15527/.>*?\g'0/use_length 15528Failed: error 157 at offset 6: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number 15529 15530/.>*?\g'0/ 15531Failed: error 157 at offset 6: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number 15532 15533/{�̈́�̈́�{'{22{2{{2{'{22{{22{2{'{22{2{{2{{222{{2{'{22{2{22{2{'{22{2{{2{'{22{2{22{2{'{'{22{2{22{2{'{22{2{{2{'{22{2{22{2{'{222{2Ą̈́�̈́�{'{22{2{{2{'{22{{11{2{'{22{2{{2{{'{22{2{{2{'{22{{22{1{'{22{2{{2{{222{{2{'{22{2{22{2{'{/auto_callout 15534 15535// 15536\=get=i00000000000000000000000000000000 15537** Group name in 'get' is too long 15538\=get=i2345678901234567890123456789012,get=i1245678901234567890123456789012 15539** Too many characters in named 'get' modifiers 15540 15541"(?(?C))" 15542Failed: error 128 at offset 6: assertion expected after (?( or (?(?C) 15543 15544/(?(?(?(?(?(?))))))/ 15545Failed: error 128 at offset 2: assertion expected after (?( or (?(?C) 15546 15547/(?<=(?1))((?s))/anchored 15548 15549/(*:ab)*/ 15550Failed: error 109 at offset 6: quantifier does not follow a repeatable item 15551 15552%(*:(:(svvvvvvvvvv:]*[ Z!*;[]*[^[]*!^[+.+{{2,7}' _\\\\\\\\\\\\\)?.:.. *w////\\\Q\\\\\\\\\\\\\\\T\\\\\+/?/////'+\\\EEE?/////'+/*+/[^K]?]//(w)%never_backslash_c,alt_verbnames,auto_callout 15553 15554/./newline=crlf 15555 \=ph 15556No match 15557 15558/(\x0e00\000000\xc)/replace=\P,substitute_extended 15559 \x0e00\000000\xc 15560Failed: error -57 at offset 2 in replacement: bad escape sequence in replacement string 15561 15562//replace=0 15563 \=offset=7 15564Failed: error -33: bad offset value 15565 15566/(?<=\G.)/g,replace=+ 15567 abc 15568 3: a+b+c+ 15569 15570".+\QX\E+"B,no_auto_possess 15571------------------------------------------------------------------ 15572 Bra 15573 Any+ 15574 X+ 15575 Ket 15576 End 15577------------------------------------------------------------------ 15578 15579".+\QX\E+"B,auto_callout,no_auto_possess 15580------------------------------------------------------------------ 15581 Bra 15582 Callout 255 0 4 15583 Any+ 15584 Callout 255 4 4 15585 X+ 15586 Callout 255 8 0 15587 Ket 15588 End 15589------------------------------------------------------------------ 15590 15591# This one is here because Perl gives an 'unmatched )' error which goes away 15592# if one of the \) sequences is removed - which is weird. PCRE finds it too 15593# complicated to find a minimum matching length. 15594 15595"()X|((((((((()))))))((((())))))\2())((((((\2\2)))\2)(\22((((\2\2)2))\2)))(2\ZZZ)+:)Z^|91ZiZZnter(ZZ |91Z(ZZ ZZ(\r2Z( or#(\Z2(Z\Z(\2\2)2))\2Z)Z(\22Z((\Z2(Z\Z(\2\2)2))\2Z+:)Z|91Z(ZZ ZZ(\r2Z( or#(\Z2(Z\Z((Z*(\2(Z\':))\0)i|||||||||||||||loZ\2\2)2))\2Z)Z(\22Z((\Z2(Z\Z(\2\2)2))\2Z)))int \)\0nte!rnal errpr\2\\21r(2\ZZZ)+:)Z!|91Z(ZZ ZZ(\r2Z( or#(\Z2(Z\Z(\2\2)2))\2Z)Z(\22Z((\Z2(Z\Z(\2\2)2))\2Z)))int \)\0(2\ZZZ)+:)Z^|91ZiZZnter(ZZ |91Z(ZZ ZZ(\r2Z( or#(\Z2(Z\Z(\2\2)2))\2Z)Z(\22Z((\Z2(Z\Z(\2\2)2))\2Z)))int \)\0(2\ZZZ)+:)Z^)))int \)\0(2\ZZZ)+:)Z^|91ZiZZnter(ZZernZal ZZ(\r2Z( or#(\Z2(Z\Z(\2\2)2))\2Z)Z(\22Z((\Z2(Z\Z(\2\2)2))\2Z)))int \))\ZZ(\r2Z( or#(\Z2(Z\Z(\2\2)2))\2Z)Z(\22Z((\Z2(Z\Z(\2\2)))\2))))((((((\2\2))))))"I 15596Capture group count = 108 15597Max back reference = 22 15598Contains explicit CR or LF match 15599Subject length lower bound = 1 15600 15601# This checks that new code for handling groups that may match an empty string 15602# works on a very large number of alternatives. This pattern used to provoke a 15603# complaint that it was too complicated. 15604 15605/(?:\[A|B|C|D|E|F|G|H|I|J|]{200}Z)/expand 15606 15607# This one used to compile rubbish instead of a compile error, and then 15608# behave unpredictably at match time. 15609 15610/.+(?(?C'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'))?!XXXX.=X/ 15611Failed: error 128 at offset 63: assertion expected after (?( or (?(?C) 15612 .+(?(?C'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'))?!XXXX.=X 15613 15614/[:[:alnum:]-[[a:lnum:]+/ 15615Failed: error 150 at offset 11: invalid range in character class 15616 15617/((?(?C'')\QX\E(?!((?(?C'')(?!X=X));=)r*X=X));=)/ 15618Failed: error 128 at offset 11: assertion expected after (?( or (?(?C) 15619 15620/((?(?C'')\Q\E(?!((?(?C'')(?!X=X));=)r*X=X));=)/ 15621 15622/abcd/auto_callout 15623 abcd\=callout_error=255:2 15624--->abcd 15625 +0 ^ a 15626 +1 ^^ b 15627Failed: error -37: callout error code 15628 15629/()(\g+65534)/ 15630Failed: error 161 at offset 11: subpattern number is too big 15631 15632/()(\g+65533)/ 15633Failed: error 115 at offset 10: reference to non-existent subpattern 15634 15635/�\x00\x00\x00�(\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\2*\x00k\d+\x00\x00\x00\x00\x00\x00\2*\x00\x00\1*.){36}int^\x00\x00��\x00�(\1{50779}?)J\w2/I 15636Capture group count = 2 15637Max back reference = 2 15638First code unit = \xc1 15639Last code unit = '2' 15640Subject length lower bound = 65535 15641 15642/(a)(b)\2\1\1\1\1/I 15643Capture group count = 2 15644Max back reference = 2 15645First code unit = 'a' 15646Last code unit = 'b' 15647Subject length lower bound = 7 15648 15649/(?<a>a)(?<b>b)\g{b}\g{a}\g{a}\g{a}\g{a}(?<a>xx)(?<b>zz)/I,dupnames 15650Capture group count = 4 15651Max back reference = 4 15652Named capture groups: 15653 a 1 15654 a 3 15655 b 2 15656 b 4 15657Options: dupnames 15658First code unit = 'a' 15659Last code unit = 'z' 15660Subject length lower bound = 11 15661 15662// 15663 \=ovector=7777777777 15664** Invalid value in 'ovector=7777777777' 15665 15666# This is here because Perl matches, even though a COMMIT is encountered 15667# outside of the recursion. 15668 15669/(?1)(A(*COMMIT)|B)D/ 15670 BAXBAD 15671No match 15672 15673"(?1){2}(a)"B 15674------------------------------------------------------------------ 15675 Bra 15676 Recurse 15677 Recurse 15678 CBra 1 15679 a 15680 Ket 15681 Ket 15682 End 15683------------------------------------------------------------------ 15684 15685"(?1){2,4}(a)"B 15686------------------------------------------------------------------ 15687 Bra 15688 Recurse 15689 Recurse 15690 Brazero 15691 Bra 15692 Bra 15693 Recurse 15694 Ket 15695 Brazero 15696 Bra 15697 Recurse 15698 Ket 15699 Ket 15700 CBra 1 15701 a 15702 Ket 15703 Ket 15704 End 15705------------------------------------------------------------------ 15706 15707# This test differs from Perl for the first subject. Perl ends up with 15708# $1 set to 'B'; PCRE2 has it unset (which I think is right). 15709 15710/^(?: 15711(?:A| (?:B|B(*ACCEPT)) (?<=(.)) D) 15712(Z) 15713)+$/x 15714 AZB 15715 0: AZB 15716 1: <unset> 15717 2: Z 15718 AZBDZ 15719 0: AZBDZ 15720 1: B 15721 2: Z 15722 15723# The first of these, when run by Perl, gives the mark 'aa', which is wrong. 15724 15725'(?>a(*:aa))b|ac' mark 15726 ac 15727 0: ac 15728 15729'(?:a(*:aa))b|ac' mark 15730 ac 15731 0: ac 15732 15733/(R?){65}/ 15734 (R?){65} 15735 0: 15736 1: 15737 15738/\[(a)]{60}/expand 15739 aaaa 15740No match 15741 15742/(?<!\1((?U)1((?U))))(*F)/never_backslash_c,alt_bsux,anchored,extended 15743 15744/\g{3/ 15745Failed: error 157 at offset 2: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number 15746 15747/(a(?C1)(b)(c)d)+/ 15748 abcdabcd\=callout_capture 15749Callout 1: last capture = 0 15750--->abcdabcd 15751 ^^ ( 15752Callout 1: last capture = 1 15753 1: abcd 15754 2: b 15755 3: c 15756--->abcdabcd 15757 ^ ^ ( 15758 0: abcdabcd 15759 1: abcd 15760 2: b 15761 3: c 15762 15763# Perl matches this one, but PCRE does not because (*ACCEPT) clears out any 15764# pending backtracks in the recursion. 15765 15766/^ (?(DEFINE) (..(*ACCEPT)|...) ) (?1)$/x 15767\= Expect no match 15768 abc 15769No match 15770 15771# Perl gives no match for this one 15772 15773/(a(*MARK:m)(*ACCEPT)){0}(?1)/mark 15774 abc 15775 0: a 15776MK: m 15777 15778/abc/endanchored 15779 xyzabc 15780 0: abc 15781\= Expect no match 15782 xyzabcdef 15783No match 15784\= Expect error 15785 xyzabc\=ph 15786Failed: error -34: bad option value 15787 15788/abc/ 15789 xyzabc\=endanchored 15790 0: abc 15791\= Expect no match 15792 xyzabcdef\=endanchored 15793No match 15794\= Expect error 15795 xyzabc\=ps,endanchored 15796Failed: error -34: bad option value 15797 15798/abc(*ACCEPT)d/endanchored 15799 xyzabc 15800 0: abc 15801\= Expect no match 15802 xyzabcdef 15803No match 15804 15805/abc|bcd/endanchored 15806 xyzabcd 15807 0: bcd 15808\= Expect no match 15809 xyzabcdef 15810No match 15811 15812/a(*ACCEPT)x|aa/endanchored 15813 aaa 15814 0: a 15815 15816# Check auto-anchoring when there is a group that is never obeyed at 15817# the start of a branch. 15818 15819/(?(DEFINE)(a))^bc/I 15820Capture group count = 1 15821Compile options: <none> 15822Overall options: anchored 15823First code unit = 'b' 15824Subject length lower bound = 2 15825 15826/(a){0}.*bc/sI 15827Capture group count = 1 15828Compile options: dotall 15829Overall options: anchored dotall 15830Last code unit = 'c' 15831Subject length lower bound = 2 15832 15833# This should be anchored, as the condition is always false and there is 15834# no alternative branch. 15835 15836/(?(VERSION>=999)yes)^bc/I 15837Capture group count = 0 15838Compile options: <none> 15839Overall options: anchored 15840Subject length lower bound = 2 15841 15842# This should not be anchored. 15843 15844/(?(VERSION>=999)yes|no)^bc/I 15845Capture group count = 0 15846Last code unit = 'c' 15847Subject length lower bound = 4 15848 15849/(*LIMIT_HEAP=0)xxx/I 15850Capture group count = 0 15851Heap limit = 0 15852First code unit = 'x' 15853Last code unit = 'x' 15854Subject length lower bound = 3 15855 15856/\d{0,3}(*:abc)(?C1)xxx/callout_info 15857Callout 1 x 15858 15859# ---------------------------------------------------------------------- 15860 15861# These are a whole pile of tests that touch lines of code that are not 15862# used by any other tests (at least when these were created). 15863 15864/^a+?x/i,no_start_optimize,no_auto_possess 15865\= Expect no match 15866 aaa 15867No match 15868 15869/^[^a]{3,}?x/i,no_start_optimize,no_auto_possess 15870\= Expect no match 15871 bbb 15872No match 15873 cc 15874No match 15875 15876/^X\S/no_start_optimize,no_auto_possess 15877\= Expect no match 15878 X 15879No match 15880 15881/^X\W/no_start_optimize,no_auto_possess 15882\= Expect no match 15883 X 15884No match 15885 15886/^X\H/no_start_optimize,no_auto_possess 15887\= Expect no match 15888 X 15889No match 15890 15891/^X\h/no_start_optimize,no_auto_possess 15892\= Expect no match 15893 X 15894No match 15895 15896/^X\V/no_start_optimize,no_auto_possess 15897\= Expect no match 15898 X 15899No match 15900 15901/^X\v/no_start_optimize,no_auto_possess 15902\= Expect no match 15903 X 15904No match 15905 15906/^X\h/no_start_optimize,no_auto_possess 15907\= Expect no match 15908 XY 15909No match 15910 15911/^X\V/no_start_optimize,no_auto_possess 15912\= Expect no match 15913 X\n 15914No match 15915 15916/^X\v/no_start_optimize,no_auto_possess 15917\= Expect no match 15918 XX 15919No match 15920 15921/^X.+?/s,no_start_optimize,no_auto_possess 15922\= Expect no match 15923 X 15924No match 15925 15926/^X\R+?/no_start_optimize,no_auto_possess 15927\= Expect no match 15928 XX 15929No match 15930 15931/^X\H+?/no_start_optimize,no_auto_possess 15932\= Expect no match 15933 X 15934No match 15935 15936/^X\h+?/no_start_optimize,no_auto_possess 15937\= Expect no match 15938 X 15939No match 15940 15941/^X\V+?/no_start_optimize,no_auto_possess 15942\= Expect no match 15943 X 15944No match 15945 X\n 15946No match 15947 15948/^X\D+?/no_start_optimize,no_auto_possess 15949\= Expect no match 15950 X 15951No match 15952 X9 15953No match 15954 15955/^X\S+?/no_start_optimize,no_auto_possess 15956\= Expect no match 15957 X 15958No match 15959 X\n 15960No match 15961 15962/^X\W+?/no_start_optimize,no_auto_possess 15963\= Expect no match 15964 X 15965No match 15966 XX 15967No match 15968 15969/^X.+?Z/no_start_optimize,no_auto_possess 15970\= Expect no match 15971 XY\n 15972No match 15973 15974/(*CRLF)^X.+?Z/no_start_optimize,no_auto_possess 15975\= Expect no match 15976 XY\r\=ps 15977Partial match: XY\x0d 15978 15979/^X\R+?Z/no_start_optimize,no_auto_possess 15980\= Expect no match 15981 X\nX 15982No match 15983 X\n\r\n 15984No match 15985 X\n\rY 15986No match 15987 X\n\nY 15988No match 15989 X\n\x{0c}Y 15990No match 15991 15992/(*BSR_ANYCRLF)^X\R+?Z/no_start_optimize,no_auto_possess 15993\= Expect no match 15994 X\nX 15995No match 15996 X\n\r\n 15997No match 15998 X\n\rY 15999No match 16000 X\n\nY 16001No match 16002 X\n\x{0c}Y 16003No match 16004 16005/^X\H+?Z/no_start_optimize,no_auto_possess 16006\= Expect no match 16007 XY\t 16008No match 16009 XYY 16010No match 16011 16012/^X\h+?Z/no_start_optimize,no_auto_possess 16013\= Expect no match 16014 X\t\t 16015No match 16016 X\tY 16017No match 16018 16019/^X\V+?Z/no_start_optimize,no_auto_possess 16020\= Expect no match 16021 XY\n 16022No match 16023 XYY 16024No match 16025 16026/^X\v+?Z/no_start_optimize,no_auto_possess 16027\= Expect no match 16028 X\n\n 16029No match 16030 X\nY 16031No match 16032 16033/^X\D+?Z/no_start_optimize,no_auto_possess 16034\= Expect no match 16035 XY9 16036No match 16037 XYY 16038No match 16039 16040/^X\d+?Z/no_start_optimize,no_auto_possess 16041\= Expect no match 16042 X99 16043No match 16044 X9Y 16045No match 16046 16047/^X\S+?Z/no_start_optimize,no_auto_possess 16048\= Expect no match 16049 XY\n 16050No match 16051 XYY 16052No match 16053 16054/^X\s+?Z/no_start_optimize,no_auto_possess 16055\= Expect no match 16056 X\n\n 16057No match 16058 X\nY 16059No match 16060 16061/^X\W+?Z/no_start_optimize,no_auto_possess 16062\= Expect no match 16063 X.A 16064No match 16065 X++ 16066No match 16067 16068/^X\w+?Z/no_start_optimize,no_auto_possess 16069\= Expect no match 16070 Xa. 16071No match 16072 Xaa 16073No match 16074 16075/^X.{1,3}Z/s,no_start_optimize,no_auto_possess 16076\= Expect no match 16077 Xa.bd 16078No match 16079 16080/^X\h+Z/no_start_optimize,no_auto_possess 16081\= Expect no match 16082 X\t\t 16083No match 16084 X\tY 16085No match 16086 16087/^X\V+Z/no_start_optimize,no_auto_possess 16088\= Expect no match 16089 XY\n 16090No match 16091 XYY 16092No match 16093 16094/^(X(*THEN)Y|AB){0}(?1)/ 16095 ABX 16096 0: AB 16097\= Expect no match 16098 XAB 16099No match 16100 16101/^(?!A(?C1)B)C/ 16102 ABC\=callout_error=1,no_jit 16103No match 16104 16105/^(?!A(?C1)B)C/no_start_optimize 16106 ABC\=callout_error=1 16107--->ABC 16108 1 ^^ B 16109Failed: error -37: callout error code 16110 16111/^(?(?!A(?C1)B)C)/ 16112 ABC\=callout_error=1 16113--->ABC 16114 1 ^^ B 16115Failed: error -37: callout error code 16116 16117# ---------------------------------------------------------------------- 16118 16119/[a b c]/BxxI 16120------------------------------------------------------------------ 16121 Bra 16122 [a-c] 16123 Ket 16124 End 16125------------------------------------------------------------------ 16126Capture group count = 0 16127Options: extended_more 16128Starting code units: a b c 16129Subject length lower bound = 1 16130 16131/[a b c]/BxxxI 16132------------------------------------------------------------------ 16133 Bra 16134 [a-c] 16135 Ket 16136 End 16137------------------------------------------------------------------ 16138Capture group count = 0 16139Options: extended extended_more 16140Starting code units: a b c 16141Subject length lower bound = 1 16142 16143/[a b c]/B,extended_more 16144------------------------------------------------------------------ 16145 Bra 16146 [a-c] 16147 Ket 16148 End 16149------------------------------------------------------------------ 16150 16151/[ a b c ]/B,extended_more 16152------------------------------------------------------------------ 16153 Bra 16154 [a-c] 16155 Ket 16156 End 16157------------------------------------------------------------------ 16158 16159/[a b](?xx: [ 12 ] (?-xx:[ 34 ]) )y z/B 16160------------------------------------------------------------------ 16161 Bra 16162 [ ab] 16163 Bra 16164 [12] 16165 Bra 16166 [ 34] 16167 Ket 16168 Ket 16169 y z 16170 Ket 16171 End 16172------------------------------------------------------------------ 16173 16174# Unsetting /x also unsets /xx 16175 16176/[a b](?xx: [ 12 ] (?-x:[ 34 ]) )y z/B 16177------------------------------------------------------------------ 16178 Bra 16179 [ ab] 16180 Bra 16181 [12] 16182 Bra 16183 [ 34] 16184 Ket 16185 Ket 16186 y z 16187 Ket 16188 End 16189------------------------------------------------------------------ 16190 16191/(a)(?-n:(b))(c)/nB 16192------------------------------------------------------------------ 16193 Bra 16194 Bra 16195 a 16196 Ket 16197 Bra 16198 CBra 1 16199 b 16200 Ket 16201 Ket 16202 Bra 16203 c 16204 Ket 16205 Ket 16206 End 16207------------------------------------------------------------------ 16208 16209# ---------------------------------------------------------------------- 16210# These test the dangerous PCRE2_EXTRA_BAD_ESCAPE_IS_LITERAL option. 16211 16212/\j\x{z}\o{82}\L\uabcd\u\U\g{\g/B,\bad_escape_is_literal 16213** Unrecognized modifier '\' in '\bad_escape_is_literal' 16214 16215/\N{\c/IB,bad_escape_is_literal 16216------------------------------------------------------------------ 16217 Bra 16218 N{c 16219 Ket 16220 End 16221------------------------------------------------------------------ 16222Capture group count = 0 16223Extra options: bad_escape_is_literal 16224First code unit = 'N' 16225Last code unit = 'c' 16226Subject length lower bound = 3 16227 16228/[\j\x{z}\o\gAb\g]/B,bad_escape_is_literal 16229------------------------------------------------------------------ 16230 Bra 16231 [Abgjoxz{}] 16232 Ket 16233 End 16234------------------------------------------------------------------ 16235 16236/[Q-\N]/B,bad_escape_is_literal 16237Failed: error 150 at offset 5: invalid range in character class 16238 16239/[\s-_]/bad_escape_is_literal 16240Failed: error 150 at offset 3: invalid range in character class 16241 16242/[_-\s]/bad_escape_is_literal 16243Failed: error 150 at offset 5: invalid range in character class 16244 16245/[\B\R\X]/B 16246Failed: error 107 at offset 2: escape sequence is invalid in character class 16247 16248/[\B\R\X]/B,bad_escape_is_literal 16249Failed: error 107 at offset 2: escape sequence is invalid in character class 16250 16251/[A-\BP-\RV-\X]/B 16252Failed: error 107 at offset 4: escape sequence is invalid in character class 16253 16254/[A-\BP-\RV-\X]/B,bad_escape_is_literal 16255Failed: error 107 at offset 4: escape sequence is invalid in character class 16256 16257# ---------------------------------------------------------------------- 16258 16259/a\b(c/literal 16260 a\\b(c 16261 0: a\b(c 16262 16263/a\b(c/literal,caseless 16264 a\\b(c 16265 0: a\b(c 16266 a\\B(c 16267 0: a\B(c 16268 16269/a\b(c/literal,firstline 16270 XYYa\\b(c 16271 0: a\b(c 16272\= Expect no match 16273 X\na\\b(c 16274No match 16275 16276/a\b?c/literal,use_offset_limit 16277 XXXXa\\b?c\=offset_limit=4 16278 0: a\b?c 16279\= Expect no match 16280 XXXXa\\b?c\=offset_limit=3 16281No match 16282 16283/a\b(c/literal,anchored,endanchored 16284 a\\b(c 16285 0: a\b(c 16286\= Expect no match 16287 Xa\\b(c 16288No match 16289 a\\b(cX 16290No match 16291 Xa\\b(cX 16292No match 16293 16294//literal,extended 16295Failed: error 192 at offset 0: invalid option bits with PCRE2_LITERAL 16296 16297/a\b(c/literal,auto_callout,no_start_optimize 16298 XXXXa\\b(c 16299--->XXXXa\b(c 16300 +0 ^ a 16301 +0 ^ a 16302 +0 ^ a 16303 +0 ^ a 16304 +0 ^ a 16305 +1 ^^ \ 16306 +2 ^ ^ b 16307 +3 ^ ^ ( 16308 +4 ^ ^ c 16309 +5 ^ ^ End of pattern 16310 0: a\b(c 16311 16312/a\b(c/literal,auto_callout 16313 XXXXa\\b(c 16314--->XXXXa\b(c 16315 +0 ^ a 16316 +1 ^^ \ 16317 +2 ^ ^ b 16318 +3 ^ ^ ( 16319 +4 ^ ^ c 16320 +5 ^ ^ End of pattern 16321 0: a\b(c 16322 16323/(*CR)abc/literal 16324 (*CR)abc 16325 0: (*CR)abc 16326 16327/cat|dog/I,match_word 16328Capture group count = 0 16329Max lookbehind = 1 16330Extra options: match_word 16331Starting code units: c d 16332Subject length lower bound = 3 16333 the cat sat 16334 0: cat 16335\= Expect no match 16336 caterpillar 16337No match 16338 snowcat 16339No match 16340 syndicate 16341No match 16342 16343/(cat)|dog/I,match_line,literal 16344Capture group count = 0 16345Compile options: literal 16346Overall options: anchored literal 16347Extra options: match_line 16348First code unit = '(' 16349Subject length lower bound = 9 16350 (cat)|dog 16351 0: (cat)|dog 16352\= Expect no match 16353 the cat sat 16354No match 16355 caterpillar 16356No match 16357 snowcat 16358No match 16359 syndicate 16360No match 16361 16362/a whole line/match_line,multiline 16363 Rhubarb \na whole line\n custard 16364 0: a whole line 16365\= Expect no match 16366 Not a whole line 16367No match 16368 16369# Perl gets this wrong, failing to capture 'b' in group 1. 16370 16371/^(b+|a){1,2}?bc/ 16372 bbc 16373 0: bbc 16374 1: b 16375 16376# And again here, for the "babc" subject string. 16377 16378/^(b*|ba){1,2}?bc/ 16379 babc 16380 0: babc 16381 1: ba 16382 bbabc 16383 0: bbabc 16384 1: ba 16385 bababc 16386 0: bababc 16387 1: ba 16388\= Expect no match 16389 bababbc 16390No match 16391 babababc 16392No match 16393 16394/[[:digit:]-a]/ 16395Failed: error 150 at offset 10: invalid range in character class 16396 16397/[[:digit:]-[:print:]]/ 16398Failed: error 150 at offset 10: invalid range in character class 16399 16400/[\d-a]/ 16401Failed: error 150 at offset 3: invalid range in character class 16402 16403/[\H-z]/ 16404Failed: error 150 at offset 3: invalid range in character class 16405 16406/[\d-[:print:]]/ 16407Failed: error 150 at offset 3: invalid range in character class 16408 16409# Perl gets the second of these wrong, giving no match. 16410 16411"(?<=(a))\1?b"I 16412Capture group count = 1 16413Max back reference = 1 16414Max lookbehind = 1 16415Last code unit = 'b' 16416Subject length lower bound = 1 16417 ab 16418 0: b 16419 1: a 16420 aaab 16421 0: ab 16422 1: a 16423 16424"(?=(a))\1?b"I 16425Capture group count = 1 16426Max back reference = 1 16427First code unit = 'a' 16428Last code unit = 'b' 16429Subject length lower bound = 2 16430 ab 16431 0: ab 16432 1: a 16433 aaab 16434 0: ab 16435 1: a 16436 16437# JIT does not support callout_extra 16438 16439/(*NO_JIT)(a+)b/auto_callout,no_start_optimize,no_auto_possess 16440\= Expect no match 16441 aac\=callout_extra 16442New match attempt 16443--->aac 16444 +9 ^ ( 16445+10 ^ a+ 16446+12 ^ ^ ) 16447+13 ^ ^ b 16448Backtrack 16449--->aac 16450+12 ^^ ) 16451+13 ^^ b 16452Backtrack 16453No other matching paths 16454New match attempt 16455--->aac 16456 +9 ^ ( 16457+10 ^ a+ 16458+12 ^^ ) 16459+13 ^^ b 16460Backtrack 16461No other matching paths 16462New match attempt 16463--->aac 16464 +9 ^ ( 16465+10 ^ a+ 16466Backtrack 16467No other matching paths 16468New match attempt 16469--->aac 16470 +9 ^ ( 16471+10 ^ a+ 16472No match 16473 16474/(*NO_JIT)a+(?C'XXX')b/no_start_optimize,no_auto_possess 16475\= Expect no match 16476 aac\=callout_extra 16477New match attempt 16478Callout (15): 'XXX' 16479--->aac 16480 ^ ^ b 16481Backtrack 16482Callout (15): 'XXX' 16483--->aac 16484 ^^ b 16485Backtrack 16486No other matching paths 16487New match attempt 16488Callout (15): 'XXX' 16489--->aac 16490 ^^ b 16491No match 16492 16493/\n/firstline 16494 xyz\nabc 16495 0: \x0a 16496 16497/\nabc/firstline 16498 xyz\nabc 16499 0: \x0aabc 16500 16501/\x{0a}abc/firstline,newline=crlf 16502\= Expect no match 16503 xyz\r\nabc 16504No match 16505 16506/[abc]/firstline 16507\= Expect no match 16508 \na 16509No match 16510 16511# These tests are matched in test 1 as they are Perl compatible. Here we are 16512# looking at what does and does not get auto-possessified. 16513 16514/(?(DEFINE)(?<optional_a>a?))^(?&optional_a)a$/B 16515------------------------------------------------------------------ 16516 Bra 16517 Cond 16518 Cond false 16519 CBra 1 16520 a? 16521 Ket 16522 Ket 16523 ^ 16524 Recurse 16525 a 16526 $ 16527 Ket 16528 End 16529------------------------------------------------------------------ 16530 16531/(?(DEFINE)(?<optional_a>a?)X)^(?&optional_a)a$/B 16532------------------------------------------------------------------ 16533 Bra 16534 Cond 16535 Cond false 16536 CBra 1 16537 a? 16538 Ket 16539 X 16540 Ket 16541 ^ 16542 Recurse 16543 a 16544 $ 16545 Ket 16546 End 16547------------------------------------------------------------------ 16548 16549/^(a?)b(?1)a/B 16550------------------------------------------------------------------ 16551 Bra 16552 ^ 16553 CBra 1 16554 a? 16555 Ket 16556 b 16557 Recurse 16558 a 16559 Ket 16560 End 16561------------------------------------------------------------------ 16562 16563/^(a?)+b(?1)a/B 16564------------------------------------------------------------------ 16565 Bra 16566 ^ 16567 SCBra 1 16568 a? 16569 KetRmax 16570 b 16571 Recurse 16572 a 16573 Ket 16574 End 16575------------------------------------------------------------------ 16576 16577/^(a?)++b(?1)a/B 16578------------------------------------------------------------------ 16579 Bra 16580 ^ 16581 SCBraPos 1 16582 a? 16583 KetRpos 16584 b 16585 Recurse 16586 a 16587 Ket 16588 End 16589------------------------------------------------------------------ 16590 16591/^(a?)+b/B 16592------------------------------------------------------------------ 16593 Bra 16594 ^ 16595 SCBra 1 16596 a? 16597 KetRmax 16598 b 16599 Ket 16600 End 16601------------------------------------------------------------------ 16602 16603/(?=a+)a(a+)++b/B 16604------------------------------------------------------------------ 16605 Bra 16606 Assert 16607 a++ 16608 Ket 16609 a 16610 CBraPos 1 16611 a++ 16612 KetRpos 16613 b 16614 Ket 16615 End 16616------------------------------------------------------------------ 16617 16618/(?<=(?=.){4,5}x)/B 16619------------------------------------------------------------------ 16620 Bra 16621 Assert back 16622 Reverse 16623 Assert 16624 Any 16625 Ket 16626 Assert 16627 Any 16628 Ket 16629 Assert 16630 Any 16631 Ket 16632 Assert 16633 Any 16634 Ket 16635 Brazero 16636 Assert 16637 Any 16638 Ket 16639 x 16640 Ket 16641 Ket 16642 End 16643------------------------------------------------------------------ 16644 16645# Perl behaves differently with these when optimization is turned off 16646 16647/a(*PRUNE:X)bc|qq/mark,no_start_optimize 16648\= Expect no match 16649 axy 16650No match, mark = X 16651 16652/a(*THEN:X)bc|qq/mark,no_start_optimize 16653\= Expect no match 16654 axy 16655No match, mark = X 16656 16657/(?^x-i)AB/ 16658Failed: error 194 at offset 4: invalid hyphen in option setting 16659 16660/(?^-i)AB/ 16661Failed: error 194 at offset 3: invalid hyphen in option setting 16662 16663/(?x-i-i)/ 16664Failed: error 194 at offset 5: invalid hyphen in option setting 16665 16666/(?(?=^))b/I 16667Capture group count = 0 16668Last code unit = 'b' 16669Subject length lower bound = 1 16670 abc 16671 0: b 16672 16673/(?(?=^)|)b/I 16674Capture group count = 0 16675First code unit = 'b' 16676Subject length lower bound = 1 16677 abc 16678 0: b 16679 16680/(?(?=^)|^)b/I 16681Capture group count = 0 16682Compile options: <none> 16683Overall options: anchored 16684First code unit = 'b' 16685Subject length lower bound = 1 16686 bbc 16687 0: b 16688\= Expect no match 16689 abc 16690No match 16691 16692/(?(1)^|^())/I 16693Capture group count = 1 16694Max back reference = 1 16695May match empty string 16696Compile options: <none> 16697Overall options: anchored 16698Subject length lower bound = 0 16699 16700/(?(1)^())b/I 16701Capture group count = 1 16702Max back reference = 1 16703Last code unit = 'b' 16704Subject length lower bound = 1 16705 16706/(?(1)^())+b/I,aftertext 16707Capture group count = 1 16708Max back reference = 1 16709Last code unit = 'b' 16710Subject length lower bound = 1 16711 abc 16712 0: b 16713 0+ c 16714 16715/(?(1)^()|^)+b/I,aftertext 16716Capture group count = 1 16717Max back reference = 1 16718Compile options: <none> 16719Overall options: anchored 16720First code unit = 'b' 16721Subject length lower bound = 1 16722 bbc 16723 0: b 16724 0+ bc 16725\= Expect no match 16726 abc 16727No match 16728 16729/(?(1)^()|^)*b/I,aftertext 16730Capture group count = 1 16731Max back reference = 1 16732First code unit = 'b' 16733Subject length lower bound = 1 16734 bbc 16735 0: b 16736 0+ bc 16737 abc 16738 0: b 16739 0+ c 16740 xbc 16741 0: b 16742 0+ c 16743 16744/(?(1)^())+b/I,aftertext 16745Capture group count = 1 16746Max back reference = 1 16747Last code unit = 'b' 16748Subject length lower bound = 1 16749 abc 16750 0: b 16751 0+ c 16752 16753/(?(1)^a()|^a)+b/I,aftertext 16754Capture group count = 1 16755Max back reference = 1 16756Compile options: <none> 16757Overall options: anchored 16758First code unit = 'a' 16759Last code unit = 'b' 16760Subject length lower bound = 2 16761 abc 16762 0: ab 16763 0+ c 16764\= Expect no match 16765 bbc 16766No match 16767 16768/(?(1)^|^(a))+b/I,aftertext 16769Capture group count = 1 16770Max back reference = 1 16771Compile options: <none> 16772Overall options: anchored 16773Last code unit = 'b' 16774Subject length lower bound = 1 16775 abc 16776 0: ab 16777 0+ c 16778 1: a 16779\= Expect no match 16780 bbc 16781No match 16782 16783/(?(1)^a()|^a)*b/I,aftertext 16784Capture group count = 1 16785Max back reference = 1 16786Last code unit = 'b' 16787Subject length lower bound = 1 16788 abc 16789 0: ab 16790 0+ c 16791 bbc 16792 0: b 16793 0+ bc 16794 xbc 16795 0: b 16796 0+ c 16797 16798/a(b)c|xyz/g,allvector,replace=<$0> 16799 abcdefabcpqr\=ovector=4 16800 2: <abc>def<abc>pqr 16801 0: 6 9 16802 1: 7 8 16803 2: <unchanged> 16804 3: <unchanged> 16805 abxyz\=ovector=4 16806 1: ab<xyz> 16807 0: 2 5 16808 1: <unset> 16809 2: <unchanged> 16810 3: <unchanged> 16811 abcdefxyz\=ovector=4 16812 2: <abc>def<xyz> 16813 0: 6 9 16814 1: <unset> 16815 2: <unchanged> 16816 3: <unchanged> 16817 16818/a(b)c|xyz/allvector 16819 abcdef\=ovector=4 16820 0: abc 16821 1: b 16822 2: <unchanged> 16823 3: <unchanged> 16824 abxyz\=ovector=4 16825 0: xyz 16826 1: <unset> 16827 2: <unchanged> 16828 3: <unchanged> 16829 16830/a(b)c|xyz/g,replace=<$0>,substitute_callout 16831 abcdefabcpqr 16832 1(2) Old 0 3 "abc" New 0 5 "<abc>" 16833 2(2) Old 6 9 "abc" New 8 13 "<abc>" 16834 2: <abc>def<abc>pqr 16835 abxyzpqrabcxyz 16836 1(1) Old 2 5 "xyz" New 2 7 "<xyz>" 16837 2(2) Old 8 11 "abc" New 10 15 "<abc>" 16838 3(1) Old 11 14 "xyz" New 15 20 "<xyz>" 16839 3: ab<xyz>pqr<abc><xyz> 16840 12abc34xyz99abc55\=substitute_stop=2 16841 1(2) Old 2 5 "abc" New 2 7 "<abc>" 16842 2(1) Old 7 10 "xyz" New 9 14 "<xyz> STOPPED" 16843 2: 12<abc>34xyz99abc55 16844 12abc34xyz99abc55\=substitute_skip=1 16845 1(2) Old 2 5 "abc" New 2 7 "<abc> SKIPPED" 16846 2(1) Old 7 10 "xyz" New 7 12 "<xyz>" 16847 3(2) Old 12 15 "abc" New 14 19 "<abc>" 16848 3: 12abc34<xyz>99<abc>55 16849 12abc34xyz99abc55\=substitute_skip=2 16850 1(2) Old 2 5 "abc" New 2 7 "<abc>" 16851 2(1) Old 7 10 "xyz" New 9 14 "<xyz> SKIPPED" 16852 3(2) Old 12 15 "abc" New 14 19 "<abc>" 16853 3: 12<abc>34xyz99<abc>55 16854 16855/a(b)c|xyz/g,replace=<$0> 16856 abcdefabcpqr 16857 2: <abc>def<abc>pqr 16858 abxyzpqrabcxyz 16859 3: ab<xyz>pqr<abc><xyz> 16860 12abc34xyz\=substitute_stop=2 16861 1(2) Old 2 5 "abc" New 2 7 "<abc>" 16862 2(1) Old 7 10 "xyz" New 9 14 "<xyz> STOPPED" 16863 2: 12<abc>34xyz 16864 12abc34xyz\=substitute_skip=1 16865 1(2) Old 2 5 "abc" New 2 7 "<abc> SKIPPED" 16866 2(1) Old 7 10 "xyz" New 7 12 "<xyz>" 16867 2: 12abc34<xyz> 16868 16869/a(b)c|xyz/replace=<$0> 16870 abcdefabcpqr 16871 1: <abc>defabcpqr 16872 12abc34xyz\=substitute_skip=1 16873 1(2) Old 2 5 "abc" New 2 7 "<abc> SKIPPED" 16874 1: 12abc34xyz 16875 12abc34xyz\=substitute_stop=1 16876 1(2) Old 2 5 "abc" New 2 7 "<abc> STOPPED" 16877 1: 12abc34xyz 16878 16879/abc\rdef/ 16880 abc\ndef 16881No match 16882 16883/abc\rdef\x{0d}xyz/escaped_cr_is_lf 16884 abc\ndef\rxyz 16885 0: abc\x0adef\x0dxyz 16886\= Expect no match 16887 abc\ndef\nxyz 16888No match 16889 16890/(?(*ACCEPT)xxx)/ 16891Failed: error 128 at offset 2: assertion expected after (?( or (?(?C) 16892 16893/(?(*atomic:xx)xxx)/ 16894Failed: error 128 at offset 10: assertion expected after (?( or (?(?C) 16895 16896/(?(*script_run:xxx)zzz)/ 16897Failed: error 128 at offset 14: assertion expected after (?( or (?(?C) 16898 16899/foobar/ 16900 the foobar thing\=copy_matched_subject 16901 0: foobar 16902 the foobar thing\=copy_matched_subject,zero_terminate 16903 0: foobar 16904 16905/foobar/g 16906 the foobar thing foobar again\=copy_matched_subject 16907 0: foobar 16908 0: foobar 16909 16910/(*:XX)^abc/I 16911Capture group count = 0 16912Compile options: <none> 16913Overall options: anchored 16914First code unit = 'a' 16915Subject length lower bound = 3 16916 16917/(*COMMIT:XX)^abc/I 16918Capture group count = 0 16919Compile options: <none> 16920Overall options: anchored 16921First code unit = 'a' 16922Subject length lower bound = 3 16923 16924/(*ACCEPT:XX)^abc/I 16925Capture group count = 0 16926May match empty string 16927Subject length lower bound = 0 16928 16929/abc/replace=xyz 16930 abc\=null_context 16931 1: xyz 16932 16933/abc/replace=xyz,substitute_callout 16934 abc 16935 1(1) Old 0 3 "abc" New 0 3 "xyz" 16936 1: xyz 16937\= Expect error message 16938 abc\=null_context 16939** Replacement callouts are not supported with null_context. 16940 16941/\[()]{65535}()/expand 16942Failed: error 197 at offset 131071: too many capturing groups (maximum 65535) 16943 16944/\[()]{65535}(?<A>)/expand 16945Failed: error 197 at offset 131075: too many capturing groups (maximum 65535) 16946 16947/a(?:(*ACCEPT))??bc/ 16948 abc 16949 0: abc 16950 axy 16951 0: a 16952 16953/a(*ACCEPT)??bc/ 16954 abc 16955 0: abc 16956 axy 16957 0: a 16958 16959/a(*ACCEPT:XX)??bc/mark 16960 abc 16961 0: abc 16962 axy 16963 0: a 16964MK: XX 16965 16966/(*:\)?/ 16967Failed: error 109 at offset 5: quantifier does not follow a repeatable item 16968 16969/(*:\Q \E){5}/alt_verbnames 16970Failed: error 109 at offset 11: quantifier does not follow a repeatable item 16971 16972/(?=abc)/I 16973Capture group count = 0 16974May match empty string 16975First code unit = 'a' 16976Last code unit = 'c' 16977Subject length lower bound = 2 16978 16979/(?|(X)|(XY))\1abc/I 16980Capture group count = 1 16981Max back reference = 1 16982First code unit = 'X' 16983Last code unit = 'c' 16984Subject length lower bound = 4 16985 16986/(?|(a)|(bcde))(c)\2/I 16987Capture group count = 2 16988Max back reference = 2 16989Starting code units: a b 16990Last code unit = 'c' 16991Subject length lower bound = 3 16992 16993/(?|(a)|(bcde))(c)\1/I 16994Capture group count = 2 16995Max back reference = 1 16996Starting code units: a b 16997Last code unit = 'c' 16998Subject length lower bound = 2 16999 17000/(?|(?'A'a)|(?'A'bcde))(?'B'c)\k'B'(?'A')/I,dupnames 17001Capture group count = 3 17002Max back reference = 2 17003Named capture groups: 17004 A 1 17005 A 3 17006 B 2 17007Options: dupnames 17008Starting code units: a b 17009Last code unit = 'c' 17010Subject length lower bound = 3 17011 17012/(?|(?'A'a)|(?'A'bcde))(?'B'c)\k'A'(?'A')/I,dupnames 17013Capture group count = 3 17014Max back reference = 3 17015Named capture groups: 17016 A 1 17017 A 3 17018 B 2 17019Options: dupnames 17020Starting code units: a b 17021Last code unit = 'c' 17022Subject length lower bound = 2 17023 17024/((a|)+)+Z/I 17025Capture group count = 2 17026Starting code units: Z a 17027Last code unit = 'Z' 17028Subject length lower bound = 1 17029 17030/((?=a))[abcd]/I 17031Capture group count = 1 17032First code unit = 'a' 17033Subject length lower bound = 1 17034 17035/A(?:(*ACCEPT))?B/info 17036Capture group count = 0 17037First code unit = 'A' 17038Subject length lower bound = 1 17039 17040/(A(*ACCEPT)??B)C/ 17041 ABC 17042 0: ABC 17043 1: AB 17044 AXY 17045 0: A 17046 1: A 17047 17048/(?<=(?<=a)b)c.*/I 17049Capture group count = 0 17050Max lookbehind = 1 17051First code unit = 'c' 17052Subject length lower bound = 1 17053 abc\=ph 17054Partial match: c 17055\= Expect no match 17056 xbc\=ph 17057No match 17058 17059/(?<=ab)c.*/I 17060Capture group count = 0 17061Max lookbehind = 2 17062First code unit = 'c' 17063Subject length lower bound = 1 17064 abc\=ph 17065Partial match: c 17066\= Expect no match 17067 xbc\=ph 17068No match 17069 17070/(?<=a(?<=a|a)c)/I 17071Capture group count = 0 17072Max lookbehind = 2 17073May match empty string 17074Subject length lower bound = 0 17075 17076/(?<=a(?<=a|ba)c)/I 17077Capture group count = 0 17078Max lookbehind = 2 17079May match empty string 17080Subject length lower bound = 0 17081 17082/(?<=(?<=a)b)(?<!abcd)/I 17083Capture group count = 0 17084Max lookbehind = 4 17085May match empty string 17086Subject length lower bound = 0 17087 17088/(?<=(?<=a)b)(?<!abcd)(?<=(?<=a)bcde)/I 17089Capture group count = 0 17090Max lookbehind = 4 17091May match empty string 17092Subject length lower bound = 0 17093 17094# Addition overflow 17095/( {32742} {42})(?<!\1{65481})/ 17096Failed: error 187 at offset 15: lookbehind assertion is too long 17097 17098# Multiplication overflow 17099/(X{65535})(?<=\1{32770})/ 17100Failed: error 187 at offset 10: lookbehind assertion is too long 17101 17102# ---- Non-atomic assertion tests ---- 17103 17104# Expect error: not allowed as a condition 17105/(?(*napla:xx)bc)/ 17106Failed: error 198 at offset 9: atomic assertion expected after (?( or (?(?C) 17107 17108/\A(*pla:.*\b(\w++))(?>.*?\b\1\b){3}/ 17109 word1 word3 word1 word2 word3 word2 word2 word1 word3 word4 17110No match 17111 17112/\A(*napla:.*\b(\w++))(?>.*?\b\1\b){3}/ 17113 word1 word3 word1 word2 word3 word2 word2 word1 word3 word4 17114 0: word1 word3 word1 word2 word3 word2 word2 word1 word3 17115 1: word3 17116 17117/\A(?*.*\b(\w++))(?>.*?\b\1\b){3}/ 17118 word1 word3 word1 word2 word3 word2 word2 word1 word3 word4 17119 0: word1 word3 word1 word2 word3 word2 word2 word1 word3 17120 1: word3 17121 17122/(*plb:(.)..|(.)...)(\1|\2)/ 17123 abcdb\=offset=4 17124 0: b 17125 1: b 17126 2: <unset> 17127 3: b 17128 abcda\=offset=4 17129No match 17130 17131/(*naplb:(.)..|(.)...)(\1|\2)/ 17132 abcdb\=offset=4 17133 0: b 17134 1: b 17135 2: <unset> 17136 3: b 17137 abcda\=offset=4 17138 0: a 17139 1: <unset> 17140 2: a 17141 3: a 17142 17143/(?<*(.)..|(.)...)(\1|\2)/ 17144 abcdb\=offset=4 17145 0: b 17146 1: b 17147 2: <unset> 17148 3: b 17149 abcda\=offset=4 17150 0: a 17151 1: <unset> 17152 2: a 17153 3: a 17154 17155/(*non_atomic_positive_lookahead:ab)/B 17156------------------------------------------------------------------ 17157 Bra 17158 Non-atomic assert 17159 ab 17160 Ket 17161 Ket 17162 End 17163------------------------------------------------------------------ 17164 17165/(*non_atomic_positive_lookbehind:ab)/B 17166------------------------------------------------------------------ 17167 Bra 17168 Non-atomic assert back 17169 Reverse 17170 ab 17171 Ket 17172 Ket 17173 End 17174------------------------------------------------------------------ 17175 17176/(*pla:ab+)/B 17177------------------------------------------------------------------ 17178 Bra 17179 Assert 17180 a 17181 b++ 17182 Ket 17183 Ket 17184 End 17185------------------------------------------------------------------ 17186 17187/(*napla:ab+)/B 17188------------------------------------------------------------------ 17189 Bra 17190 Non-atomic assert 17191 a 17192 b+ 17193 Ket 17194 Ket 17195 End 17196------------------------------------------------------------------ 17197 17198/(*napla:)+/ 17199 17200/(*naplb:)+/ 17201 17202/(*napla:^x|^y)/I 17203Capture group count = 0 17204May match empty string 17205Compile options: <none> 17206Overall options: anchored 17207Starting code units: x y 17208Subject length lower bound = 1 17209 17210/(*napla:abc|abd)/I 17211Capture group count = 0 17212May match empty string 17213First code unit = 'a' 17214Subject length lower bound = 1 17215 17216/(*napla:a|(.)(*ACCEPT)zz)\1../ 17217 abcd 17218 0: abc 17219 1: a 17220 17221/(*napla:a(*ACCEPT)zz|(.))\1../ 17222 abcd 17223 0: bcd 17224 1: b 17225 17226/(*napla:a|(*COMMIT)(.))\1\1/ 17227 aabc 17228 0: aa 17229 1: a 17230\= Expect no match 17231 abbc 17232No match 17233 17234/(*napla:a|(.))\1\1/ 17235 aabc 17236 0: aa 17237 1: a 17238 abbc 17239 0: bb 17240 1: b 17241 17242# ---- 17243 17244# Expect error (recursion => not fixed length) 17245/(\2)((?=(?<=\1)))/ 17246Failed: error 125 at offset 8: lookbehind assertion is not fixed length 17247 17248/c*+(?<=[bc])/ 17249 abc\=ph 17250Partial match: c 17251 ab\=ph 17252Partial match: 17253 abc\=ps 17254 0: c 17255 ab\=ps 17256 0: 17257 17258/c++(?<=[bc])/ 17259 abc\=ph 17260Partial match: c 17261 ab\=ph 17262Partial match: 17263 17264/(?<=(?=.(?<=x)))/ 17265 abx 17266 0: 17267 ab\=ph 17268Partial match: 17269 bxyz 17270 0: 17271 xyz 17272 0: 17273 17274/\z/ 17275 abc\=ph 17276Partial match: 17277 abc\=ps 17278 0: 17279 17280/\Z/ 17281 abc\=ph 17282Partial match: 17283 abc\=ps 17284 0: 17285 abc\n\=ph 17286Partial match: \x0a 17287 abc\n\=ps 17288 0: 17289 17290/(?![ab]).*/ 17291 ab\=ph 17292Partial match: 17293 17294/c*+/ 17295 ab\=ph,offset=2 17296Partial match: 17297 17298/\A\s*(a|(?:[^`]{28500}){4})/I 17299Capture group count = 1 17300Max lookbehind = 1 17301Compile options: <none> 17302Overall options: anchored 17303Subject length lower bound = 1 17304 a 17305 0: a 17306 1: a 17307 17308/\A\s*((?:[^`]{28500}){4})/I 17309Capture group count = 1 17310Max lookbehind = 1 17311Compile options: <none> 17312Overall options: anchored 17313Subject length lower bound = 65535 17314 17315/\A\s*((?:[^`]{28500}){4}|a)/I 17316Capture group count = 1 17317Max lookbehind = 1 17318Compile options: <none> 17319Overall options: anchored 17320Subject length lower bound = 1 17321 a 17322 0: a 17323 1: a 17324 17325/(?<A>a)(?(<A>)b)((?<=b).*)/B 17326------------------------------------------------------------------ 17327 Bra 17328 CBra 1 17329 a 17330 Ket 17331 Cond 17332 1 Cond ref 17333 b 17334 Ket 17335 CBra 2 17336 Assert back 17337 Reverse 17338 b 17339 Ket 17340 Any*+ 17341 Ket 17342 Ket 17343 End 17344------------------------------------------------------------------ 17345 17346/(?(1)b)((?<=b).*)/B 17347------------------------------------------------------------------ 17348 Bra 17349 Cond 17350 1 Cond ref 17351 b 17352 Ket 17353 CBra 1 17354 Assert back 17355 Reverse 17356 b 17357 Ket 17358 Any*+ 17359 Ket 17360 Ket 17361 End 17362------------------------------------------------------------------ 17363 17364/(?(R1)b)((?<=b).*)/B 17365------------------------------------------------------------------ 17366 Bra 17367 Cond 17368 Cond recurse 1 17369 b 17370 Ket 17371 CBra 1 17372 Assert back 17373 Reverse 17374 b 17375 Ket 17376 Any*+ 17377 Ket 17378 Ket 17379 End 17380------------------------------------------------------------------ 17381 17382/(?(DEFINE)b)((?<=b).*)/B 17383------------------------------------------------------------------ 17384 Bra 17385 Cond 17386 Cond false 17387 b 17388 Ket 17389 CBra 1 17390 Assert back 17391 Reverse 17392 b 17393 Ket 17394 Any*+ 17395 Ket 17396 Ket 17397 End 17398------------------------------------------------------------------ 17399 17400/(?(VERSION=10.3)b)((?<=b).*)/B 17401------------------------------------------------------------------ 17402 Bra 17403 Cond 17404 Cond false 17405 b 17406 Ket 17407 CBra 1 17408 Assert back 17409 Reverse 17410 b 17411 Ket 17412 Any*+ 17413 Ket 17414 Ket 17415 End 17416------------------------------------------------------------------ 17417 17418/[aA]b[cC]/IB 17419------------------------------------------------------------------ 17420 Bra 17421 /i a 17422 b 17423 /i c 17424 Ket 17425 End 17426------------------------------------------------------------------ 17427Capture group count = 0 17428First code unit = 'a' (caseless) 17429Last code unit = 'c' (caseless) 17430Subject length lower bound = 3 17431 17432/[cc]abcd/I 17433Capture group count = 0 17434First code unit = 'c' 17435Last code unit = 'd' 17436Subject length lower bound = 5 17437 17438/[Cc]abcd/I 17439Capture group count = 0 17440First code unit = 'C' (caseless) 17441Last code unit = 'd' 17442Subject length lower bound = 5 17443 17444/[c]abcd/I 17445Capture group count = 0 17446First code unit = 'c' 17447Last code unit = 'd' 17448Subject length lower bound = 5 17449 17450/(?:c|C)abcd/I 17451Capture group count = 0 17452First code unit = 'C' (caseless) 17453Last code unit = 'd' 17454Subject length lower bound = 5 17455 17456/(a)?a/I 17457Capture group count = 1 17458Starting code units: a 17459Last code unit = 'a' 17460Subject length lower bound = 1 17461 manm 17462 0: a 17463 17464/^(?|(\*)(*napla:\S*_(\2?+.+))|(\w)(?=\S*_(\2?+\1)))+_\2$/ 17465 *abc_12345abc 17466 0: *abc_12345abc 17467 1: c 17468 2: 12345abc 17469 17470/^(?|(\*)(*napla:\S*_(\3?+.+))|(\w)(?=\S*_((\2?+\1))))+_\2$/ 17471 *abc_12345abc 17472 0: *abc_12345abc 17473 1: c 17474 2: 12345abc 17475 3: 12345abc 17476 17477/^((\1+)(?C)|\d)+133X$/ 17478 111133X\=callout_capture 17479Callout 0: last capture = 2 17480 1: 1 17481 2: 111 17482--->111133X 17483 ^ ^ | 17484Callout 0: last capture = 2 17485 1: 3 17486 2: 3 17487--->111133X 17488 ^ ^ | 17489Callout 0: last capture = 2 17490 1: 1 17491 2: 11 17492--->111133X 17493 ^ ^ | 17494Callout 0: last capture = 2 17495 1: 3 17496 2: 3 17497--->111133X 17498 ^ ^ | 17499 0: 111133X 17500 1: 11 17501 2: 11 17502 17503/abc/replace=xyz,substitute_replacement_only 17504 123abc456 17505 1: xyz 17506 17507/a(?<ONE>b)c(?<TWO>d)e/g,replace=X$ONE+${TWO}Z,substitute_replacement_only 17508 "abcde-abcde-" 17509 2: Xb+dZXb+dZ 17510 17511/a(b)c|xyz/g,replace=<$0>,substitute_callout,substitute_replacement_only 17512 abcdefabcpqr 17513 1(2) Old 0 3 "abc" New 0 5 "<abc>" 17514 2(2) Old 6 9 "abc" New 5 10 "<abc>" 17515 2: <abc><abc> 17516 abxyzpqrabcxyz 17517 1(1) Old 2 5 "xyz" New 0 5 "<xyz>" 17518 2(2) Old 8 11 "abc" New 5 10 "<abc>" 17519 3(1) Old 11 14 "xyz" New 10 15 "<xyz>" 17520 3: <xyz><abc><xyz> 17521 12abc34xyz99abc55\=substitute_stop=2 17522 1(2) Old 2 5 "abc" New 0 5 "<abc>" 17523 2(1) Old 7 10 "xyz" New 5 10 "<xyz> STOPPED" 17524 2: <abc> 17525 12abc34xyz99abc55\=substitute_skip=1 17526 1(2) Old 2 5 "abc" New 0 5 "<abc> SKIPPED" 17527 2(1) Old 7 10 "xyz" New 0 5 "<xyz>" 17528 3(2) Old 12 15 "abc" New 5 10 "<abc>" 17529 3: <xyz><abc> 17530 12abc34xyz99abc55\=substitute_skip=2 17531 1(2) Old 2 5 "abc" New 0 5 "<abc>" 17532 2(1) Old 7 10 "xyz" New 5 10 "<xyz> SKIPPED" 17533 3(2) Old 12 15 "abc" New 5 10 "<abc>" 17534 3: <abc><abc> 17535 17536/a(..)d/replace=>$1<,substitute_matched 17537 xyzabcdxyzabcdxyz 17538 1: xyz>bc<xyzabcdxyz 17539 xyzabcdxyzabcdxyz\=ovector=2 17540 1: xyz>bc<xyzabcdxyz 17541\= Expect error 17542 xyzabcdxyzabcdxyz\=ovector=1 17543Failed: error -54 at offset 3 in replacement: requested value is not available 17544 17545/a(..)d/g,replace=>$1<,substitute_matched 17546 xyzabcdxyzabcdxyz 17547 2: xyz>bc<xyz>bc<xyz 17548 xyzabcdxyzabcdxyz\=ovector=2 17549 2: xyz>bc<xyz>bc<xyz 17550\= Expect error 17551 xyzabcdxyzabcdxyz\=ovector=1 17552Failed: error -54 at offset 3 in replacement: requested value is not available 17553 xyzabcdxyzabcdxyz\=ovector=1,substitute_unset_empty 17554Failed: error -54 at offset 3 in replacement: requested value is not available 17555 17556/55|a(..)d/g,replace=>$1<,substitute_matched 17557 xyz55abcdxyzabcdxyz\=ovector=2,substitute_unset_empty 17558 3: xyz><>bc<xyz>bc<xyz 17559\= Expect error 17560 xyz55abcdxyzabcdxyz\=ovector=2 17561Failed: error -55 at offset 3 in replacement: requested value is not set 17562 17563/55|a(..)d/replace=>$1<,substitute_matched 17564 xyz55abcdxyzabcdxyz\=ovector=2,substitute_unset_empty 17565 1: xyz><abcdxyzabcdxyz 17566 17567/55|a(..)d/replace=>$1< 17568 xyz55abcdxyzabcdxyz\=ovector=2,substitute_unset_empty 17569 1: xyz><abcdxyzabcdxyz 17570 17571/55|a(..)d/g,replace=>$1< 17572 xyz55abcdxyzabcdxyz\=ovector=2,substitute_unset_empty 17573 3: xyz><>bc<xyz>bc<xyz 17574 17575/abc/replace=,caseless 17576 XabcY 17577 0: abc 17578 XABCY 17579 0: ABC 17580 17581/abc/replace=[4],caseless 17582 XabcY 17583 1: XY 17584 XABCY 17585 1: XY 17586 17587/abc/replace=*,caseless 17588 XabcY 17589 1: X*Y 17590 XABCY 17591 1: X*Y 17592 XabcY\=replace= 17593 0: abc 17594 17595# Expect non-fixed-length error 17596 17597"(?<=X(?(DEFINE)(.*))(?1))." 17598Failed: error 125 at offset 0: lookbehind assertion is not fixed length 17599 17600/\sxxx\s/tables=1 17601\= Expect no match 17602 AB\x{85}xxx\x{a0}XYZ 17603No match 17604 17605/\sxxx\s/tables=2 17606 AB\x{85}xxx\x{a0}XYZ 17607 0: \x85xxx\xa0 17608 17609/^\w+/tables=2 17610 École 17611 0: \xc3 17612 17613/^\w+/tables=3 17614** 'Tables = 3' is invalid: binary tables have not been loaded 17615 École 17616 17617#loadtables ./testbtables 17618 17619/^\w+/tables=3 17620 École 17621 0: \xc3 17622 17623/"(*MARK:>" 00 "<).."/hex,mark,no_start_optimize 17624 AB 17625 0: AB 17626MK: >\x00< 17627 A\=ph 17628Partial match, mark=>\x00<: A 17629\= Expect no match 17630 A 17631No match, mark = >\x00< 17632 17633/"(*MARK:>" 00 "<).(?C1)."/hex,mark,no_start_optimize 17634 AB 17635--->AB 17636 1 ^^ . 17637Latest Mark: >\x00< 17638 0: AB 17639MK: >\x00< 17640 17641/(?(VERSION=0.0/ 17642Failed: error 179 at offset 14: syntax error or number too big in (?(VERSION condition 17643 17644# Perl has made \K in lookarounds an error. PCRE2 now rejects as well, unless 17645# explicitly authorized. 17646 17647/(?=a\Kb)ab/ 17648Failed: error 199 at offset 10: \K is not allowed in lookarounds (but see PCRE2_EXTRA_ALLOW_LOOKAROUND_BSK) 17649 17650/(?=a\Kb)ab/allow_lookaround_bsk 17651 ab 17652 0: b 17653 17654/(?!a\Kb)ac/ 17655Failed: error 199 at offset 10: \K is not allowed in lookarounds (but see PCRE2_EXTRA_ALLOW_LOOKAROUND_BSK) 17656 17657/(?!a\Kb)ac/allow_lookaround_bsk 17658 ac 17659 0: ac 17660 17661/^abc(?<=b\Kc)d/ 17662Failed: error 199 at offset 14: \K is not allowed in lookarounds (but see PCRE2_EXTRA_ALLOW_LOOKAROUND_BSK) 17663 17664/^abc(?<=b\Kc)d/allow_lookaround_bsk 17665 abcd 17666 0: cd 17667 17668/^abc(?<!b\Kq)d/ 17669Failed: error 199 at offset 14: \K is not allowed in lookarounds (but see PCRE2_EXTRA_ALLOW_LOOKAROUND_BSK) 17670 17671/^abc(?<!b\Kq)d/,allow_lookaround_bsk 17672 abcd 17673 0: abcd 17674 17675# --------- 17676 17677# Tests for zero-length NULL to be treated as an empty string. 17678 17679// 17680 \=null_subject 17681 0: 17682\= Expect error 17683 abc\=null_subject 17684Failed: error -51: NULL argument passed with non-zero length 17685 17686//replace=[20] 17687 abc\=null_replacement 17688 1: abc 17689 \=null_subject 17690 1: 17691 \=null_replacement 17692 1: 17693 17694/X*/g,replace=xy 17695\= Expect error 17696 >X<\=null_replacement 17697Failed: error -51: NULL argument passed with non-zero length 17698 17699/X+/replace=[20] 17700 >XX<\=null_replacement 17701 1: >< 17702 17703# --------- 17704 17705/[Aa]{2}/BI 17706------------------------------------------------------------------ 17707 Bra 17708 /i A{2} 17709 Ket 17710 End 17711------------------------------------------------------------------ 17712Capture group count = 0 17713First code unit = 'A' (caseless) 17714Last code unit = 'A' (caseless) 17715Subject length lower bound = 2 17716 aabcd 17717 0: aa 17718 17719/A{2}/iBI 17720------------------------------------------------------------------ 17721 Bra 17722 /i A{2} 17723 Ket 17724 End 17725------------------------------------------------------------------ 17726Capture group count = 0 17727Options: caseless 17728First code unit = 'A' (caseless) 17729Last code unit = 'A' (caseless) 17730Subject length lower bound = 2 17731 aabcd 17732 0: aa 17733 17734/[Aa]{2,3}/BI 17735------------------------------------------------------------------ 17736 Bra 17737 /i A{2} 17738 /i A?+ 17739 Ket 17740 End 17741------------------------------------------------------------------ 17742Capture group count = 0 17743First code unit = 'A' (caseless) 17744Last code unit = 'A' (caseless) 17745Subject length lower bound = 2 17746 aabcd 17747 0: aa 17748 17749-- 17750 \[X]{-10} 17751** Zero or negative repeat not allowed 17752 17753# Check imposition of maximum by match_data_create(). 17754 17755/abcd/ 17756 abcd\=ovector=65536 17757 0: abcd 17758 17759# End of testinput2 17760Error -70: PCRE2_ERROR_BADDATA (unknown error number) 17761Error -62: bad serialized data 17762Error -2: partial match 17763Error -1: no match 17764Error 0: PCRE2_ERROR_BADDATA (unknown error number) 17765Error 100: no error 17766Error 101: \ at end of pattern 17767Error 191: PCRE2_EXTRA_ALLOW_SURROGATE_ESCAPES is not allowed in UTF-16 mode 17768Error 200: PCRE2_ERROR_BADDATA (unknown error number) 17769