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 a\x{0}b 19 20 # /a0b/ where 0 is a binary zero 21 /61 00 62/B,hex 22 a\x{0}b 23 24 # /(?#B0C)DE/ where 0 is a binary zero 25 /28 3f 23 42 00 43 29 44 45/B,hex 26 DE 27 28 /(a)b|/I 29 30 /abc/I 31 abc 32 defabc 33 abc\=anchored 34 \= Expect no match 35 defabc\=anchored 36 ABC 37 38 /^abc/I 39 abc 40 abc\=anchored 41 \= Expect no match 42 defabc 43 defabc\=anchored 44 45 /a+bc/I 46 47 /a*bc/I 48 49 /a{3}bc/I 50 51 /(abc|a+z)/I 52 53 /^abc$/I 54 abc 55 \= Expect no match 56 def\nabc 57 58 /ab\idef/ 59 60 /(?X)ab\idef/ 61 62 /x{5,4}/ 63 64 /z{65536}/ 65 66 /[abcd/ 67 68 /[\B]/B 69 70 /[\R]/B 71 72 /[\X]/B 73 74 /[z-a]/ 75 76 /^*/ 77 78 /(abc/ 79 80 /(?# abc/ 81 82 /(?z)abc/ 83 84 /.*b/I 85 86 /.*?b/I 87 88 /cat|dog|elephant/I 89 this sentence eventually mentions a cat 90 this sentences rambles on and on for a while and then reaches elephant 91 92 /cat|dog|elephant/I 93 this sentence eventually mentions a cat 94 this sentences rambles on and on for a while and then reaches elephant 95 96 /cat|dog|elephant/Ii 97 this sentence eventually mentions a CAT cat 98 this sentences rambles on and on for a while to elephant ElePhant 99 100 /a|[bcd]/I 101 102 /(a|[^\dZ])/I 103 104 /(a|b)*[\s]/I 105 106 /(ab\2)/ 107 108 /{4,5}abc/ 109 110 /(a)(b)(c)\2/I 111 abcb 112 abcb\=ovector=0 113 abcb\=ovector=1 114 abcb\=ovector=2 115 abcb\=ovector=3 116 abcb\=ovector=4 117 118 /(a)bc|(a)(b)\2/I 119 abc 120 abc\=ovector=0 121 abc\=ovector=1 122 abc\=ovector=2 123 aba 124 aba\=ovector=0 125 aba\=ovector=1 126 aba\=ovector=2 127 aba\=ovector=3 128 aba\=ovector=4 129 130 /abc$/I,dollar_endonly 131 abc 132 \= Expect no match 133 abc\n 134 abc\ndef 135 136 /(a)(b)(c)(d)(e)\6/ 137 138 /the quick brown fox/I 139 the quick brown fox 140 this is a line with the quick brown fox 141 142 /the quick brown fox/I,anchored 143 the quick brown fox 144 \= Expect no match 145 this is a line with the quick brown fox 146 147 /ab(?z)cd/ 148 149 /^abc|def/I 150 abcdef 151 abcdef\=notbol 152 153 /.*((abc)$|(def))/I 154 defabc 155 defabc\=noteol 156 157 /)/ 158 159 /a[]b/ 160 161 /[^aeiou ]{3,}/I 162 co-processors, and for 163 164 /<.*>/I 165 abc<def>ghi<klm>nop 166 167 /<.*?>/I 168 abc<def>ghi<klm>nop 169 170 /<.*>/I,ungreedy 171 abc<def>ghi<klm>nop 172 173 /(?U)<.*>/I 174 abc<def>ghi<klm>nop 175 176 /<.*?>/I,ungreedy 177 abc<def>ghi<klm>nop 178 179 /={3,}/I,ungreedy 180 abc========def 181 182 /(?U)={3,}?/I 183 abc========def 184 185 /(?<!bar|cattle)foo/I 186 foo 187 catfoo 188 \= Expect no match 189 the barfoo 190 and cattlefoo 191 192 /(?<=a+)b/ 193 194 /(?<=aaa|b{0,3})b/ 195 196 /(?<!(foo)a\1)bar/ 197 198 /(?i)abc/I 199 200 /(a|(?m)a)/I 201 202 /(?i)^1234/I 203 204 /(^b|(?i)^d)/I 205 206 /(?s).*/I 207 208 /[abcd]/I 209 210 /(?i)[abcd]/I 211 212 /(?m)[xy]|(b|c)/I 213 214 /(^a|^b)/Im 215 216 /(?i)(^a|^b)/Im 217 218 /(a)(?(1)a|b|c)/ 219 220 /(?(?=a)a|b|c)/ 221 222 /(?(1a)/ 223 224 /(?(1a))/ 225 226 /(?(?i))/ 227 228 /(?(abc))/ 229 230 /(?(?<ab))/ 231 232 /((?s)blah)\s+\1/I 233 234 /((?i)blah)\s+\1/I 235 236 /((?i)b)/IB 237 238 /(a*b|(?i:c*(?-i)d))/I 239 240 /a$/I 241 a 242 a\n 243 \= Expect no match 244 a\=noteol 245 a\n\=noteol 246 247 /a$/Im 248 a 249 a\n 250 a\n\=noteol 251 \= Expect no match 252 a\=noteol 253 254 /\Aabc/Im 255 256 /^abc/Im 257 258 /^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/I 259 aaaaabbbbbcccccdef 260 261 /(?<=foo)[ab]/I 262 263 /(?<!foo)(alpha|omega)/I 264 265 /(?!alphabet)[ab]/I 266 267 /(?<=foo\n)^bar/Im 268 foo\nbarbar 269 \= Expect no match 270 rhubarb 271 barbell 272 abc\nbarton 273 274 /^(?<=foo\n)bar/Im 275 foo\nbarbar 276 \= Expect no match 277 rhubarb 278 barbell 279 abc\nbarton 280 281 /(?>^abc)/Im 282 abc 283 def\nabc 284 \= Expect no match 285 defabc 286 287 /(?<=ab(c+)d)ef/ 288 289 /(?<=ab(?<=c+)d)ef/ 290 291 /(?<=ab(c|de)f)g/ 292 293 /The next three are in testinput2 because they have variable length branches/ 294 295 /(?<=bullock|donkey)-cart/I 296 the bullock-cart 297 a donkey-cart race 298 \= Expect no match 299 cart 300 horse-and-cart 301 302 /(?<=ab(?i)x|y|z)/I 303 304 /(?>.*)(?<=(abcd)|(xyz))/I 305 alphabetabcd 306 endingxyz 307 308 /(?<=ab(?i)x(?-i)y|(?i)z|b)ZZ/I 309 abxyZZ 310 abXyZZ 311 ZZZ 312 zZZ 313 bZZ 314 BZZ 315 \= Expect no match 316 ZZ 317 abXYZZ 318 zzz 319 bzz 320 321 /(?<!(foo)a)bar/I 322 bar 323 foobbar 324 \= Expect no match 325 fooabar 326 327 # This one is here because Perl behaves differently; see also the following. 328 329 /^(a\1?){4}$/I 330 \= Expect no match 331 aaaa 332 aaaaaa 333 334 # Perl does not fail these two for the final subjects. Neither did PCRE until 335 # release 8.01. The problem is in backtracking into a subpattern that contains 336 # a recursive reference to itself. PCRE has now made these into atomic patterns. 337 338 /^(xa|=?\1a){2}$/ 339 xa=xaa 340 \= Expect no match 341 xa=xaaa 342 343 /^(xa|=?\1a)+$/ 344 xa=xaa 345 \= Expect no match 346 xa=xaaa 347 348 # These are syntax tests from Perl 5.005 349 350 /a[b-a]/ 351 352 /a[]b/ 353 354 /a[/ 355 356 /*a/ 357 358 /(*)b/ 359 360 /abc)/ 361 362 /(abc/ 363 364 /a**/ 365 366 /)(/ 367 368 /\1/ 369 370 /\2/ 371 372 /(a)|\2/ 373 374 /a[b-a]/Ii 375 376 /a[]b/Ii 377 378 /a[/Ii 379 380 /*a/Ii 381 382 /(*)b/Ii 383 384 /abc)/Ii 385 386 /(abc/Ii 387 388 /a**/Ii 389 390 /)(/Ii 391 392 /:(?:/ 393 394 /(?<%)b/ 395 396 /a(?{)b/ 397 398 /a(?{{})b/ 399 400 /a(?{}})b/ 401 402 /a(?{"{"})b/ 403 404 /a(?{"{"}})b/ 405 406 /(?(1?)a|b)/ 407 408 /[a[:xyz:/ 409 410 /(?<=x+)y/ 411 412 /a{37,17}/ 413 414 /abc/\ 415 416 /abc/\i 417 418 /(a)bc(d)/I 419 abcd 420 abcd\=copy=2 421 abcd\=copy=5 422 423 /(.{20})/I 424 abcdefghijklmnopqrstuvwxyz 425 abcdefghijklmnopqrstuvwxyz\=copy=1 426 abcdefghijklmnopqrstuvwxyz\=get=1 427 428 /(.{15})/I 429 abcdefghijklmnopqrstuvwxyz 430 abcdefghijklmnopqrstuvwxyz\=copy=1,get=1 431 432 /(.{16})/I 433 abcdefghijklmnopqrstuvwxyz 434 abcdefghijklmnopqrstuvwxyz\=copy=1,get=1,getall 435 436 /^(a|(bc))de(f)/I 437 adef\=get=1,get=2,get=3,get=4,getall 438 bcdef\=get=1,get=2,get=3,get=4,getall 439 adefghijk\=copy=0 440 441 /^abc\00def/I 442 abc\00def\=copy=0,getall 443 444 /word ((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ 445 )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ 446 )?)?)?)?)?)?)?)?)?otherword/I 447 448 /.*X/IB 449 450 /.*X/IBs 451 452 /(.*X|^B)/IB 453 454 /(.*X|^B)/IBs 455 456 /(?s)(.*X|^B)/IB 457 458 /(?s:.*X|^B)/IB 459 460 /\Biss\B/I,aftertext 461 Mississippi 462 463 /iss/I,aftertext,altglobal 464 Mississippi 465 466 /\Biss\B/I,aftertext,altglobal 467 Mississippi 468 469 /\Biss\B/Ig,aftertext 470 Mississippi 471 \= Expect no match 472 Mississippi\=anchored 473 474 /(?<=[Ms])iss/Ig,aftertext 475 Mississippi 476 477 /(?<=[Ms])iss/I,aftertext,altglobal 478 Mississippi 479 480 /^iss/Ig,aftertext 481 ississippi 482 483 /.*iss/Ig,aftertext 484 abciss\nxyzisspqr 485 486 /.i./Ig,aftertext 487 Mississippi 488 Mississippi\=anchored 489 Missouri river 490 Missouri river\=anchored 491 492 /^.is/Ig,aftertext 493 Mississippi 494 495 /^ab\n/Ig,aftertext 496 ab\nab\ncd 497 498 /^ab\n/Igm,aftertext 499 ab\nab\ncd 500 501 /^/gm,newline=any 502 a\rb\nc\r\nxyz\=aftertext 503 504 /abc/I 505 506 /abc|bac/I 507 508 /(abc|bac)/I 509 510 /(abc|(c|dc))/I 511 512 /(abc|(d|de)c)/I 513 514 /a*/I 515 516 /a+/I 517 518 /(baa|a+)/I 519 520 /a{0,3}/I 521 522 /baa{3,}/I 523 524 /"([^\\"]+|\\.)*"/I 525 526 /(abc|ab[cd])/I 527 528 /(a|.)/I 529 530 /a|ba|\w/I 531 532 /abc(?=pqr)/I 533 534 /...(?<=abc)/I 535 536 /abc(?!pqr)/I 537 538 /ab./I 539 540 /ab[xyz]/I 541 542 /abc*/I 543 544 /ab.c*/I 545 546 /a.c*/I 547 548 /.c*/I 549 550 /ac*/I 551 552 /(a.c*|b.c*)/I 553 554 /a.c*|aba/I 555 556 /.+a/I 557 558 /(?=abcda)a.*/I 559 560 /(?=a)a.*/I 561 562 /a(b)*/I 563 564 /a\d*/I 565 566 /ab\d*/I 567 568 /a(\d)*/I 569 570 /abcde{0,0}/I 571 572 /ab\d+/I 573 574 /a(?(1)b)(.)/I 575 576 /a(?(1)bag|big)(.)/I 577 578 /a(?(1)bag|big)*(.)/I 579 580 /a(?(1)bag|big)+(.)/I 581 582 /a(?(1)b..|b..)(.)/I 583 584 /ab\d{0}e/I 585 586 /a?b?/I 587 a 588 b 589 ab 590 \ 591 \= Expect no match 592 \=notempty 593 594 /|-/I 595 abcd 596 -abc 597 ab-c\=notempty 598 \= Expect no match 599 abc\=notempty 600 601 /^.?abcd/I 602 603 /\( # ( at start 604 (?: # Non-capturing bracket 605 (?>[^()]+) # Either a sequence of non-brackets (no backtracking) 606 | # Or 607 (?R) # Recurse - i.e. nested bracketed string 608 )* # Zero or more contents 609 \) # Closing ) 610 /Ix 611 (abcd) 612 (abcd)xyz 613 xyz(abcd) 614 (ab(xy)cd)pqr 615 (ab(xycd)pqr 616 () abc () 617 12(abcde(fsh)xyz(foo(bar))lmno)89 618 \= Expect no match 619 abcd 620 abcd) 621 (abcd 622 623 /\( ( (?>[^()]+) | (?R) )* \) /Igx 624 (ab(xy)cd)pqr 625 1(abcd)(x(y)z)pqr 626 627 /\( (?: (?>[^()]+) | (?R) ) \) /Ix 628 (abcd) 629 (ab(xy)cd) 630 (a(b(c)d)e) 631 ((ab)) 632 \= Expect no match 633 () 634 635 /\( (?: (?>[^()]+) | (?R) )? \) /Ix 636 () 637 12(abcde(fsh)xyz(foo(bar))lmno)89 638 639 /\( ( (?>[^()]+) | (?R) )* \) /Ix 640 (ab(xy)cd) 641 642 /\( ( ( (?>[^()]+) | (?R) )* ) \) /Ix 643 (ab(xy)cd) 644 645 /\( (123)? ( ( (?>[^()]+) | (?R) )* ) \) /Ix 646 (ab(xy)cd) 647 (123ab(xy)cd) 648 649 /\( ( (123)? ( (?>[^()]+) | (?R) )* ) \) /Ix 650 (ab(xy)cd) 651 (123ab(xy)cd) 652 653 /\( (((((((((( ( (?>[^()]+) | (?R) )* )))))))))) \) /Ix 654 (ab(xy)cd) 655 656 /\( ( ( (?>[^()<>]+) | ((?>[^()]+)) | (?R) )* ) \) /Ix 657 (abcd(xyz<p>qrs)123) 658 659 /\( ( ( (?>[^()]+) | ((?R)) )* ) \) /Ix 660 (ab(cd)ef) 661 (ab(cd(ef)gh)ij) 662 663 /^[[:alnum:]]/IB 664 665 /^[[:^alnum:]]/IB 666 667 /^[[:alpha:]]/IB 668 669 /^[[:^alpha:]]/IB 670 671 /[_[:alpha:]]/I 672 673 /^[[:ascii:]]/IB 674 675 /^[[:^ascii:]]/IB 676 677 /^[[:blank:]]/IB 678 679 /^[[:^blank:]]/IB 680 681 /[\n\x0b\x0c\x0d[:blank:]]/I 682 683 /^[[:cntrl:]]/IB 684 685 /^[[:digit:]]/IB 686 687 /^[[:graph:]]/IB 688 689 /^[[:lower:]]/IB 690 691 /^[[:print:]]/IB 692 693 /^[[:punct:]]/IB 694 695 /^[[:space:]]/IB 696 697 /^[[:upper:]]/IB 698 699 /^[[:xdigit:]]/IB 700 701 /^[[:word:]]/IB 702 703 /^[[:^cntrl:]]/IB 704 705 /^[12[:^digit:]]/IB 706 707 /^[[:^blank:]]/IB 708 709 /[01[:alpha:]%]/IB 710 711 /[[.ch.]]/I 712 713 /[[=ch=]]/I 714 715 /[[:rhubarb:]]/I 716 717 /[[:upper:]]/Ii 718 A 719 a 720 721 /[[:lower:]]/Ii 722 A 723 a 724 725 /((?-i)[[:lower:]])[[:lower:]]/Ii 726 ab 727 aB 728 \= Expect no match 729 Ab 730 AB 731 732 /[\200-\110]/I 733 734 /^(?(0)f|b)oo/I 735 736 # This one's here because of the large output vector needed 737 738 /(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\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 739 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 740 741 # This one's here because Perl does this differently and PCRE2 can't at present 742 743 /(main(O)?)+/I 744 mainmain 745 mainOmain 746 747 # These are all cases where Perl does it differently (nested captures) 748 749 /^(a(b)?)+$/I 750 aba 751 752 /^(aa(bb)?)+$/I 753 aabbaa 754 755 /^(aa|aa(bb))+$/I 756 aabbaa 757 758 /^(aa(bb)??)+$/I 759 aabbaa 760 761 /^(?:aa(bb)?)+$/I 762 aabbaa 763 764 /^(aa(b(b))?)+$/I 765 aabbaa 766 767 /^(?:aa(b(b))?)+$/I 768 aabbaa 769 770 /^(?:aa(b(?:b))?)+$/I 771 aabbaa 772 773 /^(?:aa(bb(?:b))?)+$/I 774 aabbbaa 775 776 /^(?:aa(b(?:bb))?)+$/I 777 aabbbaa 778 779 /^(?:aa(?:b(b))?)+$/I 780 aabbaa 781 782 /^(?:aa(?:b(bb))?)+$/I 783 aabbbaa 784 785 /^(aa(b(bb))?)+$/I 786 aabbbaa 787 788 /^(aa(bb(bb))?)+$/I 789 aabbbbaa 790 791 # ---------------- 792 793 /#/IBx 794 795 /a#/IBx 796 797 /[\s]/IB 798 799 /[\S]/IB 800 801 /a(?i)b/IB 802 ab 803 aB 804 \= Expect no match 805 AB 806 807 /(a(?i)b)/IB 808 ab 809 aB 810 \= Expect no match 811 AB 812 813 / (?i)abc/IBx 814 815 /#this is a comment 816 (?i)abc/IBx 817 818 /123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/IB 819 820 /\Q123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/IB 821 822 /\Q\E/IB 823 \ 824 825 /\Q\Ex/IB 826 827 / \Q\E/IB 828 829 /a\Q\E/IB 830 abc 831 bca 832 bac 833 834 /a\Q\Eb/IB 835 abc 836 837 /\Q\Eabc/IB 838 839 /x*+\w/IB 840 \= Expect no match 841 xxxxx 842 843 /x?+/IB 844 845 /x++/IB 846 847 /x{1,3}+/B,no_auto_possess 848 849 /x{1,3}+/Bi,no_auto_possess 850 851 /[^x]{1,3}+/B,no_auto_possess 852 853 /[^x]{1,3}+/Bi,no_auto_possess 854 855 /(x)*+/IB 856 857 /^(\w++|\s++)*$/I 858 now is the time for all good men to come to the aid of the party 859 \= Expect no match 860 this is not a line with only words and spaces! 861 862 /(\d++)(\w)/I 863 12345a 864 \= Expect no match 865 12345+ 866 867 /a++b/I 868 aaab 869 870 /(a++b)/I 871 aaab 872 873 /(a++)b/I 874 aaab 875 876 /([^()]++|\([^()]*\))+/I 877 ((abc(ade)ufh()()x 878 879 /\(([^()]++|\([^()]+\))+\)/I 880 (abc) 881 (abc(def)xyz) 882 \= Expect no match 883 ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 884 885 /(abc){1,3}+/IB 886 887 /a+?+/I 888 889 /a{2,3}?+b/I 890 891 /(?U)a+?+/I 892 893 /a{2,3}?+b/I,ungreedy 894 895 /x(?U)a++b/IB 896 xaaaab 897 898 /(?U)xa++b/IB 899 xaaaab 900 901 /^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/IB 902 903 /^x(?U)a+b/IB 904 905 /^x(?U)(a+)b/IB 906 907 /[.x.]/I 908 909 /[=x=]/I 910 911 /[:x:]/I 912 913 /\l/I 914 915 /\L/I 916 917 /\N{name}/I 918 919 /\u/I 920 921 /\U/I 922 923 /a{1,3}b/ungreedy 924 ab 925 926 /[/I 927 928 /[a-/I 929 930 /[[:space:]/I 931 932 /[\s]/IB 933 934 /[[:space:]]/IB 935 936 /[[:space:]abcde]/IB 937 938 /< (?: (?(R) \d++ | [^<>]*+) | (?R)) * >/Ix 939 <> 940 <abcd> 941 <abc <123> hij> 942 <abc <def> hij> 943 <abc<>def> 944 <abc<> 945 \= Expect no match 946 <abc 947 948 /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 949 950 /\$\<\.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 951 952 /(.*)\d+\1/I 953 954 /(.*)\d+/I 955 956 /(.*)\d+\1/Is 957 958 /(.*)\d+/Is 959 960 /(.*(xyz))\d+\2/I 961 962 /((.*))\d+\1/I 963 abc123bc 964 965 /a[b]/I 966 967 /(?=a).*/I 968 969 /(?=abc).xyz/Ii 970 971 /(?=abc)(?i).xyz/I 972 973 /(?=a)(?=b)/I 974 975 /(?=.)a/I 976 977 /((?=abcda)a)/I 978 979 /((?=abcda)ab)/I 980 981 /()a/I 982 983 /(?:(?=.)|(?<!x))a/I 984 985 /(?(1)ab|ac)(.)/I 986 987 /(?(1)abz|acz)(.)/I 988 989 /(?(1)abz)(.)/I 990 991 /(?(1)abz)(1)23/I 992 993 /(a)+/I 994 995 /(a){2,3}/I 996 997 /(a)*/I 998 999 /[a]/I 1000 1001 /[ab]/I 1002 1003 /[ab]/I 1004 1005 /[^a]/I 1006 1007 /\d456/I 1008 1009 /\d456/I 1010 1011 /a^b/I 1012 1013 /^a/Im 1014 abcde 1015 xy\nabc 1016 \= Expect no match 1017 xyabc 1018 1019 /c|abc/I 1020 1021 /(?i)[ab]/I 1022 1023 /[ab](?i)cd/I 1024 1025 /abc(?C)def/I 1026 abcdef 1027 1234abcdef 1028 \= Expect no match 1029 abcxyz 1030 abcxyzf 1031 1032 /abc(?C)de(?C1)f/I 1033 123abcdef 1034 1035 /(?C1)\dabc(?C2)def/I 1036 1234abcdef 1037 \= Expect no match 1038 abcdef 1039 1040 /(?C1)\dabc(?C2)def/I 1041 1234abcdef 1042 \= Expect no match 1043 abcdef 1044 1045 /(?C255)ab/I 1046 1047 /(?C256)ab/I 1048 1049 /(?Cab)xx/I 1050 1051 /(?C12vr)x/I 1052 1053 /abc(?C)def/I 1054 \x83\x0\x61bcdef 1055 1056 /(abc)(?C)de(?C1)f/I 1057 123abcdef 1058 123abcdef\=callout_capture 1059 123abcdefC-\=callout_none 1060 \= Expect no match 1061 123abcdef\=callout_fail=1 1062 1063 /(?C0)(abc(?C1))*/I 1064 abcabcabc 1065 abcabc\=callout_fail=1:3 1066 abcabcabc\=callout_fail=1:3 1067 1068 /(\d{3}(?C))*/I 1069 123\=callout_capture 1070 123456\=callout_capture 1071 123456789\=callout_capture 1072 1073 /((xyz)(?C)p|(?C1)xyzabc)/I 1074 xyzabc\=callout_capture 1075 1076 /(X)((xyz)(?C)p|(?C1)xyzabc)/I 1077 Xxyzabc\=callout_capture 1078 1079 /(?=(abc))(?C)abcdef/I 1080 abcdef\=callout_capture 1081 1082 /(?!(abc)(?C1)d)(?C2)abcxyz/I 1083 abcxyz\=callout_capture 1084 1085 /(?<=(abc)(?C))xyz/I 1086 abcxyz\=callout_capture 1087 1088 /a(b+)(c*)(?C1)/I 1089 \= Expect no match 1090 abbbbbccc\=callout_data=1 1091 1092 /a(b+?)(c*?)(?C1)/I 1093 \= Expect no match 1094 abbbbbccc\=callout_data=1 1095 1096 /(?C)abc/I 1097 1098 /(?C)^abc/I 1099 1100 /(?C)a|b/I 1101 1102 /x(ab|(bc|(de|(?R))))/I 1103 xab 1104 xbc 1105 xde 1106 xxab 1107 xxxab 1108 \= Expect no match 1109 xyab 1110 1111 /^([^()]|\((?1)*\))*$/I 1112 abc 1113 a(b)c 1114 a(b(c))d 1115 \= Expect no match) 1116 a(b(c)d 1117 1118 /^>abc>([^()]|\((?1)*\))*<xyz<$/I 1119 >abc>123<xyz< 1120 >abc>1(2)3<xyz< 1121 >abc>(1(2)3)<xyz< 1122 1123 /(a(?1)b)/IB 1124 1125 /(a(?1)+b)/IB 1126 1127 /^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/I 1128 12 1129 (((2+2)*-3)-7) 1130 -12 1131 \= Expect no match 1132 ((2+2)*-3)-7) 1133 1134 /^(x(y|(?1){2})z)/I 1135 xyz 1136 xxyzxyzz 1137 \= Expect no match 1138 xxyzz 1139 xxyzxyzxyzz 1140 1141 /((< (?: (?(R) \d++ | [^<>]*+) | (?2)) * >))/Ix 1142 <> 1143 <abcd> 1144 <abc <123> hij> 1145 <abc <def> hij> 1146 <abc<>def> 1147 <abc<> 1148 \= Expect no match 1149 <abc 1150 1151 /(?1)/I 1152 1153 /((?2)(abc)/I 1154 1155 /^(abc)def(?1)/I 1156 abcdefabc 1157 1158 /^(a|b|c)=(?1)+/I 1159 a=a 1160 a=b 1161 a=bc 1162 1163 /^(a|b|c)=((?1))+/I 1164 a=a 1165 a=b 1166 a=bc 1167 1168 /a(?P<name1>b|c)d(?P<longername2>e)/IB 1169 abde 1170 acde 1171 1172 /(?:a(?P<c>c(?P<d>d)))(?P<a>a)/IB 1173 1174 /(?P<a>a)...(?P=a)bbb(?P>a)d/IB 1175 1176 /^\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 1177 1221 1178 Satan, oscillate my metallic sonatas! 1179 A man, a plan, a canal: Panama! 1180 Able was I ere I saw Elba. 1181 \= Expect no match 1182 The quick brown fox 1183 1184 /((?(R)a|b))\1(?1)?/I 1185 bb 1186 bbaa 1187 1188 /(.*)a/Is 1189 1190 /(.*)a\1/Is 1191 1192 /(.*)a(b)\2/Is 1193 1194 /((.*)a|(.*)b)z/Is 1195 1196 /((.*)a|(.*)b)z\1/Is 1197 1198 /((.*)a|(.*)b)z\2/Is 1199 1200 /((.*)a|(.*)b)z\3/Is 1201 1202 /((.*)a|^(.*)b)z\3/Is 1203 1204 /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a/Is 1205 1206 /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\31/Is 1207 1208 /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\32/Is 1209 1210 /(a)(bc)/IB,no_auto_capture 1211 abc 1212 1213 /(?P<one>a)(bc)/IB,no_auto_capture 1214 abc 1215 1216 /(a)(?P<named>bc)/IB,no_auto_capture 1217 1218 /(aaa(?C1)bbb|ab)/I 1219 aaabbb 1220 aaabbb\=callout_data=0 1221 aaabbb\=callout_data=1 1222 \= Expect no match 1223 aaabbb\=callout_data=-1 1224 1225 /ab(?P<one>cd)ef(?P<two>gh)/I 1226 abcdefgh 1227 abcdefgh\=copy=1,get=two 1228 abcdefgh\=copy=one,copy=two 1229 abcdefgh\=copy=three 1230 1231 /(?P<Tes>)(?P<Test>)/IB 1232 1233 /(?P<Test>)(?P<Tes>)/IB 1234 1235 /(?P<Z>zz)(?P<A>aa)/I 1236 zzaa\=copy=Z 1237 zzaa\=copy=A 1238 1239 /(?P<x>eks)(?P<x>eccs)/I 1240 1241 /(?P<abc>abc(?P<def>def)(?P<abc>xyz))/I 1242 1243 "\[((?P<elem>\d+)(,(?P>elem))*)\]"I 1244 [10,20,30,5,5,4,4,2,43,23,4234] 1245 \= Expect no match 1246 [] 1247 1248 "\[((?P<elem>\d+)(,(?P>elem))*)?\]"I 1249 [10,20,30,5,5,4,4,2,43,23,4234] 1250 [] 1251 1252 /(a(b(?2)c))?/IB 1253 1254 /(a(b(?2)c))*/IB 1255 1256 /(a(b(?2)c)){0,2}/IB 1257 1258 /[ab]{1}+/B 1259 1260 /()(?1){1}/B 1261 1262 /()(?1)/B 1263 1264 /((w\/|-|with)*(free|immediate)*.*?shipping\s*[!.-]*)/Ii 1265 Baby Bjorn Active Carrier - With free SHIPPING!! 1266 1267 /((w\/|-|with)*(free|immediate)*.*?shipping\s*[!.-]*)/Ii 1268 Baby Bjorn Active Carrier - With free SHIPPING!! 1269 1270 /a*.*b/IB 1271 1272 /(a|b)*.?c/IB 1273 1274 /abc(?C255)de(?C)f/IB 1275 1276 /abcde/IB,auto_callout 1277 abcde 1278 \= Expect no match 1279 abcdfe 1280 1281 /a*b/IB,auto_callout 1282 ab 1283 aaaab 1284 aaaacb 1285 1286 /a*b/IB,auto_callout 1287 ab 1288 aaaab 1289 aaaacb 1290 1291 /a+b/IB,auto_callout 1292 ab 1293 aaaab 1294 \= Expect no match 1295 aaaacb 1296 1297 /(abc|def)x/IB,auto_callout 1298 abcx 1299 defx 1300 \= Expect no match 1301 abcdefzx 1302 1303 /(abc|def)x/IB,auto_callout 1304 abcx 1305 defx 1306 \= Expect no match 1307 abcdefzx 1308 1309 /(ab|cd){3,4}/I,auto_callout 1310 ababab 1311 abcdabcd 1312 abcdcdcdcdcd 1313 1314 /([ab]{,4}c|xy)/IB,auto_callout 1315 \= Expect no match 1316 Note: that { does NOT introduce a quantifier 1317 1318 /([ab]{,4}c|xy)/IB,auto_callout 1319 \= Expect no match 1320 Note: that { does NOT introduce a quantifier 1321 1322 /([ab]{1,4}c|xy){4,5}?123/IB,auto_callout 1323 aacaacaacaacaac123 1324 1325 /\b.*/I 1326 ab cd\=offset=1 1327 1328 /\b.*/Is 1329 ab cd\=startoffset=1 1330 1331 /(?!.bcd).*/I 1332 Xbcd12345 1333 1334 /abcde/I 1335 ab\=ps 1336 abc\=ps 1337 abcd\=ps 1338 abcde\=ps 1339 the quick brown abc\=ps 1340 \= Expect no match\=ps 1341 the quick brown abxyz fox\=ps 1342 1343 "^(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])/(20)?\d\d$"I 1344 13/05/04\=ps 1345 13/5/2004\=ps 1346 02/05/09\=ps 1347 1\=ps 1348 1/2\=ps 1349 1/2/0\=ps 1350 1/2/04\=ps 1351 0\=ps 1352 02/\=ps 1353 02/0\=ps 1354 02/1\=ps 1355 \= Expect no match\=ps 1356 \=ps 1357 123\=ps 1358 33/4/04\=ps 1359 3/13/04\=ps 1360 0/1/2003\=ps 1361 0/\=ps 1362 02/0/\=ps 1363 02/13\=ps 1364 1365 /0{0,2}ABC/I 1366 1367 /\d{3,}ABC/I 1368 1369 /\d*ABC/I 1370 1371 /[abc]+DE/I 1372 1373 /[abc]?123/I 1374 123\=ps 1375 a\=ps 1376 b\=ps 1377 c\=ps 1378 c12\=ps 1379 c123\=ps 1380 1381 /^(?:\d){3,5}X/I 1382 1\=ps 1383 123\=ps 1384 123X 1385 1234\=ps 1386 1234X 1387 12345\=ps 1388 12345X 1389 \= Expect no match 1390 1X 1391 123456\=ps 1392 1393 "<(\w+)/?>(.)*</(\1)>"Igms 1394 <!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 1395 1396 /line\nbreak/I 1397 this is a line\nbreak 1398 line one\nthis is a line\nbreak in the second line 1399 1400 /line\nbreak/I,firstline 1401 this is a line\nbreak 1402 \= Expect no match 1403 line one\nthis is a line\nbreak in the second line 1404 1405 /line\nbreak/Im,firstline 1406 this is a line\nbreak 1407 \= Expect no match 1408 line one\nthis is a line\nbreak in the second line 1409 1410 /(?i)(?-i)AbCd/I 1411 AbCd 1412 \= Expect no match 1413 abcd 1414 1415 /a{11111111111111111111}/I 1416 1417 /(){64294967295}/I 1418 1419 /(){2,4294967295}/I 1420 1421 "(?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 1422 abcdefghijklAkB 1423 1424 "(?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 1425 abcdefghijklAkB 1426 1427 "(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)A\11B"I 1428 abcdefghijklAkB 1429 1430 "(?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 1431 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1432 1433 "(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 1434 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1435 1436 /[^()]*(?:\((?R)\)[^()]*)*/I 1437 (this(and)that 1438 (this(and)that) 1439 (this(and)that)stuff 1440 1441 /[^()]*(?:\((?>(?R))\)[^()]*)*/I 1442 (this(and)that 1443 (this(and)that) 1444 1445 /[^()]*(?:\((?R)\))*[^()]*/I 1446 (this(and)that 1447 (this(and)that) 1448 1449 /(?:\((?R)\))*[^()]*/I 1450 (this(and)that 1451 (this(and)that) 1452 ((this)) 1453 1454 /(?:\((?R)\))|[^()]*/I 1455 (this(and)that 1456 (this(and)that) 1457 (this) 1458 ((this)) 1459 1460 /\x{0000ff}/I 1461 1462 /^((?P<A>a1)|(?P<A>a2)b)/I 1463 1464 /^((?P<A>a1)|(?P<A>a2)b)/I,dupnames 1465 a1b\=copy=A 1466 a2b\=copy=A 1467 a1b\=copy=Z,copy=A 1468 1469 /(?|(?<a>)(?<b>)(?<a>)|(?<a>)(?<b>)(?<a>))/I,dupnames 1470 1471 /^(?P<A>a)(?P<A>b)/I,dupnames 1472 ab\=copy=A 1473 1474 /^(?P<A>a)(?P<A>b)|cd/I,dupnames 1475 ab\=copy=A 1476 cd\=copy=A 1477 1478 /^(?P<A>a)(?P<A>b)|cd(?P<A>ef)(?P<A>gh)/I,dupnames 1479 cdefgh\=copy=A 1480 1481 /^((?P<A>a1)|(?P<A>a2)b)/I,dupnames 1482 a1b\=get=A 1483 a2b\=get=A 1484 a1b\=get=Z,get=A 1485 1486 /^(?P<A>a)(?P<A>b)/I,dupnames 1487 ab\=get=A 1488 1489 /^(?P<A>a)(?P<A>b)|cd/I,dupnames 1490 ab\=get=A 1491 cd\=get=A 1492 1493 /^(?P<A>a)(?P<A>b)|cd(?P<A>ef)(?P<A>gh)/I,dupnames 1494 cdefgh\=get=A 1495 1496 /(?J)^((?P<A>a1)|(?P<A>a2)b)/I 1497 a1b\=copy=A 1498 a2b\=copy=A 1499 1500 /^(?P<A>a) (?J:(?P<B>b)(?P<B>c)) (?P<A>d)/I 1501 1502 # In this next test, J is not set at the outer level; consequently it isn't set 1503 # in the pattern's options; consequently pcre2_substring_get_byname() produces 1504 # a random value. 1505 1506 /^(?P<A>a) (?J:(?P<B>b)(?P<B>c)) (?P<C>d)/I 1507 a bc d\=copy=A,copy=B,copy=C 1508 1509 /^(?P<A>a)?(?(A)a|b)/I 1510 aabc 1511 bc 1512 \= Expect no match 1513 abc 1514 1515 /(?:(?(ZZ)a|b)(?P<ZZ>X))+/I 1516 bXaX 1517 1518 /(?:(?(2y)a|b)(X))+/I 1519 1520 /(?:(?(ZA)a|b)(?P<ZZ>X))+/I 1521 1522 /(?:(?(ZZ)a|b)(?(ZZ)a|b)(?P<ZZ>X))+/I 1523 bbXaaX 1524 1525 /(?:(?(ZZ)a|\(b\))\\(?P<ZZ>X))+/I 1526 (b)\\Xa\\X 1527 1528 /(?P<ABC/I 1529 1530 /(?:(?(A)(?P=A)a|b)(?P<A>X|Y))+/I 1531 bXXaYYaY 1532 bXYaXXaX 1533 1534 /()()()()()()()()()(?:(?(A)(?P=A)a|b)(?P<A>X|Y))+/I 1535 bXXaYYaY 1536 1537 /\s*,\s*/I 1538 \x0b,\x0b 1539 \x0c,\x0d 1540 1541 /^abc/Im,newline=lf 1542 xyz\nabc 1543 xyz\r\nabc 1544 \= Expect no match 1545 xyz\rabc 1546 xyzabc\r 1547 xyzabc\rpqr 1548 xyzabc\r\n 1549 xyzabc\r\npqr 1550 1551 /^abc/Im,newline=crlf 1552 xyz\r\nabclf> 1553 \= Expect no match 1554 xyz\nabclf 1555 xyz\rabclf 1556 1557 /^abc/Im,newline=cr 1558 xyz\rabc 1559 \= Expect no match 1560 xyz\nabc 1561 xyz\r\nabc 1562 1563 /^abc/Im,newline=bad 1564 1565 /.*/I,newline=lf 1566 abc\ndef 1567 abc\rdef 1568 abc\r\ndef 1569 1570 /.*/I,newline=cr 1571 abc\ndef 1572 abc\rdef 1573 abc\r\ndef 1574 1575 /.*/I,newline=crlf 1576 abc\ndef 1577 abc\rdef 1578 abc\r\ndef 1579 1580 /\w+(.)(.)?def/Is 1581 abc\ndef 1582 abc\rdef 1583 abc\r\ndef 1584 1585 /(?P<B>25[0-5]|2[0-4]\d|[01]?\d?\d)(?:\.(?P>B)){3}/I 1586 1587 /()()()()()()()()()()()()()()()()()()()() 1588 ()()()()()()()()()()()()()()()()()()()() 1589 ()()()()()()()()()()()()()()()()()()()() 1590 ()()()()()()()()()()()()()()()()()()()() 1591 ()()()()()()()()()()()()()()()()()()()() 1592 (.(.))/Ix 1593 XY\=ovector=133 1594 1595 /(a*b|(?i:c*(?-i)d))/I 1596 1597 /()[ab]xyz/I 1598 1599 /(|)[ab]xyz/I 1600 1601 /(|c)[ab]xyz/I 1602 1603 /(|c?)[ab]xyz/I 1604 1605 /(d?|c?)[ab]xyz/I 1606 1607 /(d?|c)[ab]xyz/I 1608 1609 /^a*b\d/IB 1610 1611 /^a*+b\d/IB 1612 1613 /^a*?b\d/IB 1614 1615 /^a+A\d/IB 1616 aaaA5 1617 \= Expect no match 1618 aaaa5 1619 1620 /^a*A\d/IBi 1621 aaaA5 1622 aaaa5 1623 1624 /(a*|b*)[cd]/I 1625 1626 /(a+|b*)[cd]/I 1627 1628 /(a*|b+)[cd]/I 1629 1630 /(a+|b+)[cd]/I 1631 1632 /(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 1633 (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 1634 ((( 1635 a 1636 )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 1637 )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 1638 ))) 1639 /Ix 1640 large nest 1641 1642 /a*\d/B 1643 1644 /a*\D/B 1645 1646 /0*\d/B 1647 1648 /0*\D/B 1649 1650 /a*\s/B 1651 1652 /a*\S/B 1653 1654 / *\s/B 1655 1656 / *\S/B 1657 1658 /a*\w/B 1659 1660 /a*\W/B 1661 1662 /=*\w/B 1663 1664 /=*\W/B 1665 1666 /\d*a/B 1667 1668 /\d*2/B 1669 1670 /\d*\d/B 1671 1672 /\d*\D/B 1673 1674 /\d*\s/B 1675 1676 /\d*\S/B 1677 1678 /\d*\w/B 1679 1680 /\d*\W/B 1681 1682 /\D*a/B 1683 1684 /\D*2/B 1685 1686 /\D*\d/B 1687 1688 /\D*\D/B 1689 1690 /\D*\s/B 1691 1692 /\D*\S/B 1693 1694 /\D*\w/B 1695 1696 /\D*\W/B 1697 1698 /\s*a/B 1699 1700 /\s*2/B 1701 1702 /\s*\d/B 1703 1704 /\s*\D/B 1705 1706 /\s*\s/B 1707 1708 /\s*\S/B 1709 1710 /\s*\w/B 1711 1712 /\s*\W/B 1713 1714 /\S*a/B 1715 1716 /\S*2/B 1717 1718 /\S*\d/B 1719 1720 /\S*\D/B 1721 1722 /\S*\s/B 1723 1724 /\S*\S/B 1725 1726 /\S*\w/B 1727 1728 /\S*\W/B 1729 1730 /\w*a/B 1731 1732 /\w*2/B 1733 1734 /\w*\d/B 1735 1736 /\w*\D/B 1737 1738 /\w*\s/B 1739 1740 /\w*\S/B 1741 1742 /\w*\w/B 1743 1744 /\w*\W/B 1745 1746 /\W*a/B 1747 1748 /\W*2/B 1749 1750 /\W*\d/B 1751 1752 /\W*\D/B 1753 1754 /\W*\s/B 1755 1756 /\W*\S/B 1757 1758 /\W*\w/B 1759 1760 /\W*\W/B 1761 1762 /[^a]+a/B 1763 1764 /[^a]+a/Bi 1765 1766 /[^a]+A/Bi 1767 1768 /[^a]+b/B 1769 1770 /[^a]+\d/B 1771 1772 /a*[^a]/B 1773 1774 /(?P<abc>x)(?P<xyz>y)/I 1775 xy\=copy=abc,copy=xyz 1776 1777 /(?<abc>x)(?'xyz'y)/I 1778 xy\=copy=abc,copy=xyz 1779 1780 /(?<abc'x)(?'xyz'y)/I 1781 1782 /(?<abc>x)(?'xyz>y)/I 1783 1784 /(?P'abc'x)(?P<xyz>y)/I 1785 1786 /^(?:(?(ZZ)a|b)(?<ZZ>X))+/ 1787 bXaX 1788 bXbX 1789 \= Expect no match 1790 aXaX 1791 aXbX 1792 1793 /^(?P>abc)(?<abcd>xxx)/ 1794 1795 /^(?P>abc)(?<abc>x|y)/ 1796 xx 1797 xy 1798 yy 1799 yx 1800 1801 /^(?P>abc)(?P<abc>x|y)/ 1802 xx 1803 xy 1804 yy 1805 yx 1806 1807 /^((?(abc)a|b)(?<abc>x|y))+/ 1808 bxay 1809 bxby 1810 \= Expect no match 1811 axby 1812 1813 /^(((?P=abc)|X)(?<abc>x|y))+/ 1814 XxXxxx 1815 XxXyyx 1816 XxXyxx 1817 \= Expect no match 1818 x 1819 1820 /^(?1)(abc)/ 1821 abcabc 1822 1823 /^(?:(?:\1|X)(a|b))+/ 1824 Xaaa 1825 Xaba 1826 1827 /^[\E\Qa\E-\Qz\E]+/B 1828 1829 /^[a\Q]bc\E]/B 1830 1831 /^[a-\Q\E]/B 1832 1833 /^(?P>abc)[()](?<abc>)/B 1834 1835 /^((?(abc)y)[()](?P<abc>x))+/B 1836 (xy)x 1837 1838 /^(?P>abc)\Q()\E(?<abc>)/B 1839 1840 /^(?P>abc)[a\Q(]\E(](?<abc>)/B 1841 1842 /^(?P>abc) # this is (a comment) 1843 (?<abc>)/Bx 1844 1845 /^\W*(?:(?<one>(?<two>.)\W*(?&one)\W*\k<two>|)|(?<three>(?<four>.)\W*(?&three)\W*\k'four'|\W*.\W*))\W*$/Ii 1846 1221 1847 Satan, oscillate my metallic sonatas! 1848 A man, a plan, a canal: Panama! 1849 Able was I ere I saw Elba. 1850 \= Expect no match 1851 The quick brown fox 1852 1853 /(?=(\w+))\1:/I 1854 abcd: 1855 1856 /(?=(?'abc'\w+))\k<abc>:/I 1857 abcd: 1858 1859 /(?'abc'a|b)(?<abc>d|e)\k<abc>{2}/dupnames 1860 adaa 1861 \= Expect no match 1862 addd 1863 adbb 1864 1865 /(?'abc'a|b)(?<abc>d|e)(?&abc){2}/dupnames 1866 bdaa 1867 bdab 1868 \= Expect no match 1869 bddd 1870 1871 /(?(<bc))/ 1872 1873 /(?(''))/ 1874 1875 /(?('R')stuff)/ 1876 1877 /((abc (?(R) (?(R1)1) (?(R2)2) X | (?1) (?2) (?R) ))) /x 1878 abcabc1Xabc2XabcXabcabc 1879 1880 /(?<A> (?'B' abc (?(R) (?(R&A)1) (?(R&B)2) X | (?1) (?2) (?R) ))) /x 1881 abcabc1Xabc2XabcXabcabc 1882 1883 /(?<A> (?'B' abc (?(R) (?(R&C)1) (?(R&B)2) X | (?1) (?2) (?R) ))) /x 1884 1885 /^(?(DEFINE) abc | xyz ) /x 1886 1887 /(?(DEFINE) abc) xyz/Ix 1888 1889 /(a|)*\d/ 1890 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4\=ovector=0 1891 \= Expect no match 1892 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\=ovector=0 1893 1894 /^a.b/newline=lf 1895 a\rb 1896 \= Expect no match 1897 a\nb 1898 1899 /^a.b/newline=cr 1900 a\nb 1901 \= Expect no match 1902 a\rb 1903 1904 /^a.b/newline=anycrlf 1905 a\x85b 1906 \= Expect no match 1907 a\rb 1908 1909 /^a.b/newline=any 1910 \= Expect no match 1911 a\nb 1912 a\rb 1913 a\x85b 1914 1915 /^abc./gmx,newline=any 1916 abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x85abc7 JUNK 1917 1918 /abc.$/gmx,newline=any 1919 abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc7 abc9 1920 1921 /^a\Rb/bsr=unicode 1922 a\nb 1923 a\rb 1924 a\r\nb 1925 a\x0bb 1926 a\x0cb 1927 a\x85b 1928 \= Expect no match 1929 a\n\rb 1930 1931 /^a\R*b/bsr=unicode 1932 ab 1933 a\nb 1934 a\rb 1935 a\r\nb 1936 a\x0bb 1937 a\x0cb 1938 a\x85b 1939 a\n\rb 1940 a\n\r\x85\x0cb 1941 1942 /^a\R+b/bsr=unicode 1943 a\nb 1944 a\rb 1945 a\r\nb 1946 a\x0bb 1947 a\x0cb 1948 a\x85b 1949 a\n\rb 1950 a\n\r\x85\x0cb 1951 \= Expect no match 1952 ab 1953 1954 /^a\R{1,3}b/bsr=unicode 1955 a\nb 1956 a\n\rb 1957 a\n\r\x85b 1958 a\r\n\r\nb 1959 a\r\n\r\n\r\nb 1960 a\n\r\n\rb 1961 a\n\n\r\nb 1962 \= Expect no match 1963 a\n\n\n\rb 1964 a\r 1965 1966 /(?&abc)X(?<abc>P)/I 1967 abcPXP123 1968 1969 /(?1)X(?<abc>P)/I 1970 abcPXP123 1971 1972 /(?:a(?&abc)b)*(?<abc>x)/ 1973 123axbaxbaxbx456 1974 123axbaxbaxb456 1975 1976 /(?:a(?&abc)b){1,5}(?<abc>x)/ 1977 123axbaxbaxbx456 1978 1979 /(?:a(?&abc)b){2,5}(?<abc>x)/ 1980 123axbaxbaxbx456 1981 1982 /(?:a(?&abc)b){2,}(?<abc>x)/ 1983 123axbaxbaxbx456 1984 1985 /(abc)(?i:(?1))/ 1986 defabcabcxyz 1987 \= Expect no match 1988 DEFabcABCXYZ 1989 1990 /(abc)(?:(?i)(?1))/ 1991 defabcabcxyz 1992 \= Expect no match 1993 DEFabcABCXYZ 1994 1995 /^(a)\g-2/ 1996 1997 /^(a)\g/ 1998 1999 /^(a)\g{0}/ 2000 2001 /^(a)\g{3/ 2002 2003 /^(a)\g{aa}/ 2004 2005 /^a.b/newline=lf 2006 a\rb 2007 \= Expect no match 2008 a\nb 2009 2010 /.+foo/ 2011 afoo 2012 \= Expect no match 2013 \r\nfoo 2014 \nfoo 2015 2016 /.+foo/newline=crlf 2017 afoo 2018 \nfoo 2019 \= Expect no match 2020 \r\nfoo 2021 2022 /.+foo/newline=any 2023 afoo 2024 \= Expect no match 2025 \nfoo 2026 \r\nfoo 2027 2028 /.+foo/s 2029 afoo 2030 \r\nfoo 2031 \nfoo 2032 2033 /^$/gm,newline=any 2034 abc\r\rxyz 2035 abc\n\rxyz 2036 \= Expect no match 2037 abc\r\nxyz 2038 2039 /(?m)^$/g,newline=any,aftertext 2040 abc\r\n\r\n 2041 2042 /(?m)^$|^\r\n/g,newline=any,aftertext 2043 abc\r\n\r\n 2044 2045 /(?m)$/g,newline=any,aftertext 2046 abc\r\n\r\n 2047 2048 /abc.$/gmx,newline=anycrlf 2049 abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc9 2050 2051 /^X/m 2052 XABC 2053 \= Expect no match 2054 XABC\=notbol 2055 2056 /(ab|c)(?-1)/B 2057 abc 2058 2059 /xy(?+1)(abc)/B 2060 xyabcabc 2061 \= Expect no match 2062 xyabc 2063 2064 /x(?-0)y/ 2065 2066 /x(?-1)y/ 2067 2068 /x(?+0)y/ 2069 2070 /x(?+1)y/ 2071 2072 /^(abc)?(?(-1)X|Y)/B 2073 abcX 2074 Y 2075 \= Expect no match 2076 abcY 2077 2078 /^((?(+1)X|Y)(abc))+/B 2079 YabcXabc 2080 YabcXabcXabc 2081 \= Expect no match 2082 XabcXabc 2083 2084 /(?(-1)a)/B 2085 2086 /((?(-1)a))/B 2087 2088 /((?(-2)a))/B 2089 2090 /^(?(+1)X|Y)(.)/B 2091 Y! 2092 2093 /(?<A>tom|bon)-\k{A}/ 2094 tom-tom 2095 bon-bon 2096 \= Expect no match 2097 tom-bon 2098 2099 /\g{A/ 2100 2101 /(?|(abc)|(xyz))/B 2102 >abc< 2103 >xyz< 2104 2105 /(x)(?|(abc)|(xyz))(x)/B 2106 xabcx 2107 xxyzx 2108 2109 /(x)(?|(abc)(pqr)|(xyz))(x)/B 2110 xabcpqrx 2111 xxyzx 2112 2113 /\H++X/B 2114 \= Expect no match 2115 XXXX 2116 2117 /\H+\hY/B 2118 XXXX Y 2119 2120 /\H+ Y/B 2121 2122 /\h+A/B 2123 2124 /\v*B/B 2125 2126 /\V+\x0a/B 2127 2128 /A+\h/B 2129 2130 / *\H/B 2131 2132 /A*\v/B 2133 2134 /\x0b*\V/B 2135 2136 /\d+\h/B 2137 2138 /\d*\v/B 2139 2140 /S+\h\S+\v/B 2141 2142 /\w{3,}\h\w+\v/B 2143 2144 /\h+\d\h+\w\h+\S\h+\H/B 2145 2146 /\v+\d\v+\w\v+\S\v+\V/B 2147 2148 /\H+\h\H+\d/B 2149 2150 /\V+\v\V+\w/B 2151 2152 /\( (?: [^()]* | (?R) )* \)/x 2153 (0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(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 2154 2155 /[\E]AAA/ 2156 2157 /[\Q\E]AAA/ 2158 2159 /[^\E]AAA/ 2160 2161 /[^\Q\E]AAA/ 2162 2163 /[\E^]AAA/ 2164 2165 /[\Q\E^]AAA/ 2166 2167 /A(*PRUNE)B(*SKIP)C(*THEN)D(*COMMIT)E(*F)F(*FAIL)G(?!)H(*ACCEPT)I/B 2168 2169 /^a+(*FAIL)/auto_callout 2170 \= Expect no match 2171 aaaaaa 2172 2173 /a+b?c+(*FAIL)/auto_callout 2174 \= Expect no match 2175 aaabccc 2176 2177 /a+b?(*PRUNE)c+(*FAIL)/auto_callout 2178 \= Expect no match 2179 aaabccc 2180 2181 /a+b?(*COMMIT)c+(*FAIL)/auto_callout 2182 \= Expect no match 2183 aaabccc 2184 2185 /a+b?(*SKIP)c+(*FAIL)/auto_callout 2186 \= Expect no match 2187 aaabcccaaabccc 2188 2189 /a+b?(*THEN)c+(*FAIL)/auto_callout 2190 \= Expect no match 2191 aaabccc 2192 2193 /a(*MARK)b/ 2194 2195 /(?i:A{1,}\6666666666)/ 2196 2197 /\g6666666666/ 2198 2199 /[\g6666666666]/B 2200 2201 /(?1)\c[/ 2202 2203 /.+A/newline=crlf 2204 \= Expect no match 2205 \r\nA 2206 2207 /\nA/newline=crlf 2208 \r\nA 2209 2210 /[\r\n]A/newline=crlf 2211 \r\nA 2212 2213 /(\r|\n)A/newline=crlf 2214 \r\nA 2215 2216 /a(*CR)b/ 2217 2218 /(*CR)a.b/ 2219 a\nb 2220 \= Expect no match 2221 a\rb 2222 2223 /(*CR)a.b/newline=lf 2224 a\nb 2225 \= Expect no match 2226 a\rb 2227 2228 /(*LF)a.b/newline=CRLF 2229 a\rb 2230 \= Expect no match 2231 a\nb 2232 2233 /(*CRLF)a.b/ 2234 a\rb 2235 a\nb 2236 \= Expect no match 2237 a\r\nb 2238 2239 /(*ANYCRLF)a.b/newline=CR 2240 \= Expect no match 2241 a\rb 2242 a\nb 2243 a\r\nb 2244 2245 /(*ANY)a.b/newline=cr 2246 \= Expect no match 2247 a\rb 2248 a\nb 2249 a\r\nb 2250 a\x85b 2251 2252 /(*ANY).*/g 2253 abc\r\ndef 2254 2255 /(*ANYCRLF).*/g 2256 abc\r\ndef 2257 2258 /(*CRLF).*/g 2259 abc\r\ndef 2260 2261 /a\Rb/I,bsr=anycrlf 2262 a\rb 2263 a\nb 2264 a\r\nb 2265 \= Expect no match 2266 a\x85b 2267 a\x0bb 2268 2269 /a\Rb/I,bsr=unicode 2270 a\rb 2271 a\nb 2272 a\r\nb 2273 a\x85b 2274 a\x0bb 2275 2276 /a\R?b/I,bsr=anycrlf 2277 a\rb 2278 a\nb 2279 a\r\nb 2280 \= Expect no match 2281 a\x85b 2282 a\x0bb 2283 2284 /a\R?b/I,bsr=unicode 2285 a\rb 2286 a\nb 2287 a\r\nb 2288 a\x85b 2289 a\x0bb 2290 2291 /a\R{2,4}b/I,bsr=anycrlf 2292 a\r\n\nb 2293 a\n\r\rb 2294 a\r\n\r\n\r\n\r\nb 2295 \= Expect no match 2296 a\x85\x85b 2297 a\x0b\x0bb 2298 2299 /a\R{2,4}b/I,bsr=unicode 2300 a\r\rb 2301 a\n\n\nb 2302 a\r\n\n\r\rb 2303 a\x85\x85b 2304 a\x0b\x0bb 2305 \= Expect no match 2306 a\r\r\r\r\rb 2307 2308 /(*BSR_ANYCRLF)a\Rb/I 2309 a\nb 2310 a\rb 2311 2312 /(*BSR_UNICODE)a\Rb/I 2313 a\x85b 2314 2315 /(*BSR_ANYCRLF)(*CRLF)a\Rb/I 2316 a\nb 2317 a\rb 2318 2319 /(*CRLF)(*BSR_UNICODE)a\Rb/I 2320 a\x85b 2321 2322 /(*CRLF)(*BSR_ANYCRLF)(*CR)ab/I 2323 2324 /(?<a>)(?&)/ 2325 2326 /(?<abc>)(?&a)/ 2327 2328 /(?<a>)(?&aaaaaaaaaaaaaaaaaaaaaaa)/ 2329 2330 /(?+-a)/ 2331 2332 /(?-+a)/ 2333 2334 /(?(-1))/ 2335 2336 /(?(+10))/ 2337 2338 /(?(10))/ 2339 2340 /(?(+2))()()/ 2341 2342 /(?(2))()()/ 2343 2344 /\k''/ 2345 2346 /\k<>/ 2347 2348 /\k{}/ 2349 2350 /\k/ 2351 2352 /\kabc/ 2353 2354 /(?P=)/ 2355 2356 /(?P>)/ 2357 2358 /[[:foo:]]/ 2359 2360 /[[:1234:]]/ 2361 2362 /[[:f\oo:]]/ 2363 2364 /[[: :]]/ 2365 2366 /[[:...:]]/ 2367 2368 /[[:l\ower:]]/ 2369 2370 /[[:abc\:]]/ 2371 2372 /[abc[:x\]pqr:]]/ 2373 2374 /[[:a\dz:]]/ 2375 2376 /(^(a|b\g<-1'c))/ 2377 2378 /^(?+1)(?<a>x|y){0}z/ 2379 xzxx 2380 yzyy 2381 \= Expect no match 2382 xxz 2383 2384 /(\3)(\1)(a)/ 2385 \= Expect no match 2386 cat 2387 2388 /(\3)(\1)(a)/alt_bsux,allow_empty_class,match_unset_backref,dupnames 2389 cat 2390 2391 /TA]/ 2392 The ACTA] comes 2393 2394 /TA]/alt_bsux,allow_empty_class,match_unset_backref,dupnames 2395 The ACTA] comes 2396 2397 /(?2)[]a()b](abc)/ 2398 abcbabc 2399 2400 /(?2)[^]a()b](abc)/ 2401 abcbabc 2402 2403 /(?1)[]a()b](abc)/ 2404 abcbabc 2405 \= Expect no match 2406 abcXabc 2407 2408 /(?1)[^]a()b](abc)/ 2409 abcXabc 2410 \= Expect no match 2411 abcbabc 2412 2413 /(?2)[]a()b](abc)(xyz)/ 2414 xyzbabcxyz 2415 2416 /(?&N)[]a(?<N>)](?<M>abc)/ 2417 abc<abc 2418 2419 /(?&N)[]a(?<N>)](abc)/ 2420 abc<abc 2421 2422 /a[]b/ 2423 2424 /a[^]b/ 2425 2426 /a[]b/alt_bsux,allow_empty_class,match_unset_backref,dupnames 2427 \= Expect no match 2428 ab 2429 2430 /a[]+b/alt_bsux,allow_empty_class,match_unset_backref,dupnames 2431 \= Expect no match 2432 ab 2433 2434 /a[]*+b/alt_bsux,allow_empty_class,match_unset_backref,dupnames 2435 \= Expect no match 2436 ab 2437 2438 /a[^]b/alt_bsux,allow_empty_class,match_unset_backref,dupnames 2439 aXb 2440 a\nb 2441 \= Expect no match 2442 ab 2443 2444 /a[^]+b/alt_bsux,allow_empty_class,match_unset_backref,dupnames 2445 aXb 2446 a\nX\nXb 2447 \= Expect no match 2448 ab 2449 2450 /a(?!)b/B 2451 2452 /(?!)?a/B 2453 ab 2454 2455 /a(*FAIL)+b/ 2456 2457 /(abc|pqr|123){0}[xyz]/I 2458 2459 /(?(?=.*b)b|^)/I,auto_callout 2460 adc 2461 abc 2462 2463 /(?(?=b).*b|^d)/I 2464 2465 /(?(?=.*b).*b|^d)/I 2466 2467 /xyz/auto_callout 2468 xyz 2469 abcxyz 2470 \= Expect no match 2471 abc 2472 abcxypqr 2473 2474 /xyz/auto_callout,no_start_optimize 2475 abcxyz 2476 \= Expect no match 2477 abc 2478 abcxypqr 2479 2480 /(*NO_START_OPT)xyz/auto_callout 2481 abcxyz 2482 2483 /(*NO_AUTO_POSSESS)a+b/B 2484 2485 /xyz/auto_callout,no_start_optimize 2486 abcxyz 2487 2488 /^"((?(?=[a])[^"])|b)*"$/auto_callout 2489 "ab" 2490 2491 /^"((?(?=[a])[^"])|b)*"$/ 2492 "ab" 2493 2494 /^X(?5)(a)(?|(b)|(q))(c)(d)Y/ 2495 XYabcdY 2496 2497 /^X(?&N)(a)(?|(b)|(q))(c)(d)(?<N>Y)/ 2498 XYabcdY 2499 2500 /Xa{2,4}b/ 2501 X\=ps 2502 Xa\=ps 2503 Xaa\=ps 2504 Xaaa\=ps 2505 Xaaaa\=ps 2506 2507 /Xa{2,4}?b/ 2508 X\=ps 2509 Xa\=ps 2510 Xaa\=ps 2511 Xaaa\=ps 2512 Xaaaa\=ps 2513 2514 /Xa{2,4}+b/ 2515 X\=ps 2516 Xa\=ps 2517 Xaa\=ps 2518 Xaaa\=ps 2519 Xaaaa\=ps 2520 2521 /X\d{2,4}b/ 2522 X\=ps 2523 X3\=ps 2524 X33\=ps 2525 X333\=ps 2526 X3333\=ps 2527 2528 /X\d{2,4}?b/ 2529 X\=ps 2530 X3\=ps 2531 X33\=ps 2532 X333\=ps 2533 X3333\=ps 2534 2535 /X\d{2,4}+b/ 2536 X\=ps 2537 X3\=ps 2538 X33\=ps 2539 X333\=ps 2540 X3333\=ps 2541 2542 /X\D{2,4}b/ 2543 X\=ps 2544 Xa\=ps 2545 Xaa\=ps 2546 Xaaa\=ps 2547 Xaaaa\=ps 2548 2549 /X\D{2,4}?b/ 2550 X\=ps 2551 Xa\=ps 2552 Xaa\=ps 2553 Xaaa\=ps 2554 Xaaaa\=ps 2555 2556 /X\D{2,4}+b/ 2557 X\=ps 2558 Xa\=ps 2559 Xaa\=ps 2560 Xaaa\=ps 2561 Xaaaa\=ps 2562 2563 /X[abc]{2,4}b/ 2564 X\=ps 2565 Xa\=ps 2566 Xaa\=ps 2567 Xaaa\=ps 2568 Xaaaa\=ps 2569 2570 /X[abc]{2,4}?b/ 2571 X\=ps 2572 Xa\=ps 2573 Xaa\=ps 2574 Xaaa\=ps 2575 Xaaaa\=ps 2576 2577 /X[abc]{2,4}+b/ 2578 X\=ps 2579 Xa\=ps 2580 Xaa\=ps 2581 Xaaa\=ps 2582 Xaaaa\=ps 2583 2584 /X[^a]{2,4}b/ 2585 X\=ps 2586 Xz\=ps 2587 Xzz\=ps 2588 Xzzz\=ps 2589 Xzzzz\=ps 2590 2591 /X[^a]{2,4}?b/ 2592 X\=ps 2593 Xz\=ps 2594 Xzz\=ps 2595 Xzzz\=ps 2596 Xzzzz\=ps 2597 2598 /X[^a]{2,4}+b/ 2599 X\=ps 2600 Xz\=ps 2601 Xzz\=ps 2602 Xzzz\=ps 2603 Xzzzz\=ps 2604 2605 /(Y)X\1{2,4}b/ 2606 YX\=ps 2607 YXY\=ps 2608 YXYY\=ps 2609 YXYYY\=ps 2610 YXYYYY\=ps 2611 2612 /(Y)X\1{2,4}?b/ 2613 YX\=ps 2614 YXY\=ps 2615 YXYY\=ps 2616 YXYYY\=ps 2617 YXYYYY\=ps 2618 2619 /(Y)X\1{2,4}+b/ 2620 YX\=ps 2621 YXY\=ps 2622 YXYY\=ps 2623 YXYYY\=ps 2624 YXYYYY\=ps 2625 2626 /\++\KZ|\d+X|9+Y/startchar 2627 ++++123999\=ps 2628 ++++123999Y\=ps 2629 ++++Z1234\=ps 2630 2631 /Z(*F)/ 2632 \= Expect no match 2633 Z\=ps 2634 ZA\=ps 2635 2636 /Z(?!)/ 2637 \= Expect no match 2638 Z\=ps 2639 ZA\=ps 2640 2641 /dog(sbody)?/ 2642 dogs\=ps 2643 dogs\=ph 2644 2645 /dog(sbody)??/ 2646 dogs\=ps 2647 dogs\=ph 2648 2649 /dog|dogsbody/ 2650 dogs\=ps 2651 dogs\=ph 2652 2653 /dogsbody|dog/ 2654 dogs\=ps 2655 dogs\=ph 2656 2657 /\bthe cat\b/ 2658 the cat\=ps 2659 the cat\=ph 2660 2661 /abc/ 2662 abc\=ps 2663 abc\=ph 2664 2665 /abc\K123/startchar 2666 xyzabc123pqr 2667 xyzabc12\=ps 2668 xyzabc12\=ph 2669 2670 /(?<=abc)123/ 2671 xyzabc123pqr 2672 xyzabc12\=ps 2673 xyzabc12\=ph 2674 2675 /\babc\b/ 2676 +++abc+++ 2677 +++ab\=ps 2678 +++ab\=ph 2679 2680 /(?&word)(?&element)(?(DEFINE)(?<element><[^m][^>]>[^<])(?<word>\w*+))/B 2681 2682 /(?&word)(?&element)(?(DEFINE)(?<element><[^\d][^>]>[^<])(?<word>\w*+))/B 2683 2684 /(ab)(x(y)z(cd(*ACCEPT)))pq/B 2685 2686 /abc\K/aftertext,startchar 2687 abcdef 2688 abcdef\=notempty_atstart 2689 xyzabcdef\=notempty_atstart 2690 \= Expect no match 2691 abcdef\=notempty 2692 xyzabcdef\=notempty 2693 2694 /^(?:(?=abc)|abc\K)/aftertext,startchar 2695 abcdef 2696 abcdef\=notempty_atstart 2697 \= Expect no match 2698 abcdef\=notempty 2699 2700 /a?b?/aftertext 2701 xyz 2702 xyzabc 2703 xyzabc\=notempty 2704 xyzabc\=notempty_atstart 2705 xyz\=notempty_atstart 2706 \= Expect no match 2707 xyz\=notempty 2708 2709 /^a?b?/aftertext 2710 xyz 2711 xyzabc 2712 \= Expect no match 2713 xyzabc\=notempty 2714 xyzabc\=notempty_atstart 2715 xyz\=notempty_atstart 2716 xyz\=notempty 2717 2718 /^(?<name>a|b\g<name>c)/ 2719 aaaa 2720 bacxxx 2721 bbaccxxx 2722 bbbacccxx 2723 2724 /^(?<name>a|b\g'name'c)/ 2725 aaaa 2726 bacxxx 2727 bbaccxxx 2728 bbbacccxx 2729 2730 /^(a|b\g<1>c)/ 2731 aaaa 2732 bacxxx 2733 bbaccxxx 2734 bbbacccxx 2735 2736 /^(a|b\g'1'c)/ 2737 aaaa 2738 bacxxx 2739 bbaccxxx 2740 bbbacccxx 2741 2742 /^(a|b\g'-1'c)/ 2743 aaaa 2744 bacxxx 2745 bbaccxxx 2746 bbbacccxx 2747 2748 /(^(a|b\g<-1>c))/ 2749 aaaa 2750 bacxxx 2751 bbaccxxx 2752 bbbacccxx 2753 2754 /(?-i:\g<name>)(?i:(?<name>a))/ 2755 XaaX 2756 XAAX 2757 2758 /(?i:\g<name>)(?-i:(?<name>a))/ 2759 XaaX 2760 \= Expect no match 2761 XAAX 2762 2763 /(?-i:\g<+1>)(?i:(a))/ 2764 XaaX 2765 XAAX 2766 2767 /(?=(?<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>\})\}))\{/ 2768 2769 /(?<n>a|b|c)\g<n>*/ 2770 abc 2771 accccbbb 2772 2773 /^X(?7)(a)(?|(b)|(q)(r)(s))(c)(d)(Y)/ 2774 XYabcdY 2775 2776 /(?<=b(?1)|zzz)(a)/ 2777 xbaax 2778 xzzzax 2779 2780 /(a)(?<=b\1)/ 2781 2782 /(a)(?<=b+(?1))/ 2783 2784 /(a+)(?<=b(?1))/ 2785 2786 /(a(?<=b(?1)))/ 2787 2788 /(?<=b(?1))xyz/ 2789 2790 /(?<=b(?1))xyz(b+)pqrstuvew/ 2791 2792 /(a|bc)\1/I 2793 2794 /(a|bc)\1{2,3}/I 2795 2796 /(a|bc)(?1)/I 2797 2798 /(a|b\1)(a|b\1)/I 2799 2800 /(a|b\1){2}/I 2801 2802 /(a|bbbb\1)(a|bbbb\1)/I 2803 2804 /(a|bbbb\1){2}/I 2805 2806 /^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 2807 2808 /<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 2809 2810 "(?>.*/)foo"I 2811 2812 /(?(?=[^a-z]+[a-z]) \d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} ) /Ix 2813 2814 /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/Ii 2815 2816 /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/I 2817 2818 /<a[\s]+href[\s]*=[\s]* # find <a href= 2819 ([\"\'])? # find single or double quote 2820 (?(1) (.*?)\1 | ([^\s]+)) # if quote found, match up to next matching 2821 # quote, otherwise match up to next space 2822 /Iisx 2823 2824 /^(?!:) # colon disallowed at start 2825 (?: # start of item 2826 (?: [0-9a-f]{1,4} | # 1-4 hex digits or 2827 (?(1)0 | () ) ) # if null previously matched, fail; else null 2828 : # followed by colon 2829 ){1,7} # end item; 1-7 of them required 2830 [0-9a-f]{1,4} $ # final hex number at end of string 2831 (?(1)|.) # check that there was an empty component 2832 /Iix 2833 2834 /(?|(?<a>A)|(?<a>B))/I 2835 AB\=copy=a 2836 BA\=copy=a 2837 2838 /(?|(?<a>A)|(?<b>B))/ 2839 2840 /(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) | 2841 b(?<quote> (?<apostrophe>')|(?<realquote>")) ) 2842 (?('quote')[a-z]+|[0-9]+)/Ix,dupnames 2843 a"aaaaa 2844 b"aaaaa 2845 \= Expect no match 2846 b"11111 2847 a"11111 2848 2849 /^(?|(a)(b)(c)(?<D>d)|(?<D>e)) (?('D')X|Y)/IBx,dupnames 2850 abcdX 2851 eX 2852 \= Expect no match 2853 abcdY 2854 ey 2855 2856 /(?<A>a) (b)(c) (?<A>d (?(R&A)$ | (?4)) )/IBx,dupnames 2857 abcdd 2858 \= Expect no match 2859 abcdde 2860 2861 /abcd*/ 2862 xxxxabcd\=ps 2863 xxxxabcd\=ph 2864 2865 /abcd*/i 2866 xxxxabcd\=ps 2867 xxxxabcd\=ph 2868 XXXXABCD\=ps 2869 XXXXABCD\=ph 2870 2871 /abc\d*/ 2872 xxxxabc1\=ps 2873 xxxxabc1\=ph 2874 2875 /(a)bc\1*/ 2876 xxxxabca\=ps 2877 xxxxabca\=ph 2878 2879 /abc[de]*/ 2880 xxxxabcde\=ps 2881 xxxxabcde\=ph 2882 2883 # This is not in the Perl-compatible test because Perl seems currently to be 2884 # broken and not behaving as specified in that it *does* bumpalong after 2885 # hitting (*COMMIT). 2886 2887 /(?1)(A(*COMMIT)|B)D/ 2888 ABD 2889 XABD 2890 BAD 2891 ABXABD 2892 \= Expect no match 2893 ABX 2894 BAXBAD 2895 2896 /(\3)(\1)(a)/alt_bsux,allow_empty_class,match_unset_backref,dupnames 2897 cat 2898 2899 /(\3)(\1)(a)/I,alt_bsux,allow_empty_class,match_unset_backref,dupnames 2900 cat 2901 2902 /(\3)(\1)(a)/I 2903 \= Expect no match 2904 cat 2905 2906 /i(?(DEFINE)(?<s>a))/I 2907 i 2908 2909 /()i(?(1)a)/I 2910 ia 2911 2912 /(?i)a(?-i)b|c/B 2913 XabX 2914 XAbX 2915 CcC 2916 \= Expect no match 2917 XABX 2918 2919 /(?i)a(?s)b|c/B 2920 2921 /(?i)a(?s-i)b|c/B 2922 2923 /^(ab(c\1)d|x){2}$/B 2924 xabcxd 2925 2926 /^(?&t)*+(?(DEFINE)(?<t>.))$/B 2927 2928 /^(?&t)*(?(DEFINE)(?<t>.))$/B 2929 2930 # This one is here because Perl gives the match as "b" rather than "ab". I 2931 # believe this to be a Perl bug. 2932 2933 /(?>a\Kb)z|(ab)/ 2934 ab\=startchar 2935 2936 /(?P<L1>(?P<L2>0|)|(?P>L2)(?P>L1))/ 2937 abcd 2938 0abc 2939 2940 /abc(*MARK:)pqr/ 2941 2942 /abc(*:)pqr/ 2943 2944 /abc(*FAIL:123)xyz/ 2945 2946 # This should, and does, fail. In Perl, it does not, which I think is a 2947 # bug because replacing the B in the pattern by (B|D) does make it fail. 2948 2949 /A(*COMMIT)B/aftertext,mark 2950 \= Expect no match 2951 ACABX 2952 2953 # These should be different, but in Perl they are not, which I think 2954 # is a bug in Perl. 2955 2956 /A(*THEN)B|A(*THEN)C/mark 2957 AC 2958 2959 /A(*PRUNE)B|A(*PRUNE)C/mark 2960 \= Expect no match 2961 AC 2962 2963 # Mark names can be duplicated. Perl doesn't give a mark for this one, 2964 # though PCRE2 does. 2965 2966 /^A(*:A)B|^X(*:A)Y/mark 2967 \= Expect no match 2968 XAQQ 2969 2970 # COMMIT at the start of a pattern should be the same as an anchor. Perl 2971 # optimizations defeat this. So does the PCRE2 optimization unless we disable 2972 # it. 2973 2974 /(*COMMIT)ABC/ 2975 ABCDEFG 2976 2977 /(*COMMIT)ABC/no_start_optimize 2978 \= Expect no match 2979 DEFGABC 2980 2981 /^(ab (c+(*THEN)cd) | xyz)/x 2982 \= Expect no match 2983 abcccd 2984 2985 /^(ab (c+(*PRUNE)cd) | xyz)/x 2986 \= Expect no match 2987 abcccd 2988 2989 /^(ab (c+(*FAIL)cd) | xyz)/x 2990 \= Expect no match 2991 abcccd 2992 2993 # Perl gets some of these wrong 2994 2995 /(?>.(*ACCEPT))*?5/ 2996 abcde 2997 2998 /(.(*ACCEPT))*?5/ 2999 abcde 3000 3001 /(.(*ACCEPT))5/ 3002 abcde 3003 3004 /(.(*ACCEPT))*5/ 3005 abcde 3006 3007 /A\NB./B 3008 ACBD 3009 \= Expect no match 3010 A\nB 3011 ACB\n 3012 3013 /A\NB./Bs 3014 ACBD 3015 ACB\n 3016 \= Expect no match 3017 A\nB 3018 3019 /A\NB/newline=crlf 3020 A\nB 3021 A\rB 3022 \= Expect no match 3023 A\r\nB 3024 3025 /\R+b/B 3026 3027 /\R+\n/B 3028 3029 /\R+\d/B 3030 3031 /\d*\R/B 3032 3033 /\s*\R/B 3034 \x20\x0a 3035 \x20\x0d 3036 \x20\x0d\x0a 3037 3038 /\S*\R/B 3039 a\x0a 3040 3041 /X\h*\R/B 3042 X\x20\x0a 3043 3044 /X\H*\R/B 3045 X\x0d\x0a 3046 3047 /X\H+\R/B 3048 X\x0d\x0a 3049 3050 /X\H++\R/B 3051 \= Expect no match 3052 X\x0d\x0a 3053 3054 /(?<=abc)def/ 3055 abc\=ph 3056 3057 /abc$/ 3058 abc 3059 abc\=ps 3060 abc\=ph 3061 3062 /abc$/m 3063 abc 3064 abc\n 3065 abc\=ph 3066 abc\n\=ph 3067 abc\=ps 3068 abc\n\=ps 3069 3070 /abc\z/ 3071 abc 3072 abc\=ps 3073 abc\=ph 3074 3075 /abc\Z/ 3076 abc 3077 abc\=ps 3078 abc\=ph 3079 3080 /abc\b/ 3081 abc 3082 abc\=ps 3083 abc\=ph 3084 3085 /abc\B/ 3086 abc\=ps 3087 abc\=ph 3088 \= Expect no match 3089 abc 3090 3091 /.+/ 3092 \= Bad offsets 3093 abc\=offset=4 3094 abc\=offset=-4 3095 \= Valid data 3096 abc\=offset=0 3097 abc\=offset=1 3098 abc\=offset=2 3099 \= Expect no match 3100 abc\=offset=3 3101 3102 /^\c/ 3103 3104 /(?P<abn>(?P=abn)xxx)/B 3105 3106 /(a\1z)/B 3107 3108 /(?P<abn>(?P=abn)(?<badstufxxx)/B 3109 3110 /(?P<abn>(?P=axn)xxx)/B 3111 3112 /(?P<abn>(?P=axn)xxx)(?<axn>yy)/B 3113 3114 # These tests are here because Perl gets the first one wrong. 3115 3116 /(\R*)(.)/s 3117 \r\n 3118 \r\r\n\n\r 3119 \r\r\n\n\r\n 3120 3121 /(\R)*(.)/s 3122 \r\n 3123 \r\r\n\n\r 3124 \r\r\n\n\r\n 3125 3126 /((?>\r\n|\n|\x0b|\f|\r|\x85)*)(.)/s 3127 \r\n 3128 \r\r\n\n\r 3129 \r\r\n\n\r\n 3130 3131 # ------------- 3132 3133 /^abc$/B 3134 3135 /^abc$/Bm 3136 3137 /^(a)*+(\w)/ 3138 aaaaX 3139 \= Expect no match 3140 aaaa 3141 3142 /^(?:a)*+(\w)/ 3143 aaaaX 3144 \= Expect no match 3145 aaaa 3146 3147 /(a)++1234/IB 3148 3149 /([abc])++1234/I 3150 3151 /(?<=(abc)+)X/ 3152 3153 /(^ab)/I 3154 3155 /(^ab)++/I 3156 3157 /(^ab|^)+/I 3158 3159 /(^ab|^)++/I 3160 3161 /(?:^ab)/I 3162 3163 /(?:^ab)++/I 3164 3165 /(?:^ab|^)+/I 3166 3167 /(?:^ab|^)++/I 3168 3169 /(.*ab)/I 3170 3171 /(.*ab)++/I 3172 3173 /(.*ab|.*)+/I 3174 3175 /(.*ab|.*)++/I 3176 3177 /(?:.*ab)/I 3178 3179 /(?:.*ab)++/I 3180 3181 /(?:.*ab|.*)+/I 3182 3183 /(?:.*ab|.*)++/I 3184 3185 /(?=a)[bcd]/I 3186 3187 /((?=a))[bcd]/I 3188 3189 /((?=a))+[bcd]/I 3190 3191 /((?=a))++[bcd]/I 3192 3193 /(?=a+)[bcd]/Ii 3194 3195 /(?=a+?)[bcd]/Ii 3196 3197 /(?=a++)[bcd]/Ii 3198 3199 /(?=a{3})[bcd]/Ii 3200 3201 /(abc)\1+/ 3202 3203 # Perl doesn't get these right IMO (the 3rd is PCRE2-specific) 3204 3205 /(?1)(?:(b(*ACCEPT))){0}/ 3206 b 3207 3208 /(?1)(?:(b(*ACCEPT))){0}c/ 3209 bc 3210 \= Expect no match 3211 b 3212 3213 /(?1)(?:((*ACCEPT))){0}c/ 3214 c 3215 c\=notempty 3216 3217 /^.*?(?(?=a)a|b(*THEN)c)/ 3218 \= Expect no match 3219 ba 3220 3221 /^.*?(?(?=a)a|bc)/ 3222 ba 3223 3224 /^.*?(?(?=a)a(*THEN)b|c)/ 3225 \= Expect no match 3226 ac 3227 3228 /^.*?(?(?=a)a(*THEN)b)c/ 3229 \= Expect no match 3230 ac 3231 3232 /^.*?(a(*THEN)b)c/ 3233 \= Expect no match 3234 aabc 3235 3236 /^.*? (?1) c (?(DEFINE)(a(*THEN)b))/x 3237 aabc 3238 3239 /^.*?(a(*THEN)b|z)c/ 3240 aabc 3241 3242 /^.*?(z|a(*THEN)b)c/ 3243 aabc 3244 3245 # These are here because they are not Perl-compatible; the studying means the 3246 # mark is not seen. 3247 3248 /(*MARK:A)(*SKIP:B)(C|X)/mark 3249 C 3250 \= Expect no match 3251 D 3252 3253 /(*:A)A+(*SKIP:A)(B|Z)/mark 3254 \= Expect no match 3255 AAAC 3256 3257 # ---------------------------- 3258 3259 "(?=a*(*ACCEPT)b)c" 3260 c 3261 c\=notempty 3262 3263 /(?1)c(?(DEFINE)((*ACCEPT)b))/ 3264 c 3265 c\=notempty 3266 3267 /(?>(*ACCEPT)b)c/ 3268 c 3269 \= Expect no match 3270 c\=notempty 3271 3272 /(?:(?>(a)))+a%/allaftertext 3273 %aa% 3274 3275 /(a)b|ac/allaftertext 3276 ac\=ovector=1 3277 3278 /(a)(b)x|abc/allaftertext 3279 abc\=ovector=2 3280 3281 /(a)bc|(a)(b)\2/ 3282 abc\=ovector=1 3283 abc\=ovector=2 3284 aba\=ovector=1 3285 aba\=ovector=2 3286 aba\=ovector=3 3287 aba\=ovector=4 3288 3289 /(?(DEFINE)(a(?2)|b)(b(?1)|a))(?:(?1)|(?2))/I 3290 3291 /(a(?2)|b)(b(?1)|a)(?:(?1)|(?2))/I 3292 3293 /(a(?2)|b)(b(?1)|a)(?1)(?2)/I 3294 3295 /(abc)(?1)/I 3296 3297 /(?:(foo)|(bar)|(baz))X/allcaptures 3298 bazfooX 3299 foobazbarX 3300 barfooX 3301 bazX 3302 foobarbazX 3303 bazfooX\=ovector=0 3304 bazfooX\=ovector=1 3305 bazfooX\=ovector=2 3306 bazfooX\=ovector=3 3307 3308 /(?=abc){3}abc/B 3309 3310 /(?=abc)+abc/B 3311 3312 /(?=abc)++abc/B 3313 3314 /(?=abc){0}xyz/B 3315 3316 /(?=(a))?./B 3317 3318 /(?=(a))??./B 3319 3320 /^(?=(a)){0}b(?1)/B 3321 3322 /(?(DEFINE)(a))?b(?1)/B 3323 3324 /^(?=(?1))?[az]([abc])d/B 3325 3326 /^(?!a){0}\w+/B 3327 3328 /(?<=(abc))?xyz/B 3329 3330 /[:a[:abc]b:]/B 3331 3332 /^(a(*:A)(d|e(*:B))z|aeq)/auto_callout 3333 adz 3334 aez 3335 aeqwerty 3336 3337 /.(*F)/ 3338 \= Expect no match 3339 abc\=ph 3340 3341 /\btype\b\W*?\btext\b\W*?\bjavascript\b/I 3342 3343 /\btype\b\W*?\btext\b\W*?\bjavascript\b|\burl\b\W*?\bshell:|<input\b.*?\btype\b\W*?\bimage\b|\bonkeyup\b\W*?\=/I 3344 3345 /a(*SKIP)c|b(*ACCEPT)|/I,aftertext 3346 a 3347 3348 /a(*SKIP)c|b(*ACCEPT)cd(*ACCEPT)|x/I 3349 ax 3350 3351 'a*(*ACCEPT)b'aftertext 3352 abc\=notempty_atstart 3353 bbb\=notempty_atstart 3354 \= Expect no match 3355 \=notempty_atstart 3356 3357 /(*ACCEPT)a/I,aftertext 3358 bax 3359 3360 /z(*ACCEPT)a/I,aftertext 3361 baxzbx 3362 3363 /^(?>a+)(?>(z+))\w/B 3364 aaaazzzzb 3365 \= Expect no match 3366 aazz 3367 3368 /(.)(\1|a(?2))/ 3369 bab 3370 3371 /\1|(.)(?R)\1/ 3372 cbbbc 3373 3374 /(.)((?(1)c|a)|a(?2))/ 3375 \= Expect no match 3376 baa 3377 3378 /(?P<abn>(?P=abn)xxx)/B 3379 3380 /(a\1z)/B 3381 3382 /^a\x41z/alt_bsux,allow_empty_class,match_unset_backref,dupnames 3383 aAz 3384 \= Expect no match 3385 ax41z 3386 3387 /^a[m\x41]z/alt_bsux,allow_empty_class,match_unset_backref,dupnames 3388 aAz 3389 3390 /^a\x1z/alt_bsux,allow_empty_class,match_unset_backref,dupnames 3391 ax1z 3392 3393 /^a\u0041z/alt_bsux,allow_empty_class,match_unset_backref,dupnames 3394 aAz 3395 \= Expect no match 3396 au0041z 3397 3398 /^a[m\u0041]z/alt_bsux,allow_empty_class,match_unset_backref,dupnames 3399 aAz 3400 3401 /^a\u041z/alt_bsux,allow_empty_class,match_unset_backref,dupnames 3402 au041z 3403 \= Expect no match 3404 aAz 3405 3406 /^a\U0041z/alt_bsux,allow_empty_class,match_unset_backref,dupnames 3407 aU0041z 3408 \= Expect no match 3409 aAz 3410 3411 /(?(?=c)c|d)++Y/B 3412 3413 /(?(?=c)c|d)*+Y/B 3414 3415 /a[\NB]c/ 3416 aNc 3417 3418 /a[B-\Nc]/ 3419 3420 /a[B\Nc]/ 3421 3422 /(a)(?2){0,1999}?(b)/ 3423 3424 /(a)(?(DEFINE)(b))(?2){0,1999}?(?2)/ 3425 3426 # This test, with something more complicated than individual letters, causes 3427 # different behaviour in Perl. Perhaps it disables some optimization; no tag is 3428 # passed back for the failures, whereas in PCRE2 there is a tag. 3429 3430 /(A|P)(*:A)(B|P) | (X|P)(X|P)(*:B)(Y|P)/x,mark 3431 AABC 3432 XXYZ 3433 \= Expect no match 3434 XAQQ 3435 XAQQXZZ 3436 AXQQQ 3437 AXXQQQ 3438 3439 # Perl doesn't give marks for these, though it does if the alternatives are 3440 # replaced by single letters. 3441 3442 /(b|q)(*:m)f|a(*:n)w/mark 3443 aw 3444 \= Expect no match 3445 abc 3446 3447 /(q|b)(*:m)f|a(*:n)w/mark 3448 aw 3449 \= Expect no match 3450 abc 3451 3452 # After a partial match, the behaviour is as for a failure. 3453 3454 /^a(*:X)bcde/mark 3455 abc\=ps 3456 3457 # These are here because Perl doesn't return a mark, except for the first. 3458 3459 /(?=(*:x))(q|)/aftertext,mark 3460 abc 3461 3462 /(?=(*:x))((*:y)q|)/aftertext,mark 3463 abc 3464 3465 /(?=(*:x))(?:(*:y)q|)/aftertext,mark 3466 abc 3467 3468 /(?=(*:x))(?>(*:y)q|)/aftertext,mark 3469 abc 3470 3471 /(?=a(*:x))(?!a(*:y)c)/aftertext,mark 3472 ab 3473 3474 /(?=a(*:x))(?=a(*:y)c|)/aftertext,mark 3475 ab 3476 3477 /(..)\1/ 3478 ab\=ps 3479 aba\=ps 3480 abab\=ps 3481 3482 /(..)\1/i 3483 ab\=ps 3484 abA\=ps 3485 aBAb\=ps 3486 3487 /(..)\1{2,}/ 3488 ab\=ps 3489 aba\=ps 3490 abab\=ps 3491 ababa\=ps 3492 ababab\=ps 3493 ababab\=ph 3494 abababa\=ps 3495 abababa\=ph 3496 3497 /(..)\1{2,}/i 3498 ab\=ps 3499 aBa\=ps 3500 aBAb\=ps 3501 AbaBA\=ps 3502 abABAb\=ps 3503 aBAbaB\=ph 3504 abABabA\=ps 3505 abaBABa\=ph 3506 3507 /(..)\1{2,}?x/i 3508 ab\=ps 3509 abA\=ps 3510 aBAb\=ps 3511 abaBA\=ps 3512 abAbaB\=ps 3513 abaBabA\=ps 3514 abAbABaBx\=ps 3515 3516 /^(..)\1/ 3517 aba\=ps 3518 3519 /^(..)\1{2,3}x/ 3520 aba\=ps 3521 ababa\=ps 3522 ababa\=ph 3523 abababx 3524 ababababx 3525 3526 /^(..)\1{2,3}?x/ 3527 aba\=ps 3528 ababa\=ps 3529 ababa\=ph 3530 abababx 3531 ababababx 3532 3533 /^(..)(\1{2,3})ab/ 3534 abababab 3535 3536 /^\R/ 3537 \r\=ps 3538 \r\=ph 3539 3540 /^\R{2,3}x/ 3541 \r\=ps 3542 \r\=ph 3543 \r\r\=ps 3544 \r\r\=ph 3545 \r\r\r\=ps 3546 \r\r\r\=ph 3547 \r\rx 3548 \r\r\rx 3549 3550 /^\R{2,3}?x/ 3551 \r\=ps 3552 \r\=ph 3553 \r\r\=ps 3554 \r\r\=ph 3555 \r\r\r\=ps 3556 \r\r\r\=ph 3557 \r\rx 3558 \r\r\rx 3559 3560 /^\R?x/ 3561 \r\=ps 3562 \r\=ph 3563 x 3564 \rx 3565 3566 /^\R+x/ 3567 \r\=ps 3568 \r\=ph 3569 \r\n\=ps 3570 \r\n\=ph 3571 \rx 3572 3573 /^a$/newline=crlf 3574 a\r\=ps 3575 a\r\=ph 3576 3577 /^a$/m,newline=crlf 3578 a\r\=ps 3579 a\r\=ph 3580 3581 /^(a$|a\r)/newline=crlf 3582 a\r\=ps 3583 a\r\=ph 3584 3585 /^(a$|a\r)/m,newline=crlf 3586 a\r\=ps 3587 a\r\=ph 3588 3589 /./newline=crlf 3590 \r\=ps 3591 \r\=ph 3592 3593 /.{2,3}/newline=crlf 3594 \r\=ps 3595 \r\=ph 3596 \r\r\=ps 3597 \r\r\=ph 3598 \r\r\r\=ps 3599 \r\r\r\=ph 3600 3601 /.{2,3}?/newline=crlf 3602 \r\=ps 3603 \r\=ph 3604 \r\r\=ps 3605 \r\r\=ph 3606 \r\r\r\=ps 3607 \r\r\r\=ph 3608 3609 "AB(C(D))(E(F))?(?(?=\2)(?=\4))" 3610 ABCDGHI\=ovector=01 3611 3612 # These are all run as real matches in test 1; here we are just checking the 3613 # settings of the anchored and startline bits. 3614 3615 /(?>.*?a)(?<=ba)/I 3616 3617 /(?:.*?a)(?<=ba)/I 3618 3619 /.*?a(*PRUNE)b/I 3620 3621 /.*?a(*PRUNE)b/Is 3622 3623 /^a(*PRUNE)b/Is 3624 3625 /.*?a(*SKIP)b/I 3626 3627 /(?>.*?a)b/Is 3628 3629 /(?>.*?a)b/I 3630 3631 /(?>^a)b/Is 3632 3633 /(?>.*?)(?<=(abcd)|(wxyz))/I 3634 3635 /(?>.*)(?<=(abcd)|(wxyz))/I 3636 3637 "(?>.*)foo"I 3638 3639 "(?>.*?)foo"I 3640 3641 /(?>^abc)/Im 3642 3643 /(?>.*abc)/Im 3644 3645 /(?:.*abc)/Im 3646 3647 /(?:(a)+(?C1)bb|aa(?C2)b)/ 3648 aab\=callout_capture 3649 3650 /(?:(a)++(?C1)bb|aa(?C2)b)/ 3651 aab\=callout_capture 3652 3653 /(?:(?>(a))(?C1)bb|aa(?C2)b)/ 3654 aab\=callout_capture 3655 3656 /(?:(?1)(?C1)x|ab(?C2))((a)){0}/ 3657 aab\=callout_capture 3658 3659 /(?1)(?C1)((a)(?C2)){0}/ 3660 aab\=callout_capture 3661 3662 /(?:(a)+(?C1)bb|aa(?C2)b)++/ 3663 aab\=callout_capture 3664 aab\=callout_capture,ovector=1 3665 3666 /(ab)x|ab/ 3667 ab\=ovector=0 3668 ab\=ovector=1 3669 3670 /(?<=123)(*MARK:xx)abc/mark 3671 xxxx123a\=ph 3672 xxxx123a\=ps 3673 3674 /123\Kabc/startchar 3675 xxxx123a\=ph 3676 xxxx123a\=ps 3677 3678 /^(?(?=a)aa|bb)/auto_callout 3679 bb 3680 3681 /(?C1)^(?C2)(?(?C99)(?=(?C3)a(?C4))(?C5)a(?C6)a(?C7)|(?C8)b(?C9)b(?C10))(?C11)/ 3682 bb 3683 3684 # Perl seems to have a bug with this one. 3685 3686 /aaaaa(*COMMIT)(*PRUNE)b|a+c/ 3687 aaaaaac 3688 3689 # Here are some that Perl treats differently because of the way it handles 3690 # backtracking verbs. 3691 3692 /(?!a(*COMMIT)b)ac|ad/ 3693 ac 3694 ad 3695 3696 /^(?!a(*THEN)b|ac)../ 3697 ad 3698 \= Expect no match 3699 ac 3700 3701 /^(?=a(*THEN)b|ac)/ 3702 ac 3703 3704 /\A.*?(?:a|b(*THEN)c)/ 3705 ba 3706 3707 /\A.*?(?:a|b(*THEN)c)++/ 3708 ba 3709 3710 /\A.*?(?:a|b(*THEN)c|d)/ 3711 ba 3712 3713 /(?:(a(*MARK:X)a+(*SKIP:X)b)){0}(?:(?1)|aac)/ 3714 aac 3715 3716 /\A.*?(a|b(*THEN)c)/ 3717 ba 3718 3719 /^(A(*THEN)B|A(*THEN)D)/ 3720 AD 3721 3722 /(?!b(*THEN)a)bn|bnn/ 3723 bnn 3724 3725 /(?(?=b(*SKIP)a)bn|bnn)/ 3726 \= Expect no match 3727 bnn 3728 3729 /(?=b(*THEN)a|)bn|bnn/ 3730 bnn 3731 3732 # This test causes a segfault with Perl 5.18.0 3733 3734 /^(?=(a)){0}b(?1)/ 3735 backgammon 3736 3737 /(?|(?<n>f)|(?<n>b))/I,dupnames 3738 3739 /(?<a>abc)(?<a>z)\k<a>()/IB,dupnames 3740 3741 /a*[bcd]/B 3742 3743 /[bcd]*a/B 3744 3745 # A complete set of tests for auto-possessification of character types, but 3746 # omitting \C because it might be disabled (it has its own tests). 3747 3748 /\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 3749 3750 /\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 3751 3752 /\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 3753 3754 /\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 3755 3756 /\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 3757 3758 /\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 3759 3760 /\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 3761 3762 /\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 3763 3764 /\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 3765 3766 /\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 3767 3768 /\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 3769 3770 / 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 3771 3772 /\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 3773 3774 / .+\D .+\d .+\S .+\s .+\W .+\w .+. .+\R .+\H .+\h .+\V .+\v .+\Z .+\z .+$/Bx 3775 3776 / .+\D .+\d .+\S .+\s .+\W .+\w .+. .+\R .+\H .+\h .+\V .+\v .+\Z .+\z .+$/Bsx 3777 3778 / \D+$ \d+$ \S+$ \s+$ \W+$ \w+$ \R+$ \H+$ \h+$ \V+$ \v+$ a+$ \n+$ .+$ .+$/Bmx 3779 3780 /(?=a+)a(a+)++a/B 3781 3782 /a+(bb|cc)a+(?:bb|cc)a+(?>bb|cc)a+(?:bb|cc)+a+(aa)a+(?:bb|aa)/B 3783 3784 /a+(bb|cc)?#a+(?:bb|cc)??#a+(?:bb|cc)?+#a+(?:bb|cc)*#a+(bb|cc)?a#a+(?:aa)?/B 3785 3786 /a+(?:bb)?a#a+(?:|||)#a+(?:|b)a#a+(?:|||)?a/B 3787 3788 /[ab]*/B 3789 aaaa 3790 3791 /[ab]*?/B 3792 aaaa 3793 3794 /[ab]?/B 3795 aaaa 3796 3797 /[ab]??/B 3798 aaaa 3799 3800 /[ab]+/B 3801 aaaa 3802 3803 /[ab]+?/B 3804 aaaa 3805 3806 /[ab]{2,3}/B 3807 aaaa 3808 3809 /[ab]{2,3}?/B 3810 aaaa 3811 3812 /[ab]{2,}/B 3813 aaaa 3814 3815 /[ab]{2,}?/B 3816 aaaa 3817 3818 /\d+\s{0,5}=\s*\S?=\w{0,4}\W*/B 3819 3820 /[a-d]{5,12}[e-z0-9]*#[^a-z]+[b-y]*a[2-7]?[^0-9a-z]+/B 3821 3822 /[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 3823 3824 /a+(aa|bb)*c#a*(bb|cc)*a#a?(bb|cc)*d#[a-f]*(g|hh)*f/B 3825 3826 /[a-f]*(g|hh|i)*i#[a-x]{4,}(y{0,6})*y#[a-k]+(ll|mm)+n/B 3827 3828 /[a-f]*(?>gg|hh)+#[a-f]*(?>gg|hh)?#[a-f]*(?>gg|hh)*a#[a-f]*(?>gg|hh)*h/B 3829 3830 /[a-c]*d/IB 3831 3832 /[a-c]+d/IB 3833 3834 /[a-c]?d/IB 3835 3836 /[a-c]{4,6}d/IB 3837 3838 /[a-c]{0,6}d/IB 3839 3840 # End of special auto-possessive tests 3841 3842 /^A\o{1239}B/ 3843 A\123B 3844 3845 /^A\oB/ 3846 3847 /^A\x{zz}B/ 3848 3849 /^A\x{12Z/ 3850 3851 /^A\x{/ 3852 3853 /[ab]++/B,no_auto_possess 3854 3855 /[^ab]*+/B,no_auto_possess 3856 3857 /a{4}+/B,no_auto_possess 3858 3859 /a{4}+/Bi,no_auto_possess 3860 3861 /[a-[:digit:]]+/ 3862 3863 /[A-[:digit:]]+/ 3864 3865 /[a-[.xxx.]]+/ 3866 3867 /[a-[=xxx=]]+/ 3868 3869 /[a-[!xxx!]]+/ 3870 3871 /[A-[!xxx!]]+/ 3872 A]]] 3873 3874 /[a-\d]+/ 3875 3876 /(?<0abc>xx)/ 3877 3878 /(?&1abc)xx(?<1abc>y)/ 3879 3880 /(?<ab-cd>xx)/ 3881 3882 /(?'0abc'xx)/ 3883 3884 /(?P<0abc>xx)/ 3885 3886 /\k<5ghj>/ 3887 3888 /\k'5ghj'/ 3889 3890 /\k{2fgh}/ 3891 3892 /(?P=8yuki)/ 3893 3894 /\g{4df}/ 3895 3896 /(?&1abc)xx(?<1abc>y)/ 3897 3898 /(?P>1abc)xx(?<1abc>y)/ 3899 3900 /\g'3gh'/ 3901 3902 /\g<5fg>/ 3903 3904 /(?(<4gh>)abc)/ 3905 3906 /(?('4gh')abc)/ 3907 3908 /(?(4gh)abc)/ 3909 3910 /(?(R&6yh)abc)/ 3911 3912 /(((a\2)|(a*)\g<-1>))*a?/B 3913 3914 # Test the ugly "start or end of word" compatibility syntax. 3915 3916 /[[:<:]]red[[:>:]]/B 3917 little red riding hood 3918 a /red/ thing 3919 red is a colour 3920 put it all on red 3921 \= Expect no match 3922 no reduction 3923 Alfred Winifred 3924 3925 /[a[:<:]] should give error/ 3926 3927 /(?=ab\K)/aftertext 3928 abcd\=startchar 3929 3930 /abcd/newline=lf,firstline 3931 \= Expect no match 3932 xx\nxabcd 3933 3934 # Test stack guard external calls. 3935 3936 /(((a)))/stackguard=1 3937 3938 /(((a)))/stackguard=2 3939 3940 /(((a)))/stackguard=3 3941 3942 /(((((a)))))/ 3943 3944 # End stack guard tests 3945 3946 /^\w+(?>\s*)(?<=\w)/B 3947 3948 /\othing/ 3949 3950 /\o{}/ 3951 3952 /\o{whatever}/ 3953 3954 /\xthing/ 3955 3956 /\x{}/ 3957 3958 /\x{whatever}/ 3959 3960 /A\8B/ 3961 3962 /A\9B/ 3963 3964 # This one is here because Perl fails to match "12" for this pattern when the $ 3965 # is present. 3966 3967 /^(?(?=abc)\w{3}:|\d\d)$/ 3968 abc: 3969 12 3970 \= Expect no match 3971 123 3972 xyz 3973 3974 # Perl gets this one wrong, giving "a" as the after text for ca and failing to 3975 # match for cd. 3976 3977 /(?(?=ab)ab)/aftertext 3978 abxxx 3979 ca 3980 cd 3981 3982 # This should test both paths for processing OP_RECURSE. 3983 3984 /(?(R)a+|(?R)b)/ 3985 aaaabcde 3986 aaaabcde\=ovector=100 3987 3988 /a*?b*?/ 3989 ab 3990 3991 /(*NOTEMPTY)a*?b*?/ 3992 ab 3993 ba 3994 cb 3995 3996 /(*NOTEMPTY_ATSTART)a*?b*?/aftertext 3997 ab 3998 cdab 3999 4000 /(?(VERSION>=10.0)yes|no)/I 4001 yesno 4002 4003 /(?(VERSION=8)yes){3}/BI,aftertext 4004 yesno 4005 4006 /(?(VERSION=8)yes|no){3}/I 4007 yesnononoyes 4008 \= Expect no match 4009 yesno 4010 4011 /(?:(?<VERSION>abc)|xyz)(?(VERSION)yes|no)/I 4012 abcyes 4013 xyzno 4014 \= Expect no match 4015 abcno 4016 xyzyes 4017 4018 /(?(VERSION<10)yes|no)/ 4019 4020 /(?(VERSION>10)yes|no)/ 4021 4022 /(?(VERSION>=10.0.0)yes|no)/ 4023 4024 /(?(VERSION=10.101)yes|no)/ 4025 4026 /abcd/I 4027 4028 /abcd/I,no_start_optimize 4029 4030 /(|ab)*?d/I 4031 abd 4032 xyd 4033 4034 /(|ab)*?d/I,no_start_optimize 4035 abd 4036 xyd 4037 4038 /\k<A>*(?<A>aa)(?<A>bb)/match_unset_backref,dupnames 4039 aabb 4040 4041 /(((((a)))))/parens_nest_limit=2 4042 4043 /abc/replace=XYZ 4044 123123 4045 123abc123 4046 123abc123abc123 4047 123123\=zero_terminate 4048 123abc123\=zero_terminate 4049 123abc123abc123\=zero_terminate 4050 4051 /abc/g,replace=XYZ 4052 123abc123 4053 123abc123abc123 4054 4055 /abc/replace=X$$Z 4056 123abc123 4057 4058 /abc/g,replace=X$$Z 4059 123abc123abc123 4060 4061 /a(b)c(d)e/replace=X$1Y${2}Z 4062 "abcde" 4063 4064 /a(b)c(d)e/replace=X$1Y${2}Z,global 4065 "abcde-abcde" 4066 4067 /a(?<ONE>b)c(?<TWO>d)e/replace=X$ONE+${TWO}Z 4068 "abcde" 4069 4070 /a(?<ONE>b)c(?<TWO>d)e/g,replace=X$ONE+${TWO}Z 4071 "abcde-abcde-" 4072 4073 /abc/replace=a$++ 4074 123abc 4075 4076 /abc/replace=a$bad 4077 123abc 4078 4079 /abc/replace=a${A234567890123456789_123456789012}z 4080 123abc 4081 4082 /abc/replace=a${A23456789012345678901234567890123}z 4083 123abc 4084 4085 /abc/replace=a${bcd 4086 123abc 4087 4088 /abc/replace=a${b+d}z 4089 123abc 4090 4091 /abc/replace=[10]XYZ 4092 123abc123 4093 4094 /abc/replace=[9]XYZ 4095 123abc123 4096 4097 /abc/replace=xyz 4098 1abc2\=partial_hard 4099 4100 /abc/replace=xyz 4101 123abc456 4102 123abc456\=replace=pqr 4103 123abc456abc789 4104 123abc456abc789\=g 4105 4106 /(?<=abc)(|def)/g,replace=<$0> 4107 123abcxyzabcdef789abcpqr 4108 4109 /./replace=$0 4110 a 4111 4112 /(.)(.)/replace=$2+$1 4113 abc 4114 4115 /(?<A>.)(?<B>.)/replace=$B+$A 4116 abc 4117 4118 /(.)(.)/g,replace=$2$1 4119 abcdefgh 4120 4121 /(*:pear)apple|(*:orange)lemon|(*:strawberry)blackberry/g,replace=${*MARK} 4122 apple lemon blackberry 4123 apple strudel 4124 fruitless 4125 4126 /(*:pear)apple|(*:orange)lemon|(*:strawberry)blackberry/replace=${*MARK} sauce, 4127 apple lemon blackberry 4128 4129 /(*:pear)apple|(*:orange)lemon|(*:strawberry)blackberry/g,replace=<$*MARK> 4130 apple lemon blackberry 4131 apple strudel 4132 fruitless 4133 4134 /(*:pear)apple/g,replace=${*MARKING} 4135 apple lemon blackberry 4136 4137 /(*:pear)apple/g,replace=${*MARK-time 4138 apple lemon blackberry 4139 4140 /(*:pear)apple/g,replace=${*mark} 4141 apple lemon blackberry 4142 4143 /(*:pear)apple|(*:orange)lemon|(*:strawberry)blackberry/g,replace=<$*MARKET> 4144 apple lemon blackberry 4145 4146 /(*:pear)apple|(*:orange)lemon|(*:strawberry)blackberry/g,replace=[22]${*MARK} 4147 apple lemon blackberry 4148 apple lemon blackberry\=substitute_overflow_length 4149 4150 /(*:pear)apple|(*:orange)lemon|(*:strawberry)blackberry/g,replace=[23]${*MARK} 4151 apple lemon blackberry 4152 4153 /abc/ 4154 123abc123\=replace=[9]XYZ 4155 123abc123\=substitute_overflow_length,replace=[9]XYZ 4156 123abc123\=substitute_overflow_length,replace=[6]XYZ 4157 123abc123\=substitute_overflow_length,replace=[1]XYZ 4158 123abc123\=substitute_overflow_length,replace=[0]XYZ 4159 4160 /a(b)c/ 4161 123abc123\=replace=[9]x$1z 4162 123abc123\=substitute_overflow_length,replace=[9]x$1z 4163 123abc123\=substitute_overflow_length,replace=[6]x$1z 4164 123abc123\=substitute_overflow_length,replace=[1]x$1z 4165 123abc123\=substitute_overflow_length,replace=[0]x$1z 4166 4167 "((?=(?(?=(?(?=(?(?=()))))))))" 4168 a 4169 4170 "(?(?=)==)(((((((((?=)))))))))" 4171 \= Expect no match 4172 a 4173 4174 /(a)(b)|(c)/ 4175 XcX\=ovector=2,get=1,get=2,get=3,get=4,getall 4176 4177 /x(?=ab\K)/ 4178 xab\=get=0 4179 xab\=copy=0 4180 xab\=getall 4181 4182 /(?<A>a)|(?<A>b)/dupnames 4183 a\=ovector=1,copy=A,get=A,get=2 4184 a\=ovector=2,copy=A,get=A,get=2 4185 b\=ovector=2,copy=A,get=A,get=2 4186 4187 /a(b)c(d)/ 4188 abc\=ph,copy=0,copy=1,getall 4189 4190 /^abc/info 4191 4192 /^abc/info,no_dotstar_anchor 4193 4194 /.*\d/info,auto_callout 4195 \= Expect no match 4196 aaa 4197 4198 /.*\d/info,no_dotstar_anchor,auto_callout 4199 \= Expect no match 4200 aaa 4201 4202 /.*\d/dotall,info 4203 4204 /.*\d/dotall,no_dotstar_anchor,info 4205 4206 /(*NO_DOTSTAR_ANCHOR)(?s).*\d/info 4207 4208 '^(?:(a)|b)(?(1)A|B)' 4209 aA123\=ovector=1 4210 aA123\=ovector=2 4211 4212 '^(?:(?<AA>a)|b)(?(<AA>)A|B)' 4213 aA123\=ovector=1 4214 aA123\=ovector=2 4215 4216 '^(?<AA>)(?:(?<AA>a)|b)(?(<AA>)A|B)'dupnames 4217 aA123\=ovector=1 4218 aA123\=ovector=2 4219 aA123\=ovector=3 4220 4221 '^(?:(?<AA>X)|)(?:(?<AA>a)|b)\k{AA}'dupnames 4222 aa123\=ovector=1 4223 aa123\=ovector=2 4224 aa123\=ovector=3 4225 4226 /(?<N111>(?J)(?<N111>1(111111)11|)1|1|)(?(<N111>)1)/ 4227 4228 /(?<N>(?J)(?<N>))(?-J)\k<N>/ 4229 4230 # Quantifiers are not allowed on condition assertions, but are otherwise 4231 # OK in conditions. 4232 4233 /(?(?=0)?)+/ 4234 4235 /(?(?=0)(?=00)?00765)/ 4236 00765 4237 4238 /(?(?=0)(?=00)?00765|(?!3).56)/ 4239 00765 4240 456 4241 \= Expect no match 4242 356 4243 4244 '^(a)*+(\w)' 4245 g 4246 g\=ovector=1 4247 4248 '^(?:a)*+(\w)' 4249 g 4250 g\=ovector=1 4251 4252 # These two pattern showeds up compile-time bugs 4253 4254 "((?2){0,1999}())?" 4255 4256 /((?+1)(\1))/B 4257 4258 # Callouts with string arguments 4259 4260 /a(?C"/ 4261 4262 /a(?C"a/ 4263 4264 /a(?C"a"/ 4265 4266 /a(?C"a"bcde(?C"b")xyz/ 4267 4268 /a(?C"a)b""c")/B 4269 4270 /ab(?C" any text with spaces ")cde/B 4271 abcde 4272 12abcde 4273 4274 /^a(b)c(?C1)def/ 4275 abcdef 4276 4277 /^a(b)c(?C"AB")def/ 4278 abcdef 4279 4280 /^a(b)c(?C1)def/ 4281 abcdef\=callout_capture 4282 4283 /^a(b)c(?C{AB})def/B 4284 abcdef\=callout_capture 4285 4286 /(?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 4287 4288 /(?:a(?C`code`)){3}/B 4289 4290 /^(?(?C25)(?=abc)abcd|xyz)/B,callout_info 4291 abcdefg 4292 xyz123 4293 4294 /^(?(?C$abc$)(?=abc)abcd|xyz)/B 4295 abcdefg 4296 xyz123 4297 4298 /^ab(?C'first')cd(?C"second")ef/ 4299 abcdefg 4300 4301 /(?:a(?C`code`)){3}X/ 4302 aaaXY 4303 4304 # Binary zero in callout string 4305 # a ( ? C ' x z ' ) b 4306 / 61 28 3f 43 27 78 00 7a 27 29 62/hex,callout_info 4307 abcdefgh 4308 4309 /(?(?!)^)/ 4310 4311 /(?(?!)a|b)/ 4312 bbb 4313 \= Expect no match 4314 aaa 4315 4316 # JIT gives a different error message for the infinite recursion 4317 4318 "(*NO_JIT)((?2)+)((?1)){" 4319 abcd{ 4320 4321 # Perl fails to diagnose the absence of an assertion 4322 4323 "(?(?<E>.*!.*)?)" 4324 4325 "X((?2)()*+){2}+"B 4326 4327 "X((?2)()*+){2}"B 4328 4329 /(?<=\bABQ(3(?-7)))/ 4330 4331 /(?<=\bABQ(3(?+7)))/ 4332 4333 ";(?<=()((?3))((?2)))" 4334 4335 # Perl loops on this (PCRE2 used to!) 4336 4337 /(?<=\Ka)/g,aftertext 4338 aaaaa 4339 4340 /(?<=\Ka)/altglobal,aftertext 4341 aaaaa 4342 4343 /((?2){73}(?2))((?1))/info 4344 4345 /abc/ 4346 \= Expect no match 4347 \[9x!xxx(]{9999} 4348 4349 /(abc)*/ 4350 \[abc]{5} 4351 4352 /^/gm 4353 \n\n\n 4354 4355 /^/gm,alt_circumflex 4356 \n\n\n 4357 4358 /((((((((x))))))))\81/ 4359 xx1 4360 4361 /((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((x))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))\80/ 4362 xx 4363 4364 /\80/ 4365 4366 /A\8B\9C/ 4367 A8B9C 4368 4369 /(?x:((?'a')) # comment (with parentheses) and | vertical 4370 (?-x:#not a comment (?'b')) # this is a comment () 4371 (?'c')) # not a comment (?'d')/info 4372 4373 /(?|(?'a')(2)(?'b')|(?'a')(?'a')(3))/I,dupnames 4374 A23B 4375 B32A 4376 4377 # These are some patterns that used to cause buffer overflows or other errors 4378 # while compiling. 4379 4380 /.((?2)(?R)|\1|$)()/B 4381 4382 /.((?3)(?R)()(?2)|\1|$)()/B 4383 4384 /(\9*+(?2);\3++()2|)++{/ 4385 4386 /\V\x85\9*+((?2)\3++()2)*:2/ 4387 4388 /(((?(R)){0,2}) (?'x'((?'R')((?'R')))))/dupnames 4389 4390 /(((?(X)){0,2}) (?'x'((?'X')((?'X')))))/dupnames 4391 4392 /(((?(R)){0,2}) (?'x'((?'X')((?'R')))))/ 4393 4394 "(?J)(?'d'(?'d'\g{d}))" 4395 4396 "(?=!((?2)(?))({8(?<=(?1){29}8bbbb\x16\xd\xc6^($(\xa9H4){4}h}?1)B))\x15')" 4397 4398 /A(?'')Z/ 4399 4400 "(?J:(?|(?'R')(\k'R')|((?'R'))))" 4401 4402 /(?<=|(\,\$(?73591620449005828816)\xa8.{7}){6}\x09)/ 4403 4404 /^(?:(?(1)x|)+)+$()/B 4405 4406 /[[:>:]](?<)/ 4407 4408 /((?x)(*:0))#(?'/ 4409 4410 /(?C$[$)(?<]/ 4411 4412 /(?C$)$)(?<]/ 4413 4414 /(?(R))*+/B 4415 abcd 4416 4417 /((?x)(?#))#(?'/ 4418 4419 /((?x)(?#))#(?'abc')/I 4420 4421 /[[:\\](?<[::]/ 4422 4423 /[[:\\](?'abc')[a:]/I 4424 4425 "[[[.\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[[[:[::::::[[[:[[[[[[[[:[[::[::::[[:::::::[[:[[[[[[[:[[::[:[[:[~" 4426 4427 /()(?(R)0)*+/B 4428 4429 /(?R-:(?</ 4430 4431 /(?R-:(?<)/ 4432 4433 /(?(?C{\Q})(?!(?'/ 4434 4435 /(?(?C{\Q})(?!(?'abc')))/I 4436 4437 /(?1){3918}(((((0(\k'R'))))(?J)(?'R'(?'R'\3){99})))/I 4438 4439 /(?|(aaa)|(b))\g{1}/I 4440 4441 /(?|(aaa)|(b))(?1)/I 4442 4443 /(?|(aaa)|(b))/I 4444 4445 /(?|(?'a'aaa)|(?'a'b))\k'a'/I 4446 4447 /(?|(?'a'aaa)|(?'a'b))(?'a'cccc)\k'a'/I,dupnames 4448 4449 /ab{3cd/ 4450 ab{3cd 4451 4452 /ab{3,cd/ 4453 ab{3,cd 4454 4455 /ab{3,4a}cd/ 4456 ab{3,4a}cd 4457 4458 /{4,5a}bc/ 4459 {4,5a}bc 4460 4461 /\x0{ab}/ 4462 \0{ab} 4463 4464 /^(a(b))\1\g1\g{1}\g-1\g{-1}\g{-02}Z/ 4465 ababababbbabZXXXX 4466 4467 /.*?a(*PRUNE)b/ 4468 aab 4469 4470 /.*?a(*PRUNE)b/s 4471 aab 4472 4473 /^a(*PRUNE)b/s 4474 \= Expect no match 4475 aab 4476 4477 /.*?a(*SKIP)b/ 4478 aab 4479 4480 /(?(8000000000/ 4481 4482 /((?(R8000000000)))/ 4483 4484 /0(?0)|(1)(*THEN)(*SKIP:0)(*FAIL)/ 4485 \= Expect no match 4486 01 4487 4488 /(?(1)()\983040\2)/ 4489 4490 /(*LIMIT_MATCH=)abc/ 4491 4492 /(*CRLF)(*LIMIT_MATCH=)abc/ 4493 4494 /(?:ab)?(?:ab)(?:ab)/ 4495 abab 4496 ababab 4497 \= Expect no match 4498 aba 4499 4500 /((*MARK:A))++a(*SKIP:B)b/ 4501 \= Expect no match 4502 aacb 4503 4504 /(*MARK:a\zb)z/alt_verbnames 4505 4506 /(*:ab\t(d\)c)xxx/ 4507 4508 /(*:ab\t(d\)c)xxx/alt_verbnames,mark 4509 cxxxz 4510 4511 /(*:A\Qxx)x\EB)x/alt_verbnames,mark 4512 x 4513 4514 /(*:A\ExxxB)x/alt_verbnames,mark 4515 x 4516 4517 /(*: A \ and #comment 4518 \ B)x/x,alt_verbnames,mark 4519 x 4520 4521 /(*:A 4522 B)x/alt_verbnames,mark 4523 x 4524 4525 /(*:abc\Qpqr)/alt_verbnames 4526 4527 /abc/use_offset_limit 4528 1234abcde\=offset_limit=100 4529 1234abcde\=offset_limit=9 4530 1234abcde\=offset_limit=4 4531 1234abcde\=offset_limit=4,offset=4 4532 \= Expect no match 4533 1234abcde\=offset_limit=4,offset=5 4534 1234abcde\=offset_limit=3 4535 4536 /(?<=abc)/use_offset_limit 4537 1234abc\=offset_limit=7 4538 \= Expect no match 4539 1234abc\=offset_limit=6 4540 4541 /A/g,replace=-,use_offset_limit 4542 XAXAXAXAXA\=offset_limit=4 4543 4544 /abc/ 4545 \= Expect error 4546 1234abcde\=offset_limit=4 4547 4548 /^\w/m,use_offset_limit 4549 \n..\naa\=offset_limit=3 4550 \n..\naa\=offset_limit=4 4551 4552 /abcd/null_context 4553 abcd\=null_context 4554 \= Expect error 4555 abcd\=null_context,find_limits 4556 abcd\=allusedtext,startchar 4557 4558 /abcd/replace=w\rx\x82y\o{333}z(\Q12\$34$$\x34\E5$$),substitute_extended 4559 abcd 4560 4561 /a(bc)(DE)/replace=a\u$1\U$1\E$1\l$2\L$2\Eab\Uab\LYZ\EDone,substitute_extended 4562 abcDE 4563 4564 /abcd/replace=xy\kz,substitute_extended 4565 abcd 4566 4567 /a(?:(b)|(c))/substitute_extended,replace=X${1:+1:-1}X${2:+2:-2} 4568 ab 4569 ac 4570 ab\=replace=${1:+$1\:$1:$2} 4571 ac\=replace=${1:+$1\:$1:$2} 4572 4573 /a(?:(b)|(c))/substitute_extended,replace=X${1:-1:-1}X${2:-2:-2} 4574 ab 4575 ac 4576 4577 /(a)/substitute_extended,replace=>${1:+\Q$1:{}$$\E+\U$1}< 4578 a 4579 4580 /X(b)Y/substitute_extended 4581 XbY\=replace=x${1:+$1\U$1}y 4582 XbY\=replace=\Ux${1:+$1$1}y 4583 4584 /a/substitute_extended,replace=${*MARK:+a:b} 4585 a 4586 4587 /(abcd)/replace=${1:+xy\kz},substitute_extended 4588 abcd 4589 4590 /(abcd)/ 4591 abcd\=replace=${1:+xy\kz},substitute_extended 4592 4593 /abcd/substitute_extended,replace=>$1< 4594 abcd 4595 4596 /abcd/substitute_extended,replace=>xxx${xyz}<<< 4597 abcd 4598 4599 /(?J)(?:(?<A>a)|(?<A>b))/replace=<$A> 4600 [a] 4601 [b] 4602 \= Expect error 4603 (a)\=ovector=1 4604 4605 /(a)|(b)/replace=<$1> 4606 \= Expect error 4607 b 4608 4609 /(aa)(BB)/substitute_extended,replace=\U$1\L$2\E$1..\U$1\l$2$1 4610 aaBB 4611 4612 /^(o(\1{72}{\"{\\{00000059079}\d*){74}}){19}/I 4613 4614 /((p(?'K/ 4615 4616 /((p(?'K/no_auto_capture 4617 4618 /abc/replace=A$3123456789Z 4619 abc 4620 4621 /(?<!a{65535}a{5})x/I 4622 4623 /(?<!a{65535})x/I 4624 4625 /(?=a\K)/replace=z 4626 BaCaD 4627 4628 /(?'abcdefghijklmnopqrstuvwxyzABCDEFG'toolong)/ 4629 4630 /(?'abcdefghijklmnopqrstuvwxyzABCDEF'justright)/ 4631 4632 # These two use zero-termination 4633 /abcd/max_pattern_length=3 4634 4635 /abc/max_pattern_length=3 4636 4637 # These two, being hex, pass the length 4638 /abcdefab/hex,max_pattern_length=3 4639 4640 /abcdef/hex,max_pattern_length=3 4641 4642 # These two patterns used to take a long time to compile 4643 4644 "(.*) 4645 ((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))((?-2)(?-2)) 4646 ((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))((?-2)(?-2)) 4647 ((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))"xI 4648 4649 "(?<=a() 4650 ((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))((?-2)(?-2)) 4651 ((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))((?-2)(?-2)) 4652 ((?-2)(?-2))((?-2)(?-2))((?-2)(?-2)) 4653 a)"xI 4654 4655 # When (?| is used and groups of the same number may be different, 4656 # we have to rely on a count to catch overly complicated patterns. 4657 4658 "(?|()|())(.*) 4659 ((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))((?-2)(?-2)) 4660 ((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))((?-2)(?-2)) 4661 ((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))"xI 4662 4663 "(?|()|())(?<=a() 4664 ((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))((?-2)(?-2)) 4665 ((?-2)(?-2))((?-2)(?-2))((?-2)(?-2))((?-2)(?-2)) 4666 ((?-2)(?-2))((?-2)(?-2))((?-2)(?-2)) 4667 a)"xI 4668 4669 # Test the use of malloc for caching group information when there are more 4670 # groups than fit into the on-stack workspace. 4671 4672 /\[()]{1024}/I,expand 4673 4674 # Test minlength capped at 65535 4675 4676 /(A{65000})\1{65000}/I 4677 4678 # Test group scans when numbers are not unique 4679 4680 /(?|()+|(a)+)/BI 4681 4682 /(?|(a)+|()+)/BI 4683 4684 /(?|()|(a))/BI 4685 4686 /(?|(a)|())/BI 4687 4688 # Test CRLF handling in empty string substitutions 4689 4690 /^$/gm,newline=anycrlf,replace=- 4691 X\r\n\r\nY 4692 4693 /^$/gm,newline=crlf,replace=- 4694 X\r\n\r\nY 4695 4696 /^$/gm,newline=any,replace=- 4697 X\r\n\r\nY 4698 4699 "(*ANYCRLF)(?m)^(.*[^0-9\r\n].*|)$"g,replace=NaN 4700 15\r\nfoo\r\n20\r\nbar\r\nbaz\r\n\r\n20 4701 4702 /a[[:punct:]b]/bincode 4703 4704 /a[b[:punct:]]/bincode 4705 4706 /L(?#(|++<!(2)?/B 4707 4708 /L(?#(|++<!(2)?/B,no_auto_possess 4709 4710 /L(?#(|++<!(2)?/B,auto_callout 4711 4712 /L(?#(|++<!(2)?/B,no_auto_possess,auto_callout 4713 4714 /(A*)\E+/B,auto_callout 4715 4716 /()\Q\E*]/B,auto_callout 4717 a[bc]d 4718 4719 /\x8a+f|;T?(*:;.'?`(\xeap ){![^()!y*''C*(?';]{1;(\x08)/B,alt_verbnames,dupnames,extended 4720 4721 # Tests for NULL characters in comments and verb "names" and callouts 4722 4723 # /A#B\x00C\x0aZ/ 4724 /41 23 42 00 43 0a 5a/Bx,hex 4725 4726 # /A+#B\x00C\x0a+/ 4727 /41 2b 23 42 00 43 0a 2b/Bx,hex 4728 4729 # /A(*:B\x00W#X\00Y\x0aC)Z/ 4730 /41 28 2a 3a 42 00 57 23 58 00 59 0a 43 29 5a/Bx,hex,alt_verbnames 4731 4732 # /A(*:B\x00W#X\00Y\x0aC)Z/ 4733 /41 28 2a 3a 42 00 57 23 58 00 59 0a 43 29 5a/Bx,hex 4734 4735 # /A(?C{X\x00Y})B/ 4736 /41 28 3f 43 7b 58 00 59 7d 29 42/B,hex 4737 4738 # /A(?#X\x00Y)B/ 4739 /41 28 3f 23 7b 00 7d 29 42/B,hex 4740 4741 # Tests for leading comment in extended patterns 4742 4743 / (?-x):?/extended 4744 4745 /(?-x):?/extended 4747 4748 /0b 28 3f 2d 78 29 3a/hex,extended 4749 4750 /#comment 4751 (?-x):?/extended 4752 4753 /(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 4754 4755 /a|(b)c/replace=>$1<,substitute_unset_empty 4756 cat 4757 xbcom 4758 4759 /a|(b)c/ 4760 cat\=replace=>$1< 4761 cat\=replace=>$1<,substitute_unset_empty 4762 xbcom\=replace=>$1<,substitute_unset_empty 4763 4764 /a|(b)c/substitute_extended 4765 cat\=replace=>${2:-xx}< 4766 cat\=replace=>${2:-xx}<,substitute_unknown_unset 4767 cat\=replace=>${X:-xx}<,substitute_unknown_unset 4768 4769 /a|(?'X'b)c/replace=>$X<,substitute_unset_empty 4770 cat 4771 xbcom 4772 4773 /a|(?'X'b)c/replace=>$Y<,substitute_unset_empty 4774 cat 4775 cat\=substitute_unknown_unset 4776 cat\=substitute_unknown_unset,-substitute_unset_empty 4777 4778 /a|(b)c/replace=>$2<,substitute_unset_empty 4779 cat 4780 cat\=substitute_unknown_unset 4781 cat\=substitute_unknown_unset,-substitute_unset_empty 4782 4783 /()()()/use_offset_limit 4784 \=ovector=11000000000 4785 \=callout_fail=11000000000 4786 \=callout_fail=1:11000000000 4787 \=callout_data=11000000000 4788 \=callout_data=-11000000000 4789 \=offset_limit=1100000000000000000000 4790 \=copy=11000000000 4791 4792 /(*MARK:A\x00b)/mark 4793 abc 4794 4795 /(*MARK:A\x00b)/mark,alt_verbnames 4796 abc 4797 4798 /"(*MARK:A" 00 "b)"/mark,hex 4799 abc 4800 4801 /"(*MARK:A" 00 "b)"/mark,hex,alt_verbnames 4802 abc 4803 4804 /efg/hex 4805 4806 /eff/hex 4807 4808 /effg/hex 4809 4810 /(?J)(?'a'))(?'a')/ 4811 4812 /(?<=((?C)0))/ 4813 9010 4814 \= Expect no match 4815 abc 4816 4817 /aaa/ 4818 \[abc]{10000000000000000000000000000} 4819 \[a]{3} 4820 4821 /\[AB]{6000000000000000000000}/expand 4822 4823 # End of testinput2 4824