Return to testoutput2 CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / pcre / pcrelib / testdata |
1.1 misho 1: /-- This set of tests is not Perl-compatible. It checks on special features 2: of PCRE's API, error diagnostics, and the compiled code of some patterns. 3: It also checks the non-Perl syntax the PCRE supports (Python, .NET, 4: Oniguruma). Finally, there are some tests where PCRE and Perl differ, 5: either because PCRE can't be compatible, or there is a possible Perl 6: bug. --/ 7: 8: /-- Originally, the Perl >= 5.10 things were in here too, but now I have 9: separated many (most?) of them out into test 11. However, there may still 10: be some that were overlooked. --/ 11: 12: /(a)b|/I 13: Capturing subpattern count = 1 14: No options 15: No first char 16: No need char 17: 18: /abc/I 19: Capturing subpattern count = 0 20: No options 21: First char = 'a' 22: Need char = 'c' 23: abc 24: 0: abc 25: defabc 26: 0: abc 27: \Aabc 28: 0: abc 29: *** Failers 30: No match 31: \Adefabc 32: No match 33: ABC 34: No match 35: 36: /^abc/I 37: Capturing subpattern count = 0 38: Options: anchored 39: No first char 40: No need char 41: abc 42: 0: abc 43: \Aabc 44: 0: abc 45: *** Failers 46: No match 47: defabc 48: No match 49: \Adefabc 50: No match 51: 52: /a+bc/I 53: Capturing subpattern count = 0 54: No options 55: First char = 'a' 56: Need char = 'c' 57: 58: /a*bc/I 59: Capturing subpattern count = 0 60: No options 61: No first char 62: Need char = 'c' 63: 64: /a{3}bc/I 65: Capturing subpattern count = 0 66: No options 67: First char = 'a' 68: Need char = 'c' 69: 70: /(abc|a+z)/I 71: Capturing subpattern count = 1 72: No options 73: First char = 'a' 74: No need char 75: 76: /^abc$/I 77: Capturing subpattern count = 0 78: Options: anchored 79: No first char 80: No need char 81: abc 82: 0: abc 83: *** Failers 84: No match 85: def\nabc 86: No match 87: 88: /ab\idef/X 89: Failed: unrecognized character follows \ at offset 3 90: 91: /(?X)ab\idef/X 92: Failed: unrecognized character follows \ at offset 7 93: 94: /x{5,4}/ 95: Failed: numbers out of order in {} quantifier at offset 5 96: 97: /z{65536}/ 98: Failed: number too big in {} quantifier at offset 7 99: 100: /[abcd/ 101: Failed: missing terminating ] for character class at offset 5 102: 103: /(?X)[\B]/ 104: Failed: invalid escape sequence in character class at offset 6 105: 106: /(?X)[\R]/ 107: Failed: invalid escape sequence in character class at offset 6 108: 109: /(?X)[\X]/ 110: Failed: invalid escape sequence in character class at offset 6 111: 112: /[\B]/BZ 113: ------------------------------------------------------------------ 114: Bra 115: B 116: Ket 117: End 118: ------------------------------------------------------------------ 119: 120: /[\R]/BZ 121: ------------------------------------------------------------------ 122: Bra 123: R 124: Ket 125: End 126: ------------------------------------------------------------------ 127: 128: /[\X]/BZ 129: ------------------------------------------------------------------ 130: Bra 131: X 132: Ket 133: End 134: ------------------------------------------------------------------ 135: 136: /[z-a]/ 137: Failed: range out of order in character class at offset 3 138: 139: /^*/ 140: Failed: nothing to repeat at offset 1 141: 142: /(abc/ 143: Failed: missing ) at offset 4 144: 145: /(?# abc/ 146: Failed: missing ) after comment at offset 7 147: 148: /(?z)abc/ 149: Failed: unrecognized character after (? or (?- at offset 2 150: 151: /.*b/I 152: Capturing subpattern count = 0 153: No options 154: First char at start or follows newline 155: Need char = 'b' 156: 157: /.*?b/I 158: Capturing subpattern count = 0 159: No options 160: First char at start or follows newline 161: Need char = 'b' 162: 163: /cat|dog|elephant/I 164: Capturing subpattern count = 0 165: No options 166: No first char 167: No need char 168: this sentence eventually mentions a cat 169: 0: cat 170: this sentences rambles on and on for a while and then reaches elephant 171: 0: elephant 172: 173: /cat|dog|elephant/IS 174: Capturing subpattern count = 0 175: No options 176: No first char 177: No need char 178: Subject length lower bound = 3 179: Starting byte set: c d e 180: this sentence eventually mentions a cat 181: 0: cat 182: this sentences rambles on and on for a while and then reaches elephant 183: 0: elephant 184: 185: /cat|dog|elephant/IiS 186: Capturing subpattern count = 0 187: Options: caseless 188: No first char 189: No need char 190: Subject length lower bound = 3 191: Starting byte set: C D E c d e 192: this sentence eventually mentions a CAT cat 193: 0: CAT 194: this sentences rambles on and on for a while to elephant ElePhant 195: 0: elephant 196: 197: /a|[bcd]/IS 198: Capturing subpattern count = 0 199: No options 200: No first char 201: No need char 202: Subject length lower bound = 1 203: Starting byte set: a b c d 204: 205: /(a|[^\dZ])/IS 206: Capturing subpattern count = 1 207: No options 208: No first char 209: No need char 210: Subject length lower bound = 1 211: Starting byte set: \x00 \x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 \x09 \x0a 212: \x0b \x0c \x0d \x0e \x0f \x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17 \x18 \x19 213: \x1a \x1b \x1c \x1d \x1e \x1f \x20 ! " # $ % & ' ( ) * + , - . / : ; < = > 214: ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y [ \ ] ^ _ ` a b c d 215: e f g h i j k l m n o p q r s t u v w x y z { | } ~ \x7f \x80 \x81 \x82 \x83 216: \x84 \x85 \x86 \x87 \x88 \x89 \x8a \x8b \x8c \x8d \x8e \x8f \x90 \x91 \x92 217: \x93 \x94 \x95 \x96 \x97 \x98 \x99 \x9a \x9b \x9c \x9d \x9e \x9f \xa0 \xa1 218: \xa2 \xa3 \xa4 \xa5 \xa6 \xa7 \xa8 \xa9 \xaa \xab \xac \xad \xae \xaf \xb0 219: \xb1 \xb2 \xb3 \xb4 \xb5 \xb6 \xb7 \xb8 \xb9 \xba \xbb \xbc \xbd \xbe \xbf 220: \xc0 \xc1 \xc2 \xc3 \xc4 \xc5 \xc6 \xc7 \xc8 \xc9 \xca \xcb \xcc \xcd \xce 221: \xcf \xd0 \xd1 \xd2 \xd3 \xd4 \xd5 \xd6 \xd7 \xd8 \xd9 \xda \xdb \xdc \xdd 222: \xde \xdf \xe0 \xe1 \xe2 \xe3 \xe4 \xe5 \xe6 \xe7 \xe8 \xe9 \xea \xeb \xec 223: \xed \xee \xef \xf0 \xf1 \xf2 \xf3 \xf4 \xf5 \xf6 \xf7 \xf8 \xf9 \xfa \xfb 224: \xfc \xfd \xfe \xff 225: 226: /(a|b)*[\s]/IS 227: Capturing subpattern count = 1 228: No options 229: No first char 230: No need char 231: Subject length lower bound = 1 232: Starting byte set: \x09 \x0a \x0c \x0d \x20 a b 233: 234: /(ab\2)/ 235: Failed: reference to non-existent subpattern at offset 6 236: 237: /{4,5}abc/ 238: Failed: nothing to repeat at offset 4 239: 240: /(a)(b)(c)\2/I 241: Capturing subpattern count = 3 242: Max back reference = 2 243: No options 244: First char = 'a' 245: Need char = 'c' 246: abcb 247: 0: abcb 248: 1: a 249: 2: b 250: 3: c 251: \O0abcb 252: Matched, but too many substrings 253: \O3abcb 254: Matched, but too many substrings 255: 0: abcb 256: \O6abcb 257: Matched, but too many substrings 258: 0: abcb 259: 1: a 260: \O9abcb 261: Matched, but too many substrings 262: 0: abcb 263: 1: a 264: 2: b 265: \O12abcb 266: 0: abcb 267: 1: a 268: 2: b 269: 3: c 270: 271: /(a)bc|(a)(b)\2/I 272: Capturing subpattern count = 3 273: Max back reference = 2 274: No options 275: First char = 'a' 276: No need char 277: abc 278: 0: abc 279: 1: a 280: \O0abc 281: Matched, but too many substrings 282: \O3abc 283: Matched, but too many substrings 284: 0: abc 285: \O6abc 286: 0: abc 287: 1: a 288: aba 289: 0: aba 290: 1: <unset> 291: 2: a 292: 3: b 293: \O0aba 294: Matched, but too many substrings 295: \O3aba 296: Matched, but too many substrings 297: 0: aba 298: \O6aba 299: Matched, but too many substrings 300: 0: aba 301: 1: <unset> 302: \O9aba 303: Matched, but too many substrings 304: 0: aba 305: 1: <unset> 306: 2: a 307: \O12aba 308: 0: aba 309: 1: <unset> 310: 2: a 311: 3: b 312: 313: /abc$/IE 314: Capturing subpattern count = 0 315: Options: dollar_endonly 316: First char = 'a' 317: Need char = 'c' 318: abc 319: 0: abc 320: *** Failers 321: No match 322: abc\n 323: No match 324: abc\ndef 325: No match 326: 327: /(a)(b)(c)(d)(e)\6/ 328: Failed: reference to non-existent subpattern at offset 17 329: 330: /the quick brown fox/I 331: Capturing subpattern count = 0 332: No options 333: First char = 't' 334: Need char = 'x' 335: the quick brown fox 336: 0: the quick brown fox 337: this is a line with the quick brown fox 338: 0: the quick brown fox 339: 340: /the quick brown fox/IA 341: Capturing subpattern count = 0 342: Options: anchored 343: No first char 344: No need char 345: the quick brown fox 346: 0: the quick brown fox 347: *** Failers 348: No match 349: this is a line with the quick brown fox 350: No match 351: 352: /ab(?z)cd/ 353: Failed: unrecognized character after (? or (?- at offset 4 354: 355: /^abc|def/I 356: Capturing subpattern count = 0 357: No options 358: No first char 359: No need char 360: abcdef 361: 0: abc 362: abcdef\B 363: 0: def 364: 365: /.*((abc)$|(def))/I 366: Capturing subpattern count = 3 367: No options 368: First char at start or follows newline 369: No need char 370: defabc 371: 0: defabc 372: 1: abc 373: 2: abc 374: \Zdefabc 375: 0: def 376: 1: def 377: 2: <unset> 378: 3: def 379: 380: /abc/P 381: abc 382: 0: abc 383: *** Failers 384: No match: POSIX code 17: match failed 385: 386: /^abc|def/P 387: abcdef 388: 0: abc 389: abcdef\B 390: 0: def 391: 392: /.*((abc)$|(def))/P 393: defabc 394: 0: defabc 395: 1: abc 396: 2: abc 397: \Zdefabc 398: 0: def 399: 1: def 400: 3: def 401: 402: /the quick brown fox/P 403: the quick brown fox 404: 0: the quick brown fox 405: *** Failers 406: No match: POSIX code 17: match failed 407: The Quick Brown Fox 408: No match: POSIX code 17: match failed 409: 410: /the quick brown fox/Pi 411: the quick brown fox 412: 0: the quick brown fox 413: The Quick Brown Fox 414: 0: The Quick Brown Fox 415: 416: /abc.def/P 417: *** Failers 418: No match: POSIX code 17: match failed 419: abc\ndef 420: No match: POSIX code 17: match failed 421: 422: /abc$/P 423: abc 424: 0: abc 425: abc\n 426: 0: abc 427: 428: /(abc)\2/P 429: Failed: POSIX code 15: bad back reference at offset 7 430: 431: /(abc\1)/P 432: abc 433: No match: POSIX code 17: match failed 434: 435: /)/ 436: Failed: unmatched parentheses at offset 0 437: 438: /a[]b/ 439: Failed: missing terminating ] for character class at offset 4 440: 441: /[^aeiou ]{3,}/I 442: Capturing subpattern count = 0 443: No options 444: No first char 445: No need char 446: co-processors, and for 447: 0: -pr 448: 449: /<.*>/I 450: Capturing subpattern count = 0 451: No options 452: First char = '<' 453: Need char = '>' 454: abc<def>ghi<klm>nop 455: 0: <def>ghi<klm> 456: 457: /<.*?>/I 458: Capturing subpattern count = 0 459: No options 460: First char = '<' 461: Need char = '>' 462: abc<def>ghi<klm>nop 463: 0: <def> 464: 465: /<.*>/IU 466: Capturing subpattern count = 0 467: Options: ungreedy 468: First char = '<' 469: Need char = '>' 470: abc<def>ghi<klm>nop 471: 0: <def> 472: 473: /(?U)<.*>/I 474: Capturing subpattern count = 0 475: Options: ungreedy 476: First char = '<' 477: Need char = '>' 478: abc<def>ghi<klm>nop 479: 0: <def> 480: 481: /<.*?>/IU 482: Capturing subpattern count = 0 483: Options: ungreedy 484: First char = '<' 485: Need char = '>' 486: abc<def>ghi<klm>nop 487: 0: <def>ghi<klm> 488: 489: /={3,}/IU 490: Capturing subpattern count = 0 491: Options: ungreedy 492: First char = '=' 493: Need char = '=' 494: abc========def 495: 0: === 496: 497: /(?U)={3,}?/I 498: Capturing subpattern count = 0 499: Options: ungreedy 500: First char = '=' 501: Need char = '=' 502: abc========def 503: 0: ======== 504: 505: /(?<!bar|cattle)foo/I 506: Capturing subpattern count = 0 507: No options 508: First char = 'f' 509: Need char = 'o' 510: foo 511: 0: foo 512: catfoo 513: 0: foo 514: *** Failers 515: No match 516: the barfoo 517: No match 518: and cattlefoo 519: No match 520: 521: /(?<=a+)b/ 522: Failed: lookbehind assertion is not fixed length at offset 6 523: 524: /(?<=aaa|b{0,3})b/ 525: Failed: lookbehind assertion is not fixed length at offset 14 526: 527: /(?<!(foo)a\1)bar/ 528: Failed: lookbehind assertion is not fixed length at offset 12 529: 530: /(?i)abc/I 531: Capturing subpattern count = 0 532: Options: caseless 533: First char = 'a' (caseless) 534: Need char = 'c' (caseless) 535: 536: /(a|(?m)a)/I 537: Capturing subpattern count = 1 538: No options 539: First char = 'a' 540: No need char 541: 542: /(?i)^1234/I 543: Capturing subpattern count = 0 544: Options: anchored caseless 545: No first char 546: No need char 547: 548: /(^b|(?i)^d)/I 549: Capturing subpattern count = 1 550: Options: anchored 551: No first char 552: No need char 553: 554: /(?s).*/I 555: Capturing subpattern count = 0 556: Options: anchored dotall 557: No first char 558: No need char 559: 560: /[abcd]/IS 561: Capturing subpattern count = 0 562: No options 563: No first char 564: No need char 565: Subject length lower bound = 1 566: Starting byte set: a b c d 567: 568: /(?i)[abcd]/IS 569: Capturing subpattern count = 0 570: Options: caseless 571: No first char 572: No need char 573: Subject length lower bound = 1 574: Starting byte set: A B C D a b c d 575: 576: /(?m)[xy]|(b|c)/IS 577: Capturing subpattern count = 1 578: Options: multiline 579: No first char 580: No need char 581: Subject length lower bound = 1 582: Starting byte set: b c x y 583: 584: /(^a|^b)/Im 585: Capturing subpattern count = 1 586: Options: multiline 587: First char at start or follows newline 588: No need char 589: 590: /(?i)(^a|^b)/Im 591: Capturing subpattern count = 1 592: Options: caseless multiline 593: First char at start or follows newline 594: No need char 595: 596: /(a)(?(1)a|b|c)/ 597: Failed: conditional group contains more than two branches at offset 13 598: 599: /(?(?=a)a|b|c)/ 600: Failed: conditional group contains more than two branches at offset 12 601: 602: /(?(1a)/ 603: Failed: missing ) at offset 6 604: 605: /(?(1a))/ 606: Failed: reference to non-existent subpattern at offset 6 607: 608: /(?(?i))/ 609: Failed: assertion expected after (?( at offset 3 610: 611: /(?(abc))/ 612: Failed: reference to non-existent subpattern at offset 7 613: 614: /(?(?<ab))/ 615: Failed: syntax error in subpattern name (missing terminator) at offset 7 616: 617: /((?s)blah)\s+\1/I 618: Capturing subpattern count = 1 619: Max back reference = 1 620: No options 621: First char = 'b' 622: Need char = 'h' 623: 624: /((?i)blah)\s+\1/I 625: Capturing subpattern count = 1 626: Max back reference = 1 627: No options 628: First char = 'b' (caseless) 629: Need char = 'h' (caseless) 630: 631: /((?i)b)/IDZS 632: ------------------------------------------------------------------ 633: Bra 634: CBra 1 635: 01 Opt 636: NC b 637: Ket 638: 00 Opt 639: Ket 640: End 641: ------------------------------------------------------------------ 642: Capturing subpattern count = 1 643: No options 644: First char = 'b' (caseless) 645: No need char 646: Subject length lower bound = 1 647: No set of starting bytes 648: 649: /(a*b|(?i:c*(?-i)d))/IS 650: Capturing subpattern count = 1 651: No options 652: No first char 653: No need char 654: Subject length lower bound = 1 655: Starting byte set: C a b c d 656: 657: /a$/I 658: Capturing subpattern count = 0 659: No options 660: First char = 'a' 661: No need char 662: a 663: 0: a 664: a\n 665: 0: a 666: *** Failers 667: No match 668: \Za 669: No match 670: \Za\n 671: No match 672: 673: /a$/Im 674: Capturing subpattern count = 0 675: Options: multiline 676: First char = 'a' 677: No need char 678: a 679: 0: a 680: a\n 681: 0: a 682: \Za\n 683: 0: a 684: *** Failers 685: No match 686: \Za 687: No match 688: 689: /\Aabc/Im 690: Capturing subpattern count = 0 691: Options: anchored multiline 692: No first char 693: No need char 694: 695: /^abc/Im 696: Capturing subpattern count = 0 697: Options: multiline 698: First char at start or follows newline 699: Need char = 'c' 700: 701: /^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/I 702: Capturing subpattern count = 5 703: Options: anchored 704: No first char 705: No need char 706: aaaaabbbbbcccccdef 707: 0: aaaaabbbbbcccccdef 708: 1: aaaaabbbbbcccccdef 709: 2: aaaaa 710: 3: b 711: 4: bbbbccccc 712: 5: def 713: 714: /(?<=foo)[ab]/IS 715: Capturing subpattern count = 0 716: No options 717: No first char 718: No need char 719: Subject length lower bound = 1 720: Starting byte set: a b 721: 722: /(?<!foo)(alpha|omega)/IS 723: Capturing subpattern count = 1 724: No options 725: No first char 726: Need char = 'a' 727: Subject length lower bound = 5 728: Starting byte set: a o 729: 730: /(?!alphabet)[ab]/IS 731: Capturing subpattern count = 0 732: No options 733: No first char 734: No need char 735: Subject length lower bound = 1 736: Starting byte set: a b 737: 738: /(?<=foo\n)^bar/Im 739: Capturing subpattern count = 0 740: Contains explicit CR or LF match 741: Options: multiline 742: No first char 743: Need char = 'r' 744: foo\nbarbar 745: 0: bar 746: ***Failers 747: No match 748: rhubarb 749: No match 750: barbell 751: No match 752: abc\nbarton 753: No match 754: 755: /^(?<=foo\n)bar/Im 756: Capturing subpattern count = 0 757: Contains explicit CR or LF match 758: Options: multiline 759: First char at start or follows newline 760: Need char = 'r' 761: foo\nbarbar 762: 0: bar 763: ***Failers 764: No match 765: rhubarb 766: No match 767: barbell 768: No match 769: abc\nbarton 770: No match 771: 772: /(?>^abc)/Im 773: Capturing subpattern count = 0 774: Options: multiline 775: First char at start or follows newline 776: Need char = 'c' 777: abc 778: 0: abc 779: def\nabc 780: 0: abc 781: *** Failers 782: No match 783: defabc 784: No match 785: 786: /(?<=ab(c+)d)ef/ 787: Failed: lookbehind assertion is not fixed length at offset 11 788: 789: /(?<=ab(?<=c+)d)ef/ 790: Failed: lookbehind assertion is not fixed length at offset 12 791: 792: /(?<=ab(c|de)f)g/ 793: Failed: lookbehind assertion is not fixed length at offset 13 794: 795: /The next three are in testinput2 because they have variable length branches/ 796: 797: /(?<=bullock|donkey)-cart/I 798: Capturing subpattern count = 0 799: No options 800: First char = '-' 801: Need char = 't' 802: the bullock-cart 803: 0: -cart 804: a donkey-cart race 805: 0: -cart 806: *** Failers 807: No match 808: cart 809: No match 810: horse-and-cart 811: No match 812: 813: /(?<=ab(?i)x|y|z)/I 814: Capturing subpattern count = 0 815: No options 816: No first char 817: No need char 818: 819: /(?>.*)(?<=(abcd)|(xyz))/I 820: Capturing subpattern count = 2 821: No options 822: First char at start or follows newline 823: No need char 824: alphabetabcd 825: 0: alphabetabcd 826: 1: abcd 827: endingxyz 828: 0: endingxyz 829: 1: <unset> 830: 2: xyz 831: 832: /(?<=ab(?i)x(?-i)y|(?i)z|b)ZZ/I 833: Capturing subpattern count = 0 834: No options 835: First char = 'Z' 836: Need char = 'Z' 837: abxyZZ 838: 0: ZZ 839: abXyZZ 840: 0: ZZ 841: ZZZ 842: 0: ZZ 843: zZZ 844: 0: ZZ 845: bZZ 846: 0: ZZ 847: BZZ 848: 0: ZZ 849: *** Failers 850: No match 851: ZZ 852: No match 853: abXYZZ 854: No match 855: zzz 856: No match 857: bzz 858: No match 859: 860: /(?<!(foo)a)bar/I 861: Capturing subpattern count = 1 862: No options 863: First char = 'b' 864: Need char = 'r' 865: bar 866: 0: bar 867: foobbar 868: 0: bar 869: *** Failers 870: No match 871: fooabar 872: No match 873: 874: /This one is here because Perl 5.005_02 doesn't fail it/I 875: Capturing subpattern count = 0 876: No options 877: First char = 'T' 878: Need char = 't' 879: 880: /^(a)?(?(1)a|b)+$/I 881: Capturing subpattern count = 1 882: Options: anchored 883: No first char 884: No need char 885: *** Failers 886: No match 887: a 888: No match 889: 890: /This one is here because Perl behaves differently; see also the following/I 891: Capturing subpattern count = 0 892: No options 893: First char = 'T' 894: Need char = 'g' 895: 896: /^(a\1?){4}$/I 897: Capturing subpattern count = 1 898: Max back reference = 1 899: Options: anchored 900: No first char 901: No need char 902: aaaa 903: No match 904: aaaaaa 905: No match 906: 907: /Perl does not fail these two for the final subjects. Neither did PCRE until/ 908: /release 8.01. The problem is in backtracking into a subpattern that contains/ 909: No match 910: /a recursive reference to itself. PCRE has now made these into atomic patterns./ 911: No match 912: 913: /^(xa|=?\1a){2}$/ 914: xa=xaa 915: 0: xa=xaa 916: 1: =xaa 917: ** Failers 918: No match 919: xa=xaaa 920: No match 921: 922: /^(xa|=?\1a)+$/ 923: xa=xaa 924: 0: xa=xaa 925: 1: =xaa 926: ** Failers 927: No match 928: xa=xaaa 929: No match 930: 931: /These are syntax tests from Perl 5.005/I 932: Capturing subpattern count = 0 933: No options 934: First char = 'T' 935: Need char = '5' 936: 937: /a[b-a]/ 938: Failed: range out of order in character class at offset 4 939: 940: /a[]b/ 941: Failed: missing terminating ] for character class at offset 4 942: 943: /a[/ 944: Failed: missing terminating ] for character class at offset 2 945: 946: /*a/ 947: Failed: nothing to repeat at offset 0 948: 949: /(*)b/ 950: Failed: nothing to repeat at offset 1 951: 952: /abc)/ 953: Failed: unmatched parentheses at offset 3 954: 955: /(abc/ 956: Failed: missing ) at offset 4 957: 958: /a**/ 959: Failed: nothing to repeat at offset 2 960: 961: /)(/ 962: Failed: unmatched parentheses at offset 0 963: 964: /\1/ 965: Failed: reference to non-existent subpattern at offset 2 966: 967: /\2/ 968: Failed: reference to non-existent subpattern at offset 2 969: 970: /(a)|\2/ 971: Failed: reference to non-existent subpattern at offset 6 972: 973: /a[b-a]/Ii 974: Failed: range out of order in character class at offset 4 975: 976: /a[]b/Ii 977: Failed: missing terminating ] for character class at offset 4 978: 979: /a[/Ii 980: Failed: missing terminating ] for character class at offset 2 981: 982: /*a/Ii 983: Failed: nothing to repeat at offset 0 984: 985: /(*)b/Ii 986: Failed: nothing to repeat at offset 1 987: 988: /abc)/Ii 989: Failed: unmatched parentheses at offset 3 990: 991: /(abc/Ii 992: Failed: missing ) at offset 4 993: 994: /a**/Ii 995: Failed: nothing to repeat at offset 2 996: 997: /)(/Ii 998: Failed: unmatched parentheses at offset 0 999: 1000: /:(?:/ 1001: Failed: missing ) at offset 4 1002: 1003: /(?<%)b/ 1004: Failed: unrecognized character after (?< at offset 3 1005: 1006: /a(?{)b/ 1007: Failed: unrecognized character after (? or (?- at offset 3 1008: 1009: /a(?{{})b/ 1010: Failed: unrecognized character after (? or (?- at offset 3 1011: 1012: /a(?{}})b/ 1013: Failed: unrecognized character after (? or (?- at offset 3 1014: 1015: /a(?{"{"})b/ 1016: Failed: unrecognized character after (? or (?- at offset 3 1017: 1018: /a(?{"{"}})b/ 1019: Failed: unrecognized character after (? or (?- at offset 3 1020: 1021: /(?(1?)a|b)/ 1022: Failed: malformed number or name after (?( at offset 4 1023: 1024: /[a[:xyz:/ 1025: Failed: missing terminating ] for character class at offset 8 1026: 1027: /(?<=x+)y/ 1028: Failed: lookbehind assertion is not fixed length at offset 6 1029: 1030: /a{37,17}/ 1031: Failed: numbers out of order in {} quantifier at offset 7 1032: 1033: /abc/\ 1034: Failed: \ at end of pattern at offset 4 1035: 1036: /abc/\P 1037: Failed: POSIX code 9: bad escape sequence at offset 4 1038: 1039: /abc/\i 1040: Failed: \ at end of pattern at offset 4 1041: 1042: /(a)bc(d)/I 1043: Capturing subpattern count = 2 1044: No options 1045: First char = 'a' 1046: Need char = 'd' 1047: abcd 1048: 0: abcd 1049: 1: a 1050: 2: d 1051: abcd\C2 1052: 0: abcd 1053: 1: a 1054: 2: d 1055: 2C d (1) 1056: abcd\C5 1057: 0: abcd 1058: 1: a 1059: 2: d 1060: copy substring 5 failed -7 1061: 1062: /(.{20})/I 1063: Capturing subpattern count = 1 1064: No options 1065: No first char 1066: No need char 1067: abcdefghijklmnopqrstuvwxyz 1068: 0: abcdefghijklmnopqrst 1069: 1: abcdefghijklmnopqrst 1070: abcdefghijklmnopqrstuvwxyz\C1 1071: 0: abcdefghijklmnopqrst 1072: 1: abcdefghijklmnopqrst 1073: 1C abcdefghijklmnopqrst (20) 1074: abcdefghijklmnopqrstuvwxyz\G1 1075: 0: abcdefghijklmnopqrst 1076: 1: abcdefghijklmnopqrst 1077: 1G abcdefghijklmnopqrst (20) 1078: 1079: /(.{15})/I 1080: Capturing subpattern count = 1 1081: No options 1082: No first char 1083: No need char 1084: abcdefghijklmnopqrstuvwxyz 1085: 0: abcdefghijklmno 1086: 1: abcdefghijklmno 1087: abcdefghijklmnopqrstuvwxyz\C1\G1 1088: 0: abcdefghijklmno 1089: 1: abcdefghijklmno 1090: 1C abcdefghijklmno (15) 1091: 1G abcdefghijklmno (15) 1092: 1093: /(.{16})/I 1094: Capturing subpattern count = 1 1095: No options 1096: No first char 1097: No need char 1098: abcdefghijklmnopqrstuvwxyz 1099: 0: abcdefghijklmnop 1100: 1: abcdefghijklmnop 1101: abcdefghijklmnopqrstuvwxyz\C1\G1\L 1102: 0: abcdefghijklmnop 1103: 1: abcdefghijklmnop 1104: 1C abcdefghijklmnop (16) 1105: 1G abcdefghijklmnop (16) 1106: 0L abcdefghijklmnop 1107: 1L abcdefghijklmnop 1108: 1109: /^(a|(bc))de(f)/I 1110: Capturing subpattern count = 3 1111: Options: anchored 1112: No first char 1113: No need char 1114: adef\G1\G2\G3\G4\L 1115: 0: adef 1116: 1: a 1117: 2: <unset> 1118: 3: f 1119: 1G a (1) 1120: 2G (0) 1121: 3G f (1) 1122: get substring 4 failed -7 1123: 0L adef 1124: 1L a 1125: 2L 1126: 3L f 1127: bcdef\G1\G2\G3\G4\L 1128: 0: bcdef 1129: 1: bc 1130: 2: bc 1131: 3: f 1132: 1G bc (2) 1133: 2G bc (2) 1134: 3G f (1) 1135: get substring 4 failed -7 1136: 0L bcdef 1137: 1L bc 1138: 2L bc 1139: 3L f 1140: adefghijk\C0 1141: 0: adef 1142: 1: a 1143: 2: <unset> 1144: 3: f 1145: 0C adef (4) 1146: 1147: /^abc\00def/I 1148: Capturing subpattern count = 0 1149: Options: anchored 1150: No first char 1151: No need char 1152: abc\00def\L\C0 1153: 0: abc\x00def 1154: 0C abc (7) 1155: 0L abc 1156: 1157: /word ((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ 1158: )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ 1159: )?)?)?)?)?)?)?)?)?otherword/I 1160: Capturing subpattern count = 8 1161: Contains explicit CR or LF match 1162: No options 1163: First char = 'w' 1164: Need char = 'd' 1165: 1166: /.*X/IDZ 1167: ------------------------------------------------------------------ 1168: Bra 1169: Any* 1170: X 1171: Ket 1172: End 1173: ------------------------------------------------------------------ 1174: Capturing subpattern count = 0 1175: No options 1176: First char at start or follows newline 1177: Need char = 'X' 1178: 1179: /.*X/IDZs 1180: ------------------------------------------------------------------ 1181: Bra 1182: AllAny* 1183: X 1184: Ket 1185: End 1186: ------------------------------------------------------------------ 1187: Capturing subpattern count = 0 1188: Options: anchored dotall 1189: No first char 1190: Need char = 'X' 1191: 1192: /(.*X|^B)/IDZ 1193: ------------------------------------------------------------------ 1194: Bra 1195: CBra 1 1196: Any* 1197: X 1198: Alt 1199: ^ 1200: B 1201: Ket 1202: Ket 1203: End 1204: ------------------------------------------------------------------ 1205: Capturing subpattern count = 1 1206: No options 1207: First char at start or follows newline 1208: No need char 1209: 1210: /(.*X|^B)/IDZs 1211: ------------------------------------------------------------------ 1212: Bra 1213: CBra 1 1214: AllAny* 1215: X 1216: Alt 1217: ^ 1218: B 1219: Ket 1220: Ket 1221: End 1222: ------------------------------------------------------------------ 1223: Capturing subpattern count = 1 1224: Options: anchored dotall 1225: No first char 1226: No need char 1227: 1228: /(?s)(.*X|^B)/IDZ 1229: ------------------------------------------------------------------ 1230: Bra 1231: CBra 1 1232: AllAny* 1233: X 1234: Alt 1235: ^ 1236: B 1237: Ket 1238: Ket 1239: End 1240: ------------------------------------------------------------------ 1241: Capturing subpattern count = 1 1242: Options: anchored dotall 1243: No first char 1244: No need char 1245: 1246: /(?s:.*X|^B)/IDZ 1247: ------------------------------------------------------------------ 1248: Bra 1249: Bra 1250: 04 Opt 1251: AllAny* 1252: X 1253: Alt 1254: 04 Opt 1255: ^ 1256: B 1257: Ket 1258: 00 Opt 1259: Ket 1260: End 1261: ------------------------------------------------------------------ 1262: Capturing subpattern count = 0 1263: Options: anchored 1264: No first char 1265: No need char 1266: 1267: /\Biss\B/I+ 1268: Capturing subpattern count = 0 1269: No options 1270: First char = 'i' 1271: Need char = 's' 1272: Mississippi 1273: 0: iss 1274: 0+ issippi 1275: 1276: /\Biss\B/I+P 1277: Mississippi 1278: 0: iss 1279: 0+ issippi 1280: 1281: /iss/IG+ 1282: Capturing subpattern count = 0 1283: No options 1284: First char = 'i' 1285: Need char = 's' 1286: Mississippi 1287: 0: iss 1288: 0+ issippi 1289: 0: iss 1290: 0+ ippi 1291: 1292: /\Biss\B/IG+ 1293: Capturing subpattern count = 0 1294: No options 1295: First char = 'i' 1296: Need char = 's' 1297: Mississippi 1298: 0: iss 1299: 0+ issippi 1300: 1301: /\Biss\B/Ig+ 1302: Capturing subpattern count = 0 1303: No options 1304: First char = 'i' 1305: Need char = 's' 1306: Mississippi 1307: 0: iss 1308: 0+ issippi 1309: 0: iss 1310: 0+ ippi 1311: *** Failers 1312: No match 1313: Mississippi\A 1314: No match 1315: 1316: /(?<=[Ms])iss/Ig+ 1317: Capturing subpattern count = 0 1318: No options 1319: First char = 'i' 1320: Need char = 's' 1321: Mississippi 1322: 0: iss 1323: 0+ issippi 1324: 0: iss 1325: 0+ ippi 1326: 1327: /(?<=[Ms])iss/IG+ 1328: Capturing subpattern count = 0 1329: No options 1330: First char = 'i' 1331: Need char = 's' 1332: Mississippi 1333: 0: iss 1334: 0+ issippi 1335: 1336: /^iss/Ig+ 1337: Capturing subpattern count = 0 1338: Options: anchored 1339: No first char 1340: No need char 1341: ississippi 1342: 0: iss 1343: 0+ issippi 1344: 1345: /.*iss/Ig+ 1346: Capturing subpattern count = 0 1347: No options 1348: First char at start or follows newline 1349: Need char = 's' 1350: abciss\nxyzisspqr 1351: 0: abciss 1352: 0+ \x0axyzisspqr 1353: 0: xyziss 1354: 0+ pqr 1355: 1356: /.i./I+g 1357: Capturing subpattern count = 0 1358: No options 1359: No first char 1360: Need char = 'i' 1361: Mississippi 1362: 0: Mis 1363: 0+ sissippi 1364: 0: sis 1365: 0+ sippi 1366: 0: sip 1367: 0+ pi 1368: Mississippi\A 1369: 0: Mis 1370: 0+ sissippi 1371: 0: sis 1372: 0+ sippi 1373: 0: sip 1374: 0+ pi 1375: Missouri river 1376: 0: Mis 1377: 0+ souri river 1378: 0: ri 1379: 0+ river 1380: 0: riv 1381: 0+ er 1382: Missouri river\A 1383: 0: Mis 1384: 0+ souri river 1385: 1386: /^.is/I+g 1387: Capturing subpattern count = 0 1388: Options: anchored 1389: No first char 1390: No need char 1391: Mississippi 1392: 0: Mis 1393: 0+ sissippi 1394: 1395: /^ab\n/Ig+ 1396: Capturing subpattern count = 0 1397: Contains explicit CR or LF match 1398: Options: anchored 1399: No first char 1400: No need char 1401: ab\nab\ncd 1402: 0: ab\x0a 1403: 0+ ab\x0acd 1404: 1405: /^ab\n/Img+ 1406: Capturing subpattern count = 0 1407: Contains explicit CR or LF match 1408: Options: multiline 1409: First char at start or follows newline 1410: Need char = 10 1411: ab\nab\ncd 1412: 0: ab\x0a 1413: 0+ ab\x0acd 1414: 0: ab\x0a 1415: 0+ cd 1416: 1417: /abc/I 1418: Capturing subpattern count = 0 1419: No options 1420: First char = 'a' 1421: Need char = 'c' 1422: 1423: /abc|bac/I 1424: Capturing subpattern count = 0 1425: No options 1426: No first char 1427: Need char = 'c' 1428: 1429: /(abc|bac)/I 1430: Capturing subpattern count = 1 1431: No options 1432: No first char 1433: Need char = 'c' 1434: 1435: /(abc|(c|dc))/I 1436: Capturing subpattern count = 2 1437: No options 1438: No first char 1439: Need char = 'c' 1440: 1441: /(abc|(d|de)c)/I 1442: Capturing subpattern count = 2 1443: No options 1444: No first char 1445: Need char = 'c' 1446: 1447: /a*/I 1448: Capturing subpattern count = 0 1449: No options 1450: No first char 1451: No need char 1452: 1453: /a+/I 1454: Capturing subpattern count = 0 1455: No options 1456: First char = 'a' 1457: No need char 1458: 1459: /(baa|a+)/I 1460: Capturing subpattern count = 1 1461: No options 1462: No first char 1463: Need char = 'a' 1464: 1465: /a{0,3}/I 1466: Capturing subpattern count = 0 1467: No options 1468: No first char 1469: No need char 1470: 1471: /baa{3,}/I 1472: Capturing subpattern count = 0 1473: No options 1474: First char = 'b' 1475: Need char = 'a' 1476: 1477: /"([^\\"]+|\\.)*"/I 1478: Capturing subpattern count = 1 1479: No options 1480: First char = '"' 1481: Need char = '"' 1482: 1483: /(abc|ab[cd])/I 1484: Capturing subpattern count = 1 1485: No options 1486: First char = 'a' 1487: No need char 1488: 1489: /(a|.)/I 1490: Capturing subpattern count = 1 1491: No options 1492: No first char 1493: No need char 1494: 1495: /a|ba|\w/I 1496: Capturing subpattern count = 0 1497: No options 1498: No first char 1499: No need char 1500: 1501: /abc(?=pqr)/I 1502: Capturing subpattern count = 0 1503: No options 1504: First char = 'a' 1505: Need char = 'r' 1506: 1507: /...(?<=abc)/I 1508: Capturing subpattern count = 0 1509: No options 1510: No first char 1511: No need char 1512: 1513: /abc(?!pqr)/I 1514: Capturing subpattern count = 0 1515: No options 1516: First char = 'a' 1517: Need char = 'c' 1518: 1519: /ab./I 1520: Capturing subpattern count = 0 1521: No options 1522: First char = 'a' 1523: Need char = 'b' 1524: 1525: /ab[xyz]/I 1526: Capturing subpattern count = 0 1527: No options 1528: First char = 'a' 1529: Need char = 'b' 1530: 1531: /abc*/I 1532: Capturing subpattern count = 0 1533: No options 1534: First char = 'a' 1535: Need char = 'b' 1536: 1537: /ab.c*/I 1538: Capturing subpattern count = 0 1539: No options 1540: First char = 'a' 1541: Need char = 'b' 1542: 1543: /a.c*/I 1544: Capturing subpattern count = 0 1545: No options 1546: First char = 'a' 1547: No need char 1548: 1549: /.c*/I 1550: Capturing subpattern count = 0 1551: No options 1552: No first char 1553: No need char 1554: 1555: /ac*/I 1556: Capturing subpattern count = 0 1557: No options 1558: First char = 'a' 1559: No need char 1560: 1561: /(a.c*|b.c*)/I 1562: Capturing subpattern count = 1 1563: No options 1564: No first char 1565: No need char 1566: 1567: /a.c*|aba/I 1568: Capturing subpattern count = 0 1569: No options 1570: First char = 'a' 1571: No need char 1572: 1573: /.+a/I 1574: Capturing subpattern count = 0 1575: No options 1576: No first char 1577: Need char = 'a' 1578: 1579: /(?=abcda)a.*/I 1580: Capturing subpattern count = 0 1581: No options 1582: First char = 'a' 1583: Need char = 'a' 1584: 1585: /(?=a)a.*/I 1586: Capturing subpattern count = 0 1587: No options 1588: First char = 'a' 1589: No need char 1590: 1591: /a(b)*/I 1592: Capturing subpattern count = 1 1593: No options 1594: First char = 'a' 1595: No need char 1596: 1597: /a\d*/I 1598: Capturing subpattern count = 0 1599: No options 1600: First char = 'a' 1601: No need char 1602: 1603: /ab\d*/I 1604: Capturing subpattern count = 0 1605: No options 1606: First char = 'a' 1607: Need char = 'b' 1608: 1609: /a(\d)*/I 1610: Capturing subpattern count = 1 1611: No options 1612: First char = 'a' 1613: No need char 1614: 1615: /abcde{0,0}/I 1616: Capturing subpattern count = 0 1617: No options 1618: First char = 'a' 1619: Need char = 'd' 1620: 1621: /ab\d+/I 1622: Capturing subpattern count = 0 1623: No options 1624: First char = 'a' 1625: Need char = 'b' 1626: 1627: /a(?(1)b)(.)/I 1628: Capturing subpattern count = 1 1629: No options 1630: First char = 'a' 1631: No need char 1632: 1633: /a(?(1)bag|big)(.)/I 1634: Capturing subpattern count = 1 1635: No options 1636: First char = 'a' 1637: Need char = 'g' 1638: 1639: /a(?(1)bag|big)*(.)/I 1640: Capturing subpattern count = 1 1641: No options 1642: First char = 'a' 1643: No need char 1644: 1645: /a(?(1)bag|big)+(.)/I 1646: Capturing subpattern count = 1 1647: No options 1648: First char = 'a' 1649: Need char = 'g' 1650: 1651: /a(?(1)b..|b..)(.)/I 1652: Capturing subpattern count = 1 1653: No options 1654: First char = 'a' 1655: Need char = 'b' 1656: 1657: /ab\d{0}e/I 1658: Capturing subpattern count = 0 1659: No options 1660: First char = 'a' 1661: Need char = 'e' 1662: 1663: /a?b?/I 1664: Capturing subpattern count = 0 1665: No options 1666: No first char 1667: No need char 1668: a 1669: 0: a 1670: b 1671: 0: b 1672: ab 1673: 0: ab 1674: \ 1675: 0: 1676: *** Failers 1677: 0: 1678: \N 1679: No match 1680: 1681: /|-/I 1682: Capturing subpattern count = 0 1683: No options 1684: No first char 1685: No need char 1686: abcd 1687: 0: 1688: -abc 1689: 0: 1690: \Nab-c 1691: 0: - 1692: *** Failers 1693: 0: 1694: \Nabc 1695: No match 1696: 1697: /a*(b+)(z)(z)/P 1698: aaaabbbbzzzz 1699: 0: aaaabbbbzz 1700: 1: bbbb 1701: 2: z 1702: 3: z 1703: aaaabbbbzzzz\O0 1704: aaaabbbbzzzz\O1 1705: 0: aaaabbbbzz 1706: aaaabbbbzzzz\O2 1707: 0: aaaabbbbzz 1708: 1: bbbb 1709: aaaabbbbzzzz\O3 1710: 0: aaaabbbbzz 1711: 1: bbbb 1712: 2: z 1713: aaaabbbbzzzz\O4 1714: 0: aaaabbbbzz 1715: 1: bbbb 1716: 2: z 1717: 3: z 1718: aaaabbbbzzzz\O5 1719: 0: aaaabbbbzz 1720: 1: bbbb 1721: 2: z 1722: 3: z 1723: 1724: /^.?abcd/IS 1725: Capturing subpattern count = 0 1726: Options: anchored 1727: No first char 1728: Need char = 'd' 1729: Subject length lower bound = 4 1730: No set of starting bytes 1731: 1732: /\( # ( at start 1733: (?: # Non-capturing bracket 1734: (?>[^()]+) # Either a sequence of non-brackets (no backtracking) 1735: | # Or 1736: (?R) # Recurse - i.e. nested bracketed string 1737: )* # Zero or more contents 1738: \) # Closing ) 1739: /Ix 1740: Capturing subpattern count = 0 1741: Options: extended 1742: First char = '(' 1743: Need char = ')' 1744: (abcd) 1745: 0: (abcd) 1746: (abcd)xyz 1747: 0: (abcd) 1748: xyz(abcd) 1749: 0: (abcd) 1750: (ab(xy)cd)pqr 1751: 0: (ab(xy)cd) 1752: (ab(xycd)pqr 1753: 0: (xycd) 1754: () abc () 1755: 0: () 1756: 12(abcde(fsh)xyz(foo(bar))lmno)89 1757: 0: (abcde(fsh)xyz(foo(bar))lmno) 1758: *** Failers 1759: No match 1760: abcd 1761: No match 1762: abcd) 1763: No match 1764: (abcd 1765: No match 1766: 1767: /\( ( (?>[^()]+) | (?R) )* \) /Ixg 1768: Capturing subpattern count = 1 1769: Options: extended 1770: First char = '(' 1771: Need char = ')' 1772: (ab(xy)cd)pqr 1773: 0: (ab(xy)cd) 1774: 1: cd 1775: 1(abcd)(x(y)z)pqr 1776: 0: (abcd) 1777: 1: abcd 1778: 0: (x(y)z) 1779: 1: z 1780: 1781: /\( (?: (?>[^()]+) | (?R) ) \) /Ix 1782: Capturing subpattern count = 0 1783: Options: extended 1784: First char = '(' 1785: Need char = ')' 1786: (abcd) 1787: 0: (abcd) 1788: (ab(xy)cd) 1789: 0: (xy) 1790: (a(b(c)d)e) 1791: 0: (c) 1792: ((ab)) 1793: 0: ((ab)) 1794: *** Failers 1795: No match 1796: () 1797: No match 1798: 1799: /\( (?: (?>[^()]+) | (?R) )? \) /Ix 1800: Capturing subpattern count = 0 1801: Options: extended 1802: First char = '(' 1803: Need char = ')' 1804: () 1805: 0: () 1806: 12(abcde(fsh)xyz(foo(bar))lmno)89 1807: 0: (fsh) 1808: 1809: /\( ( (?>[^()]+) | (?R) )* \) /Ix 1810: Capturing subpattern count = 1 1811: Options: extended 1812: First char = '(' 1813: Need char = ')' 1814: (ab(xy)cd) 1815: 0: (ab(xy)cd) 1816: 1: cd 1817: 1818: /\( ( ( (?>[^()]+) | (?R) )* ) \) /Ix 1819: Capturing subpattern count = 2 1820: Options: extended 1821: First char = '(' 1822: Need char = ')' 1823: (ab(xy)cd) 1824: 0: (ab(xy)cd) 1825: 1: ab(xy)cd 1826: 2: cd 1827: 1828: /\( (123)? ( ( (?>[^()]+) | (?R) )* ) \) /Ix 1829: Capturing subpattern count = 3 1830: Options: extended 1831: First char = '(' 1832: Need char = ')' 1833: (ab(xy)cd) 1834: 0: (ab(xy)cd) 1835: 1: <unset> 1836: 2: ab(xy)cd 1837: 3: cd 1838: (123ab(xy)cd) 1839: 0: (123ab(xy)cd) 1840: 1: 123 1841: 2: ab(xy)cd 1842: 3: cd 1843: 1844: /\( ( (123)? ( (?>[^()]+) | (?R) )* ) \) /Ix 1845: Capturing subpattern count = 3 1846: Options: extended 1847: First char = '(' 1848: Need char = ')' 1849: (ab(xy)cd) 1850: 0: (ab(xy)cd) 1851: 1: ab(xy)cd 1852: 2: <unset> 1853: 3: cd 1854: (123ab(xy)cd) 1855: 0: (123ab(xy)cd) 1856: 1: 123ab(xy)cd 1857: 2: 123 1858: 3: cd 1859: 1860: /\( (((((((((( ( (?>[^()]+) | (?R) )* )))))))))) \) /Ix 1861: Capturing subpattern count = 11 1862: Options: extended 1863: First char = '(' 1864: Need char = ')' 1865: (ab(xy)cd) 1866: 0: (ab(xy)cd) 1867: 1: ab(xy)cd 1868: 2: ab(xy)cd 1869: 3: ab(xy)cd 1870: 4: ab(xy)cd 1871: 5: ab(xy)cd 1872: 6: ab(xy)cd 1873: 7: ab(xy)cd 1874: 8: ab(xy)cd 1875: 9: ab(xy)cd 1876: 10: ab(xy)cd 1877: 11: cd 1878: 1879: /\( ( ( (?>[^()<>]+) | ((?>[^()]+)) | (?R) )* ) \) /Ix 1880: Capturing subpattern count = 3 1881: Options: extended 1882: First char = '(' 1883: Need char = ')' 1884: (abcd(xyz<p>qrs)123) 1885: 0: (abcd(xyz<p>qrs)123) 1886: 1: abcd(xyz<p>qrs)123 1887: 2: 123 1888: 1889: /\( ( ( (?>[^()]+) | ((?R)) )* ) \) /Ix 1890: Capturing subpattern count = 3 1891: Options: extended 1892: First char = '(' 1893: Need char = ')' 1894: (ab(cd)ef) 1895: 0: (ab(cd)ef) 1896: 1: ab(cd)ef 1897: 2: ef 1898: 3: (cd) 1899: (ab(cd(ef)gh)ij) 1900: 0: (ab(cd(ef)gh)ij) 1901: 1: ab(cd(ef)gh)ij 1902: 2: ij 1903: 3: (cd(ef)gh) 1904: 1905: /^[[:alnum:]]/DZ 1906: ------------------------------------------------------------------ 1907: Bra 1908: ^ 1909: [0-9A-Za-z] 1910: Ket 1911: End 1912: ------------------------------------------------------------------ 1913: Capturing subpattern count = 0 1914: Options: anchored 1915: No first char 1916: No need char 1917: 1918: /^[[:^alnum:]]/DZ 1919: ------------------------------------------------------------------ 1920: Bra 1921: ^ 1922: [\x00-/:-@[-`{-\xff] (neg) 1923: Ket 1924: End 1925: ------------------------------------------------------------------ 1926: Capturing subpattern count = 0 1927: Options: anchored 1928: No first char 1929: No need char 1930: 1931: /^[[:alpha:]]/DZ 1932: ------------------------------------------------------------------ 1933: Bra 1934: ^ 1935: [A-Za-z] 1936: Ket 1937: End 1938: ------------------------------------------------------------------ 1939: Capturing subpattern count = 0 1940: Options: anchored 1941: No first char 1942: No need char 1943: 1944: /^[[:^alpha:]]/DZ 1945: ------------------------------------------------------------------ 1946: Bra 1947: ^ 1948: [\x00-@[-`{-\xff] (neg) 1949: Ket 1950: End 1951: ------------------------------------------------------------------ 1952: Capturing subpattern count = 0 1953: Options: anchored 1954: No first char 1955: No need char 1956: 1957: /[_[:alpha:]]/IS 1958: Capturing subpattern count = 0 1959: No options 1960: No first char 1961: No need char 1962: Subject length lower bound = 1 1963: Starting byte set: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 1964: _ a b c d e f g h i j k l m n o p q r s t u v w x y z 1965: 1966: /^[[:ascii:]]/DZ 1967: ------------------------------------------------------------------ 1968: Bra 1969: ^ 1970: [\x00-\x7f] 1971: Ket 1972: End 1973: ------------------------------------------------------------------ 1974: Capturing subpattern count = 0 1975: Options: anchored 1976: No first char 1977: No need char 1978: 1979: /^[[:^ascii:]]/DZ 1980: ------------------------------------------------------------------ 1981: Bra 1982: ^ 1983: [\x80-\xff] (neg) 1984: Ket 1985: End 1986: ------------------------------------------------------------------ 1987: Capturing subpattern count = 0 1988: Options: anchored 1989: No first char 1990: No need char 1991: 1992: /^[[:blank:]]/DZ 1993: ------------------------------------------------------------------ 1994: Bra 1995: ^ 1996: [\x09 ] 1997: Ket 1998: End 1999: ------------------------------------------------------------------ 2000: Capturing subpattern count = 0 2001: Options: anchored 2002: No first char 2003: No need char 2004: 2005: /^[[:^blank:]]/DZ 2006: ------------------------------------------------------------------ 2007: Bra 2008: ^ 2009: [\x00-\x08\x0a-\x1f!-\xff] (neg) 2010: Ket 2011: End 2012: ------------------------------------------------------------------ 2013: Capturing subpattern count = 0 2014: Options: anchored 2015: No first char 2016: No need char 2017: 2018: /[\n\x0b\x0c\x0d[:blank:]]/IS 2019: Capturing subpattern count = 0 2020: Contains explicit CR or LF match 2021: No options 2022: No first char 2023: No need char 2024: Subject length lower bound = 1 2025: Starting byte set: \x09 \x0a \x0b \x0c \x0d \x20 2026: 2027: /^[[:cntrl:]]/DZ 2028: ------------------------------------------------------------------ 2029: Bra 2030: ^ 2031: [\x00-\x1f\x7f] 2032: Ket 2033: End 2034: ------------------------------------------------------------------ 2035: Capturing subpattern count = 0 2036: Options: anchored 2037: No first char 2038: No need char 2039: 2040: /^[[:digit:]]/DZ 2041: ------------------------------------------------------------------ 2042: Bra 2043: ^ 2044: [0-9] 2045: Ket 2046: End 2047: ------------------------------------------------------------------ 2048: Capturing subpattern count = 0 2049: Options: anchored 2050: No first char 2051: No need char 2052: 2053: /^[[:graph:]]/DZ 2054: ------------------------------------------------------------------ 2055: Bra 2056: ^ 2057: [!-~] 2058: Ket 2059: End 2060: ------------------------------------------------------------------ 2061: Capturing subpattern count = 0 2062: Options: anchored 2063: No first char 2064: No need char 2065: 2066: /^[[:lower:]]/DZ 2067: ------------------------------------------------------------------ 2068: Bra 2069: ^ 2070: [a-z] 2071: Ket 2072: End 2073: ------------------------------------------------------------------ 2074: Capturing subpattern count = 0 2075: Options: anchored 2076: No first char 2077: No need char 2078: 2079: /^[[:print:]]/DZ 2080: ------------------------------------------------------------------ 2081: Bra 2082: ^ 2083: [ -~] 2084: Ket 2085: End 2086: ------------------------------------------------------------------ 2087: Capturing subpattern count = 0 2088: Options: anchored 2089: No first char 2090: No need char 2091: 2092: /^[[:punct:]]/DZ 2093: ------------------------------------------------------------------ 2094: Bra 2095: ^ 2096: [!-/:-@[-`{-~] 2097: Ket 2098: End 2099: ------------------------------------------------------------------ 2100: Capturing subpattern count = 0 2101: Options: anchored 2102: No first char 2103: No need char 2104: 2105: /^[[:space:]]/DZ 2106: ------------------------------------------------------------------ 2107: Bra 2108: ^ 2109: [\x09-\x0d ] 2110: Ket 2111: End 2112: ------------------------------------------------------------------ 2113: Capturing subpattern count = 0 2114: Options: anchored 2115: No first char 2116: No need char 2117: 2118: /^[[:upper:]]/DZ 2119: ------------------------------------------------------------------ 2120: Bra 2121: ^ 2122: [A-Z] 2123: Ket 2124: End 2125: ------------------------------------------------------------------ 2126: Capturing subpattern count = 0 2127: Options: anchored 2128: No first char 2129: No need char 2130: 2131: /^[[:xdigit:]]/DZ 2132: ------------------------------------------------------------------ 2133: Bra 2134: ^ 2135: [0-9A-Fa-f] 2136: Ket 2137: End 2138: ------------------------------------------------------------------ 2139: Capturing subpattern count = 0 2140: Options: anchored 2141: No first char 2142: No need char 2143: 2144: /^[[:word:]]/DZ 2145: ------------------------------------------------------------------ 2146: Bra 2147: ^ 2148: [0-9A-Z_a-z] 2149: Ket 2150: End 2151: ------------------------------------------------------------------ 2152: Capturing subpattern count = 0 2153: Options: anchored 2154: No first char 2155: No need char 2156: 2157: /^[[:^cntrl:]]/DZ 2158: ------------------------------------------------------------------ 2159: Bra 2160: ^ 2161: [ -~\x80-\xff] (neg) 2162: Ket 2163: End 2164: ------------------------------------------------------------------ 2165: Capturing subpattern count = 0 2166: Options: anchored 2167: No first char 2168: No need char 2169: 2170: /^[12[:^digit:]]/DZ 2171: ------------------------------------------------------------------ 2172: Bra 2173: ^ 2174: [\x00-/12:-\xff] (neg) 2175: Ket 2176: End 2177: ------------------------------------------------------------------ 2178: Capturing subpattern count = 0 2179: Options: anchored 2180: No first char 2181: No need char 2182: 2183: /^[[:^blank:]]/DZ 2184: ------------------------------------------------------------------ 2185: Bra 2186: ^ 2187: [\x00-\x08\x0a-\x1f!-\xff] (neg) 2188: Ket 2189: End 2190: ------------------------------------------------------------------ 2191: Capturing subpattern count = 0 2192: Options: anchored 2193: No first char 2194: No need char 2195: 2196: /[01[:alpha:]%]/DZ 2197: ------------------------------------------------------------------ 2198: Bra 2199: [%01A-Za-z] 2200: Ket 2201: End 2202: ------------------------------------------------------------------ 2203: Capturing subpattern count = 0 2204: No options 2205: No first char 2206: No need char 2207: 2208: /[[.ch.]]/I 2209: Failed: POSIX collating elements are not supported at offset 1 2210: 2211: /[[=ch=]]/I 2212: Failed: POSIX collating elements are not supported at offset 1 2213: 2214: /[[:rhubarb:]]/I 2215: Failed: unknown POSIX class name at offset 3 2216: 2217: /[[:upper:]]/Ii 2218: Capturing subpattern count = 0 2219: Options: caseless 2220: No first char 2221: No need char 2222: A 2223: 0: A 2224: a 2225: 0: a 2226: 2227: /[[:lower:]]/Ii 2228: Capturing subpattern count = 0 2229: Options: caseless 2230: No first char 2231: No need char 2232: A 2233: 0: A 2234: a 2235: 0: a 2236: 2237: /((?-i)[[:lower:]])[[:lower:]]/Ii 2238: Capturing subpattern count = 1 2239: Options: caseless 2240: No first char 2241: No need char 2242: ab 2243: 0: ab 2244: 1: a 2245: aB 2246: 0: aB 2247: 1: a 2248: *** Failers 2249: 0: ai 2250: 1: a 2251: Ab 2252: No match 2253: AB 2254: No match 2255: 2256: /[\200-\110]/I 2257: Failed: range out of order in character class at offset 9 2258: 2259: /^(?(0)f|b)oo/I 2260: Failed: invalid condition (?(0) at offset 6 2261: 2262: /This one's here because of the large output vector needed/I 2263: Capturing subpattern count = 0 2264: No options 2265: First char = 'T' 2266: Need char = 'd' 2267: 2268: /(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\w+)\s+(\270)/I 2269: Capturing subpattern count = 271 2270: Max back reference = 270 2271: No options 2272: No first char 2273: No need char 2274: \O900 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 ABC ABC 2275: 0: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 ABC ABC 2276: 1: 1 2277: 2: 2 2278: 3: 3 2279: 4: 4 2280: 5: 5 2281: 6: 6 2282: 7: 7 2283: 8: 8 2284: 9: 9 2285: 10: 10 2286: 11: 11 2287: 12: 12 2288: 13: 13 2289: 14: 14 2290: 15: 15 2291: 16: 16 2292: 17: 17 2293: 18: 18 2294: 19: 19 2295: 20: 20 2296: 21: 21 2297: 22: 22 2298: 23: 23 2299: 24: 24 2300: 25: 25 2301: 26: 26 2302: 27: 27 2303: 28: 28 2304: 29: 29 2305: 30: 30 2306: 31: 31 2307: 32: 32 2308: 33: 33 2309: 34: 34 2310: 35: 35 2311: 36: 36 2312: 37: 37 2313: 38: 38 2314: 39: 39 2315: 40: 40 2316: 41: 41 2317: 42: 42 2318: 43: 43 2319: 44: 44 2320: 45: 45 2321: 46: 46 2322: 47: 47 2323: 48: 48 2324: 49: 49 2325: 50: 50 2326: 51: 51 2327: 52: 52 2328: 53: 53 2329: 54: 54 2330: 55: 55 2331: 56: 56 2332: 57: 57 2333: 58: 58 2334: 59: 59 2335: 60: 60 2336: 61: 61 2337: 62: 62 2338: 63: 63 2339: 64: 64 2340: 65: 65 2341: 66: 66 2342: 67: 67 2343: 68: 68 2344: 69: 69 2345: 70: 70 2346: 71: 71 2347: 72: 72 2348: 73: 73 2349: 74: 74 2350: 75: 75 2351: 76: 76 2352: 77: 77 2353: 78: 78 2354: 79: 79 2355: 80: 80 2356: 81: 81 2357: 82: 82 2358: 83: 83 2359: 84: 84 2360: 85: 85 2361: 86: 86 2362: 87: 87 2363: 88: 88 2364: 89: 89 2365: 90: 90 2366: 91: 91 2367: 92: 92 2368: 93: 93 2369: 94: 94 2370: 95: 95 2371: 96: 96 2372: 97: 97 2373: 98: 98 2374: 99: 99 2375: 100: 100 2376: 101: 101 2377: 102: 102 2378: 103: 103 2379: 104: 104 2380: 105: 105 2381: 106: 106 2382: 107: 107 2383: 108: 108 2384: 109: 109 2385: 110: 110 2386: 111: 111 2387: 112: 112 2388: 113: 113 2389: 114: 114 2390: 115: 115 2391: 116: 116 2392: 117: 117 2393: 118: 118 2394: 119: 119 2395: 120: 120 2396: 121: 121 2397: 122: 122 2398: 123: 123 2399: 124: 124 2400: 125: 125 2401: 126: 126 2402: 127: 127 2403: 128: 128 2404: 129: 129 2405: 130: 130 2406: 131: 131 2407: 132: 132 2408: 133: 133 2409: 134: 134 2410: 135: 135 2411: 136: 136 2412: 137: 137 2413: 138: 138 2414: 139: 139 2415: 140: 140 2416: 141: 141 2417: 142: 142 2418: 143: 143 2419: 144: 144 2420: 145: 145 2421: 146: 146 2422: 147: 147 2423: 148: 148 2424: 149: 149 2425: 150: 150 2426: 151: 151 2427: 152: 152 2428: 153: 153 2429: 154: 154 2430: 155: 155 2431: 156: 156 2432: 157: 157 2433: 158: 158 2434: 159: 159 2435: 160: 160 2436: 161: 161 2437: 162: 162 2438: 163: 163 2439: 164: 164 2440: 165: 165 2441: 166: 166 2442: 167: 167 2443: 168: 168 2444: 169: 169 2445: 170: 170 2446: 171: 171 2447: 172: 172 2448: 173: 173 2449: 174: 174 2450: 175: 175 2451: 176: 176 2452: 177: 177 2453: 178: 178 2454: 179: 179 2455: 180: 180 2456: 181: 181 2457: 182: 182 2458: 183: 183 2459: 184: 184 2460: 185: 185 2461: 186: 186 2462: 187: 187 2463: 188: 188 2464: 189: 189 2465: 190: 190 2466: 191: 191 2467: 192: 192 2468: 193: 193 2469: 194: 194 2470: 195: 195 2471: 196: 196 2472: 197: 197 2473: 198: 198 2474: 199: 199 2475: 200: 200 2476: 201: 201 2477: 202: 202 2478: 203: 203 2479: 204: 204 2480: 205: 205 2481: 206: 206 2482: 207: 207 2483: 208: 208 2484: 209: 209 2485: 210: 210 2486: 211: 211 2487: 212: 212 2488: 213: 213 2489: 214: 214 2490: 215: 215 2491: 216: 216 2492: 217: 217 2493: 218: 218 2494: 219: 219 2495: 220: 220 2496: 221: 221 2497: 222: 222 2498: 223: 223 2499: 224: 224 2500: 225: 225 2501: 226: 226 2502: 227: 227 2503: 228: 228 2504: 229: 229 2505: 230: 230 2506: 231: 231 2507: 232: 232 2508: 233: 233 2509: 234: 234 2510: 235: 235 2511: 236: 236 2512: 237: 237 2513: 238: 238 2514: 239: 239 2515: 240: 240 2516: 241: 241 2517: 242: 242 2518: 243: 243 2519: 244: 244 2520: 245: 245 2521: 246: 246 2522: 247: 247 2523: 248: 248 2524: 249: 249 2525: 250: 250 2526: 251: 251 2527: 252: 252 2528: 253: 253 2529: 254: 254 2530: 255: 255 2531: 256: 256 2532: 257: 257 2533: 258: 258 2534: 259: 259 2535: 260: 260 2536: 261: 261 2537: 262: 262 2538: 263: 263 2539: 264: 264 2540: 265: 265 2541: 266: 266 2542: 267: 267 2543: 268: 268 2544: 269: 269 2545: 270: ABC 2546: 271: ABC 2547: 2548: /This one's here because Perl does this differently and PCRE can't at present/I 2549: Capturing subpattern count = 0 2550: No options 2551: First char = 'T' 2552: Need char = 't' 2553: 2554: /(main(O)?)+/I 2555: Capturing subpattern count = 2 2556: No options 2557: First char = 'm' 2558: Need char = 'n' 2559: mainmain 2560: 0: mainmain 2561: 1: main 2562: mainOmain 2563: 0: mainOmain 2564: 1: main 2565: 2: O 2566: 2567: /These are all cases where Perl does it differently (nested captures)/I 2568: Capturing subpattern count = 1 2569: No options 2570: First char = 'T' 2571: Need char = 's' 2572: 2573: /^(a(b)?)+$/I 2574: Capturing subpattern count = 2 2575: Options: anchored 2576: No first char 2577: No need char 2578: aba 2579: 0: aba 2580: 1: a 2581: 2: b 2582: 2583: /^(aa(bb)?)+$/I 2584: Capturing subpattern count = 2 2585: Options: anchored 2586: No first char 2587: No need char 2588: aabbaa 2589: 0: aabbaa 2590: 1: aa 2591: 2: bb 2592: 2593: /^(aa|aa(bb))+$/I 2594: Capturing subpattern count = 2 2595: Options: anchored 2596: No first char 2597: No need char 2598: aabbaa 2599: 0: aabbaa 2600: 1: aa 2601: 2: bb 2602: 2603: /^(aa(bb)??)+$/I 2604: Capturing subpattern count = 2 2605: Options: anchored 2606: No first char 2607: No need char 2608: aabbaa 2609: 0: aabbaa 2610: 1: aa 2611: 2: bb 2612: 2613: /^(?:aa(bb)?)+$/I 2614: Capturing subpattern count = 1 2615: Options: anchored 2616: No first char 2617: No need char 2618: aabbaa 2619: 0: aabbaa 2620: 1: bb 2621: 2622: /^(aa(b(b))?)+$/I 2623: Capturing subpattern count = 3 2624: Options: anchored 2625: No first char 2626: No need char 2627: aabbaa 2628: 0: aabbaa 2629: 1: aa 2630: 2: bb 2631: 3: b 2632: 2633: /^(?:aa(b(b))?)+$/I 2634: Capturing subpattern count = 2 2635: Options: anchored 2636: No first char 2637: No need char 2638: aabbaa 2639: 0: aabbaa 2640: 1: bb 2641: 2: b 2642: 2643: /^(?:aa(b(?:b))?)+$/I 2644: Capturing subpattern count = 1 2645: Options: anchored 2646: No first char 2647: No need char 2648: aabbaa 2649: 0: aabbaa 2650: 1: bb 2651: 2652: /^(?:aa(bb(?:b))?)+$/I 2653: Capturing subpattern count = 1 2654: Options: anchored 2655: No first char 2656: No need char 2657: aabbbaa 2658: 0: aabbbaa 2659: 1: bbb 2660: 2661: /^(?:aa(b(?:bb))?)+$/I 2662: Capturing subpattern count = 1 2663: Options: anchored 2664: No first char 2665: No need char 2666: aabbbaa 2667: 0: aabbbaa 2668: 1: bbb 2669: 2670: /^(?:aa(?:b(b))?)+$/I 2671: Capturing subpattern count = 1 2672: Options: anchored 2673: No first char 2674: No need char 2675: aabbaa 2676: 0: aabbaa 2677: 1: b 2678: 2679: /^(?:aa(?:b(bb))?)+$/I 2680: Capturing subpattern count = 1 2681: Options: anchored 2682: No first char 2683: No need char 2684: aabbbaa 2685: 0: aabbbaa 2686: 1: bb 2687: 2688: /^(aa(b(bb))?)+$/I 2689: Capturing subpattern count = 3 2690: Options: anchored 2691: No first char 2692: No need char 2693: aabbbaa 2694: 0: aabbbaa 2695: 1: aa 2696: 2: bbb 2697: 3: bb 2698: 2699: /^(aa(bb(bb))?)+$/I 2700: Capturing subpattern count = 3 2701: Options: anchored 2702: No first char 2703: No need char 2704: aabbbbaa 2705: 0: aabbbbaa 2706: 1: aa 2707: 2: bbbb 2708: 3: bb 2709: 2710: /--------------------------------------------------------------------/I 2711: Capturing subpattern count = 0 2712: No options 2713: First char = '-' 2714: Need char = '-' 2715: 2716: /#/IxDZ 2717: ------------------------------------------------------------------ 2718: Bra 2719: Ket 2720: End 2721: ------------------------------------------------------------------ 2722: Capturing subpattern count = 0 2723: Options: extended 2724: No first char 2725: No need char 2726: 2727: /a#/IxDZ 2728: ------------------------------------------------------------------ 2729: Bra 2730: a 2731: Ket 2732: End 2733: ------------------------------------------------------------------ 2734: Capturing subpattern count = 0 2735: Options: extended 2736: First char = 'a' 2737: No need char 2738: 2739: /[\s]/DZ 2740: ------------------------------------------------------------------ 2741: Bra 2742: [\x09\x0a\x0c\x0d ] 2743: Ket 2744: End 2745: ------------------------------------------------------------------ 2746: Capturing subpattern count = 0 2747: No options 2748: No first char 2749: No need char 2750: 2751: /[\S]/DZ 2752: ------------------------------------------------------------------ 2753: Bra 2754: [\x00-\x08\x0b\x0e-\x1f!-\xff] (neg) 2755: Ket 2756: End 2757: ------------------------------------------------------------------ 2758: Capturing subpattern count = 0 2759: No options 2760: No first char 2761: No need char 2762: 2763: /a(?i)b/DZ 2764: ------------------------------------------------------------------ 2765: Bra 2766: a 2767: 01 Opt 2768: NC b 2769: Ket 2770: End 2771: ------------------------------------------------------------------ 2772: Capturing subpattern count = 0 2773: No options 2774: First char = 'a' 2775: Need char = 'b' (caseless) 2776: ab 2777: 0: ab 2778: aB 2779: 0: aB 2780: *** Failers 2781: No match 2782: AB 2783: No match 2784: 2785: /(a(?i)b)/DZ 2786: ------------------------------------------------------------------ 2787: Bra 2788: CBra 1 2789: a 2790: 01 Opt 2791: NC b 2792: Ket 2793: 00 Opt 2794: Ket 2795: End 2796: ------------------------------------------------------------------ 2797: Capturing subpattern count = 1 2798: No options 2799: First char = 'a' 2800: Need char = 'b' (caseless) 2801: ab 2802: 0: ab 2803: 1: ab 2804: aB 2805: 0: aB 2806: 1: aB 2807: *** Failers 2808: No match 2809: AB 2810: No match 2811: 2812: / (?i)abc/IxDZ 2813: ------------------------------------------------------------------ 2814: Bra 2815: NC abc 2816: Ket 2817: End 2818: ------------------------------------------------------------------ 2819: Capturing subpattern count = 0 2820: Options: caseless extended 2821: First char = 'a' (caseless) 2822: Need char = 'c' (caseless) 2823: 2824: /#this is a comment 2825: (?i)abc/IxDZ 2826: ------------------------------------------------------------------ 2827: Bra 2828: NC abc 2829: Ket 2830: End 2831: ------------------------------------------------------------------ 2832: Capturing subpattern count = 0 2833: Options: caseless extended 2834: First char = 'a' (caseless) 2835: Need char = 'c' (caseless) 2836: 2837: /123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/DZ 2838: ------------------------------------------------------------------ 2839: Bra 2840: 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 2841: Ket 2842: End 2843: ------------------------------------------------------------------ 2844: Capturing subpattern count = 0 2845: No options 2846: First char = '1' 2847: Need char = '0' 2848: 2849: /\Q123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/DZ 2850: ------------------------------------------------------------------ 2851: Bra 2852: 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 2853: Ket 2854: End 2855: ------------------------------------------------------------------ 2856: Capturing subpattern count = 0 2857: No options 2858: First char = '1' 2859: Need char = '0' 2860: 2861: /\Q\E/DZ 2862: ------------------------------------------------------------------ 2863: Bra 2864: Ket 2865: End 2866: ------------------------------------------------------------------ 2867: Capturing subpattern count = 0 2868: No options 2869: No first char 2870: No need char 2871: \ 2872: 0: 2873: 2874: /\Q\Ex/DZ 2875: ------------------------------------------------------------------ 2876: Bra 2877: x 2878: Ket 2879: End 2880: ------------------------------------------------------------------ 2881: Capturing subpattern count = 0 2882: No options 2883: First char = 'x' 2884: No need char 2885: 2886: / \Q\E/DZ 2887: ------------------------------------------------------------------ 2888: Bra 2889: 2890: Ket 2891: End 2892: ------------------------------------------------------------------ 2893: Capturing subpattern count = 0 2894: No options 2895: First char = ' ' 2896: No need char 2897: 2898: /a\Q\E/DZ 2899: ------------------------------------------------------------------ 2900: Bra 2901: a 2902: Ket 2903: End 2904: ------------------------------------------------------------------ 2905: Capturing subpattern count = 0 2906: No options 2907: First char = 'a' 2908: No need char 2909: abc 2910: 0: a 2911: bca 2912: 0: a 2913: bac 2914: 0: a 2915: 2916: /a\Q\Eb/DZ 2917: ------------------------------------------------------------------ 2918: Bra 2919: ab 2920: Ket 2921: End 2922: ------------------------------------------------------------------ 2923: Capturing subpattern count = 0 2924: No options 2925: First char = 'a' 2926: Need char = 'b' 2927: abc 2928: 0: ab 2929: 2930: /\Q\Eabc/DZ 2931: ------------------------------------------------------------------ 2932: Bra 2933: abc 2934: Ket 2935: End 2936: ------------------------------------------------------------------ 2937: Capturing subpattern count = 0 2938: No options 2939: First char = 'a' 2940: Need char = 'c' 2941: 2942: /x*+\w/DZ 2943: ------------------------------------------------------------------ 2944: Bra 2945: x*+ 2946: \w 2947: Ket 2948: End 2949: ------------------------------------------------------------------ 2950: Capturing subpattern count = 0 2951: No options 2952: No first char 2953: No need char 2954: *** Failers 2955: 0: F 2956: xxxxx 2957: No match 2958: 2959: /x?+/DZ 2960: ------------------------------------------------------------------ 2961: Bra 2962: x?+ 2963: Ket 2964: End 2965: ------------------------------------------------------------------ 2966: Capturing subpattern count = 0 2967: No options 2968: No first char 2969: No need char 2970: 2971: /x++/DZ 2972: ------------------------------------------------------------------ 2973: Bra 2974: x++ 2975: Ket 2976: End 2977: ------------------------------------------------------------------ 2978: Capturing subpattern count = 0 2979: No options 2980: First char = 'x' 2981: No need char 2982: 2983: /x{1,3}+/DZ 2984: ------------------------------------------------------------------ 2985: Bra 2986: Once 2987: x 2988: x{0,2} 2989: Ket 2990: Ket 2991: End 2992: ------------------------------------------------------------------ 2993: Capturing subpattern count = 0 2994: No options 2995: First char = 'x' 2996: No need char 2997: 2998: /(x)*+/DZ 2999: ------------------------------------------------------------------ 3000: Bra 3001: Once 3002: Brazero 3003: CBra 1 3004: x 3005: KetRmax 3006: Ket 3007: Ket 3008: End 3009: ------------------------------------------------------------------ 3010: Capturing subpattern count = 1 3011: No options 3012: No first char 3013: No need char 3014: 3015: /^(\w++|\s++)*$/I 3016: Capturing subpattern count = 1 3017: Options: anchored 3018: No first char 3019: No need char 3020: now is the time for all good men to come to the aid of the party 3021: 0: now is the time for all good men to come to the aid of the party 3022: 1: party 3023: *** Failers 3024: No match 3025: this is not a line with only words and spaces! 3026: No match 3027: 3028: /(\d++)(\w)/I 3029: Capturing subpattern count = 2 3030: No options 3031: No first char 3032: No need char 3033: 12345a 3034: 0: 12345a 3035: 1: 12345 3036: 2: a 3037: *** Failers 3038: No match 3039: 12345+ 3040: No match 3041: 3042: /a++b/I 3043: Capturing subpattern count = 0 3044: No options 3045: First char = 'a' 3046: Need char = 'b' 3047: aaab 3048: 0: aaab 3049: 3050: /(a++b)/I 3051: Capturing subpattern count = 1 3052: No options 3053: First char = 'a' 3054: Need char = 'b' 3055: aaab 3056: 0: aaab 3057: 1: aaab 3058: 3059: /(a++)b/I 3060: Capturing subpattern count = 1 3061: No options 3062: First char = 'a' 3063: Need char = 'b' 3064: aaab 3065: 0: aaab 3066: 1: aaa 3067: 3068: /([^()]++|\([^()]*\))+/I 3069: Capturing subpattern count = 1 3070: No options 3071: No first char 3072: No need char 3073: ((abc(ade)ufh()()x 3074: 0: abc(ade)ufh()()x 3075: 1: x 3076: 3077: /\(([^()]++|\([^()]+\))+\)/I 3078: Capturing subpattern count = 1 3079: No options 3080: First char = '(' 3081: Need char = ')' 3082: (abc) 3083: 0: (abc) 3084: 1: abc 3085: (abc(def)xyz) 3086: 0: (abc(def)xyz) 3087: 1: xyz 3088: *** Failers 3089: No match 3090: ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3091: No match 3092: 3093: /(abc){1,3}+/DZ 3094: ------------------------------------------------------------------ 3095: Bra 3096: Once 3097: CBra 1 3098: abc 3099: Ket 3100: Brazero 3101: Bra 3102: CBra 1 3103: abc 3104: Ket 3105: Brazero 3106: CBra 1 3107: abc 3108: Ket 3109: Ket 3110: Ket 3111: Ket 3112: End 3113: ------------------------------------------------------------------ 3114: Capturing subpattern count = 1 3115: No options 3116: First char = 'a' 3117: Need char = 'c' 3118: 3119: /a+?+/I 3120: Failed: nothing to repeat at offset 3 3121: 3122: /a{2,3}?+b/I 3123: Failed: nothing to repeat at offset 7 3124: 3125: /(?U)a+?+/I 3126: Failed: nothing to repeat at offset 7 3127: 3128: /a{2,3}?+b/IU 3129: Failed: nothing to repeat at offset 7 3130: 3131: /x(?U)a++b/DZ 3132: ------------------------------------------------------------------ 3133: Bra 3134: x 3135: a++ 3136: b 3137: Ket 3138: End 3139: ------------------------------------------------------------------ 3140: Capturing subpattern count = 0 3141: No options 3142: First char = 'x' 3143: Need char = 'b' 3144: xaaaab 3145: 0: xaaaab 3146: 3147: /(?U)xa++b/DZ 3148: ------------------------------------------------------------------ 3149: Bra 3150: x 3151: a++ 3152: b 3153: Ket 3154: End 3155: ------------------------------------------------------------------ 3156: Capturing subpattern count = 0 3157: Options: ungreedy 3158: First char = 'x' 3159: Need char = 'b' 3160: xaaaab 3161: 0: xaaaab 3162: 3163: /^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/DZ 3164: ------------------------------------------------------------------ 3165: Bra 3166: ^ 3167: CBra 1 3168: CBra 2 3169: a+ 3170: Ket 3171: CBra 3 3172: [ab]+? 3173: Ket 3174: CBra 4 3175: [bc]+ 3176: Ket 3177: CBra 5 3178: \w* 3179: Ket 3180: Ket 3181: Ket 3182: End 3183: ------------------------------------------------------------------ 3184: Capturing subpattern count = 5 3185: Options: anchored 3186: No first char 3187: No need char 3188: 3189: /^x(?U)a+b/DZ 3190: ------------------------------------------------------------------ 3191: Bra 3192: ^ 3193: x 3194: a++ 3195: b 3196: Ket 3197: End 3198: ------------------------------------------------------------------ 3199: Capturing subpattern count = 0 3200: Options: anchored 3201: No first char 3202: Need char = 'b' 3203: 3204: /^x(?U)(a+)b/DZ 3205: ------------------------------------------------------------------ 3206: Bra 3207: ^ 3208: x 3209: CBra 1 3210: a+? 3211: Ket 3212: b 3213: Ket 3214: End 3215: ------------------------------------------------------------------ 3216: Capturing subpattern count = 1 3217: Options: anchored 3218: No first char 3219: Need char = 'b' 3220: 3221: /[.x.]/I 3222: Failed: POSIX collating elements are not supported at offset 0 3223: 3224: /[=x=]/I 3225: Failed: POSIX collating elements are not supported at offset 0 3226: 3227: /[:x:]/I 3228: Failed: POSIX named classes are supported only within a class at offset 0 3229: 3230: /\l/I 3231: Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1 3232: 3233: /\L/I 3234: Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1 3235: 3236: /\N{name}/I 3237: Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1 3238: 3239: /\u/I 3240: Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1 3241: 3242: /\U/I 3243: Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1 3244: 3245: /[/I 3246: Failed: missing terminating ] for character class at offset 1 3247: 3248: /[a-/I 3249: Failed: missing terminating ] for character class at offset 3 3250: 3251: /[[:space:]/I 3252: Failed: missing terminating ] for character class at offset 10 3253: 3254: /[\s]/IDZ 3255: ------------------------------------------------------------------ 3256: Bra 3257: [\x09\x0a\x0c\x0d ] 3258: Ket 3259: End 3260: ------------------------------------------------------------------ 3261: Capturing subpattern count = 0 3262: No options 3263: No first char 3264: No need char 3265: 3266: /[[:space:]]/IDZ 3267: ------------------------------------------------------------------ 3268: Bra 3269: [\x09-\x0d ] 3270: Ket 3271: End 3272: ------------------------------------------------------------------ 3273: Capturing subpattern count = 0 3274: No options 3275: No first char 3276: No need char 3277: 3278: /[[:space:]abcde]/IDZ 3279: ------------------------------------------------------------------ 3280: Bra 3281: [\x09-\x0d a-e] 3282: Ket 3283: End 3284: ------------------------------------------------------------------ 3285: Capturing subpattern count = 0 3286: No options 3287: No first char 3288: No need char 3289: 3290: /< (?: (?(R) \d++ | [^<>]*+) | (?R)) * >/Ix 3291: Capturing subpattern count = 0 3292: Options: extended 3293: First char = '<' 3294: Need char = '>' 3295: <> 3296: 0: <> 3297: <abcd> 3298: 0: <abcd> 3299: <abc <123> hij> 3300: 0: <abc <123> hij> 3301: <abc <def> hij> 3302: 0: <def> 3303: <abc<>def> 3304: 0: <abc<>def> 3305: <abc<> 3306: 0: <> 3307: *** Failers 3308: No match 3309: <abc 3310: No match 3311: 3312: |8J\$WE\<\.rX\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b|IDZ 3313: ------------------------------------------------------------------ 3314: Bra 3315: 8J$WE<.rX+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDD<EjmhUZ?.akp2dF>qmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X 3316: \b 3317: Ket 3318: End 3319: ------------------------------------------------------------------ 3320: Capturing subpattern count = 0 3321: No options 3322: First char = '8' 3323: Need char = 'X' 3324: 3325: |\$\<\.X\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b|IDZ 3326: ------------------------------------------------------------------ 3327: Bra 3328: $<.X+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDD<EjmhUZ?.akp2dF>qmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X 3329: \b 3330: Ket 3331: End 3332: ------------------------------------------------------------------ 3333: Capturing subpattern count = 0 3334: No options 3335: First char = '$' 3336: Need char = 'X' 3337: 3338: /(.*)\d+\1/I 3339: Capturing subpattern count = 1 3340: Max back reference = 1 3341: No options 3342: No first char 3343: No need char 3344: 3345: /(.*)\d+/I 3346: Capturing subpattern count = 1 3347: No options 3348: First char at start or follows newline 3349: No need char 3350: 3351: /(.*)\d+\1/Is 3352: Capturing subpattern count = 1 3353: Max back reference = 1 3354: Options: dotall 3355: No first char 3356: No need char 3357: 3358: /(.*)\d+/Is 3359: Capturing subpattern count = 1 3360: Options: anchored dotall 3361: No first char 3362: No need char 3363: 3364: /(.*(xyz))\d+\2/I 3365: Capturing subpattern count = 2 3366: Max back reference = 2 3367: No options 3368: First char at start or follows newline 3369: Need char = 'z' 3370: 3371: /((.*))\d+\1/I 3372: Capturing subpattern count = 2 3373: Max back reference = 1 3374: No options 3375: No first char 3376: No need char 3377: abc123bc 3378: 0: bc123bc 3379: 1: bc 3380: 2: bc 3381: 3382: /a[b]/I 3383: Capturing subpattern count = 0 3384: No options 3385: First char = 'a' 3386: Need char = 'b' 3387: 3388: /(?=a).*/I 3389: Capturing subpattern count = 0 3390: No options 3391: First char = 'a' 3392: No need char 3393: 3394: /(?=abc).xyz/IiI 3395: Capturing subpattern count = 0 3396: Options: caseless 3397: First char = 'a' (caseless) 3398: Need char = 'z' (caseless) 3399: 3400: /(?=abc)(?i).xyz/I 3401: Capturing subpattern count = 0 3402: No options 3403: First char = 'a' 3404: Need char = 'z' (caseless) 3405: 3406: /(?=a)(?=b)/I 3407: Capturing subpattern count = 0 3408: No options 3409: First char = 'a' 3410: No need char 3411: 3412: /(?=.)a/I 3413: Capturing subpattern count = 0 3414: No options 3415: First char = 'a' 3416: No need char 3417: 3418: /((?=abcda)a)/I 3419: Capturing subpattern count = 1 3420: No options 3421: First char = 'a' 3422: Need char = 'a' 3423: 3424: /((?=abcda)ab)/I 3425: Capturing subpattern count = 1 3426: No options 3427: First char = 'a' 3428: Need char = 'b' 3429: 3430: /()a/I 3431: Capturing subpattern count = 1 3432: No options 3433: No first char 3434: Need char = 'a' 3435: 3436: /(?(1)ab|ac)(.)/I 3437: Capturing subpattern count = 1 3438: No options 3439: First char = 'a' 3440: No need char 3441: 3442: /(?(1)abz|acz)(.)/I 3443: Capturing subpattern count = 1 3444: No options 3445: First char = 'a' 3446: Need char = 'z' 3447: 3448: /(?(1)abz)(.)/I 3449: Capturing subpattern count = 1 3450: No options 3451: No first char 3452: No need char 3453: 3454: /(?(1)abz)(1)23/I 3455: Capturing subpattern count = 1 3456: No options 3457: No first char 3458: Need char = '3' 3459: 3460: /(a)+/I 3461: Capturing subpattern count = 1 3462: No options 3463: First char = 'a' 3464: No need char 3465: 3466: /(a){2,3}/I 3467: Capturing subpattern count = 1 3468: No options 3469: First char = 'a' 3470: Need char = 'a' 3471: 3472: /(a)*/I 3473: Capturing subpattern count = 1 3474: No options 3475: No first char 3476: No need char 3477: 3478: /[a]/I 3479: Capturing subpattern count = 0 3480: No options 3481: First char = 'a' 3482: No need char 3483: 3484: /[ab]/I 3485: Capturing subpattern count = 0 3486: No options 3487: No first char 3488: No need char 3489: 3490: /[ab]/IS 3491: Capturing subpattern count = 0 3492: No options 3493: No first char 3494: No need char 3495: Subject length lower bound = 1 3496: Starting byte set: a b 3497: 3498: /[^a]/I 3499: Capturing subpattern count = 0 3500: No options 3501: No first char 3502: No need char 3503: 3504: /\d456/I 3505: Capturing subpattern count = 0 3506: No options 3507: No first char 3508: Need char = '6' 3509: 3510: /\d456/IS 3511: Capturing subpattern count = 0 3512: No options 3513: No first char 3514: Need char = '6' 3515: Subject length lower bound = 4 3516: Starting byte set: 0 1 2 3 4 5 6 7 8 9 3517: 3518: /a^b/I 3519: Capturing subpattern count = 0 3520: No options 3521: First char = 'a' 3522: Need char = 'b' 3523: 3524: /^a/Im 3525: Capturing subpattern count = 0 3526: Options: multiline 3527: First char at start or follows newline 3528: Need char = 'a' 3529: abcde 3530: 0: a 3531: xy\nabc 3532: 0: a 3533: *** Failers 3534: No match 3535: xyabc 3536: No match 3537: 3538: /c|abc/I 3539: Capturing subpattern count = 0 3540: No options 3541: No first char 3542: Need char = 'c' 3543: 3544: /(?i)[ab]/IS 3545: Capturing subpattern count = 0 3546: Options: caseless 3547: No first char 3548: No need char 3549: Subject length lower bound = 1 3550: Starting byte set: A B a b 3551: 3552: /[ab](?i)cd/IS 3553: Capturing subpattern count = 0 3554: No options 3555: No first char 3556: Need char = 'd' (caseless) 3557: Subject length lower bound = 3 3558: Starting byte set: a b 3559: 3560: /abc(?C)def/I 3561: Capturing subpattern count = 0 3562: No options 3563: First char = 'a' 3564: Need char = 'f' 3565: abcdef 3566: --->abcdef 3567: 0 ^ ^ d 3568: 0: abcdef 3569: 1234abcdef 3570: --->1234abcdef 3571: 0 ^ ^ d 3572: 0: abcdef 3573: *** Failers 3574: No match 3575: abcxyz 3576: No match 3577: abcxyzf 3578: --->abcxyzf 3579: 0 ^ ^ d 3580: No match 3581: 3582: /abc(?C)de(?C1)f/I 3583: Capturing subpattern count = 0 3584: No options 3585: First char = 'a' 3586: Need char = 'f' 3587: 123abcdef 3588: --->123abcdef 3589: 0 ^ ^ d 3590: 1 ^ ^ f 3591: 0: abcdef 3592: 3593: /(?C1)\dabc(?C2)def/I 3594: Capturing subpattern count = 0 3595: No options 3596: No first char 3597: Need char = 'f' 3598: 1234abcdef 3599: --->1234abcdef 3600: 1 ^ \d 3601: 1 ^ \d 3602: 1 ^ \d 3603: 1 ^ \d 3604: 2 ^ ^ d 3605: 0: 4abcdef 3606: *** Failers 3607: No match 3608: abcdef 3609: --->abcdef 3610: 1 ^ \d 3611: 1 ^ \d 3612: 1 ^ \d 3613: 1 ^ \d 3614: 1 ^ \d 3615: 1 ^ \d 3616: No match 3617: 3618: /(?C255)ab/I 3619: Capturing subpattern count = 0 3620: No options 3621: First char = 'a' 3622: Need char = 'b' 3623: 3624: /(?C256)ab/I 3625: Failed: number after (?C is > 255 at offset 6 3626: 3627: /(?Cab)xx/I 3628: Failed: closing ) for (?C expected at offset 3 3629: 3630: /(?C12vr)x/I 3631: Failed: closing ) for (?C expected at offset 5 3632: 3633: /abc(?C)def/I 3634: Capturing subpattern count = 0 3635: No options 3636: First char = 'a' 3637: Need char = 'f' 3638: *** Failers 3639: No match 3640: \x83\x0\x61bcdef 3641: --->\x83\x00abcdef 3642: 0 ^ ^ d 3643: 0: abcdef 3644: 3645: /(abc)(?C)de(?C1)f/I 3646: Capturing subpattern count = 1 3647: No options 3648: First char = 'a' 3649: Need char = 'f' 3650: 123abcdef 3651: --->123abcdef 3652: 0 ^ ^ d 3653: 1 ^ ^ f 3654: 0: abcdef 3655: 1: abc 3656: 123abcdef\C+ 3657: Callout 0: last capture = 1 3658: 0: <unset> 3659: 1: abc 3660: --->123abcdef 3661: ^ ^ d 3662: Callout 1: last capture = 1 3663: 0: <unset> 3664: 1: abc 3665: --->123abcdef 3666: ^ ^ f 3667: 0: abcdef 3668: 1: abc 3669: 123abcdef\C- 3670: 0: abcdef 3671: 1: abc 3672: *** Failers 3673: No match 3674: 123abcdef\C!1 3675: --->123abcdef 3676: 0 ^ ^ d 3677: 1 ^ ^ f 3678: No match 3679: 3680: /(?C0)(abc(?C1))*/I 3681: Capturing subpattern count = 1 3682: No options 3683: No first char 3684: No need char 3685: abcabcabc 3686: --->abcabcabc 3687: 0 ^ (abc(?C1))* 3688: 1 ^ ^ ) 3689: 1 ^ ^ ) 3690: 1 ^ ^ ) 3691: 0: abcabcabc 3692: 1: abc 3693: abcabc\C!1!3 3694: --->abcabc 3695: 0 ^ (abc(?C1))* 3696: 1 ^ ^ ) 3697: 1 ^ ^ ) 3698: 0: abcabc 3699: 1: abc 3700: *** Failers 3701: --->*** Failers 3702: 0 ^ (abc(?C1))* 3703: 0: 3704: abcabcabc\C!1!3 3705: --->abcabcabc 3706: 0 ^ (abc(?C1))* 3707: 1 ^ ^ ) 3708: 1 ^ ^ ) 3709: 1 ^ ^ ) 3710: 0: abcabc 3711: 1: abc 3712: 3713: /(\d{3}(?C))*/I 3714: Capturing subpattern count = 1 3715: No options 3716: No first char 3717: No need char 3718: 123\C+ 3719: Callout 0: last capture = -1 3720: 0: <unset> 3721: --->123 3722: ^ ^ ) 3723: 0: 123 3724: 1: 123 3725: 123456\C+ 3726: Callout 0: last capture = -1 3727: 0: <unset> 3728: --->123456 3729: ^ ^ ) 3730: Callout 0: last capture = 1 3731: 0: <unset> 3732: 1: 123 3733: --->123456 3734: ^ ^ ) 3735: 0: 123456 3736: 1: 456 3737: 123456789\C+ 3738: Callout 0: last capture = -1 3739: 0: <unset> 3740: --->123456789 3741: ^ ^ ) 3742: Callout 0: last capture = 1 3743: 0: <unset> 3744: 1: 123 3745: --->123456789 3746: ^ ^ ) 3747: Callout 0: last capture = 1 3748: 0: <unset> 3749: 1: 456 3750: --->123456789 3751: ^ ^ ) 3752: 0: 123456789 3753: 1: 789 3754: 3755: /((xyz)(?C)p|(?C1)xyzabc)/I 3756: Capturing subpattern count = 2 3757: No options 3758: First char = 'x' 3759: No need char 3760: xyzabc\C+ 3761: Callout 0: last capture = 2 3762: 0: <unset> 3763: 1: <unset> 3764: 2: xyz 3765: --->xyzabc 3766: ^ ^ p 3767: Callout 1: last capture = -1 3768: 0: <unset> 3769: --->xyzabc 3770: ^ x 3771: 0: xyzabc 3772: 1: xyzabc 3773: 3774: /(X)((xyz)(?C)p|(?C1)xyzabc)/I 3775: Capturing subpattern count = 3 3776: No options 3777: First char = 'X' 3778: Need char = 'x' 3779: Xxyzabc\C+ 3780: Callout 0: last capture = 3 3781: 0: <unset> 3782: 1: X 3783: 2: <unset> 3784: 3: xyz 3785: --->Xxyzabc 3786: ^ ^ p 3787: Callout 1: last capture = 1 3788: 0: <unset> 3789: 1: X 3790: --->Xxyzabc 3791: ^^ x 3792: 0: Xxyzabc 3793: 1: X 3794: 2: xyzabc 3795: 3796: /(?=(abc))(?C)abcdef/I 3797: Capturing subpattern count = 1 3798: No options 3799: First char = 'a' 3800: Need char = 'f' 3801: abcdef\C+ 3802: Callout 0: last capture = 1 3803: 0: <unset> 3804: 1: abc 3805: --->abcdef 3806: ^ a 3807: 0: abcdef 3808: 1: abc 3809: 3810: /(?!(abc)(?C1)d)(?C2)abcxyz/I 3811: Capturing subpattern count = 1 3812: No options 3813: First char = 'a' 3814: Need char = 'z' 3815: abcxyz\C+ 3816: Callout 1: last capture = 1 3817: 0: <unset> 3818: 1: abc 3819: --->abcxyz 3820: ^ ^ d 3821: Callout 2: last capture = -1 3822: 0: <unset> 3823: --->abcxyz 3824: ^ a 3825: 0: abcxyz 3826: 3827: /(?<=(abc)(?C))xyz/I 3828: Capturing subpattern count = 1 3829: No options 3830: First char = 'x' 3831: Need char = 'z' 3832: abcxyz\C+ 3833: Callout 0: last capture = 1 3834: 0: <unset> 3835: 1: abc 3836: --->abcxyz 3837: ^ ) 3838: 0: xyz 3839: 1: abc 3840: 3841: /a(b+)(c*)(?C1)/I 3842: Capturing subpattern count = 2 3843: No options 3844: First char = 'a' 3845: Need char = 'b' 3846: abbbbbccc\C*1 3847: --->abbbbbccc 3848: 1 ^ ^ 3849: Callout data = 1 3850: 1 ^ ^ 3851: Callout data = 1 3852: 1 ^ ^ 3853: Callout data = 1 3854: 1 ^ ^ 3855: Callout data = 1 3856: 1 ^ ^ 3857: Callout data = 1 3858: 1 ^ ^ 3859: Callout data = 1 3860: 1 ^ ^ 3861: Callout data = 1 3862: 1 ^ ^ 3863: Callout data = 1 3864: No match 3865: 3866: /a(b+?)(c*?)(?C1)/I 3867: Capturing subpattern count = 2 3868: No options 3869: First char = 'a' 3870: Need char = 'b' 3871: abbbbbccc\C*1 3872: --->abbbbbccc 3873: 1 ^ ^ 3874: Callout data = 1 3875: 1 ^ ^ 3876: Callout data = 1 3877: 1 ^ ^ 3878: Callout data = 1 3879: 1 ^ ^ 3880: Callout data = 1 3881: 1 ^ ^ 3882: Callout data = 1 3883: 1 ^ ^ 3884: Callout data = 1 3885: 1 ^ ^ 3886: Callout data = 1 3887: 1 ^ ^ 3888: Callout data = 1 3889: No match 3890: 3891: /(?C)abc/I 3892: Capturing subpattern count = 0 3893: No options 3894: First char = 'a' 3895: Need char = 'c' 3896: 3897: /(?C)^abc/I 3898: Capturing subpattern count = 0 3899: Options: anchored 3900: No first char 3901: No need char 3902: 3903: /(?C)a|b/IS 3904: Capturing subpattern count = 0 3905: No options 3906: No first char 3907: No need char 3908: Subject length lower bound = 1 3909: Starting byte set: a b 3910: 3911: /(?R)/I 3912: Failed: recursive call could loop indefinitely at offset 3 3913: 3914: /(a|(?R))/I 3915: Failed: recursive call could loop indefinitely at offset 6 3916: 3917: /(ab|(bc|(de|(?R))))/I 3918: Failed: recursive call could loop indefinitely at offset 15 3919: 3920: /x(ab|(bc|(de|(?R))))/I 3921: Capturing subpattern count = 3 3922: No options 3923: First char = 'x' 3924: No need char 3925: xab 3926: 0: xab 3927: 1: ab 3928: xbc 3929: 0: xbc 3930: 1: bc 3931: 2: bc 3932: xde 3933: 0: xde 3934: 1: de 3935: 2: de 3936: 3: de 3937: xxab 3938: 0: xxab 3939: 1: xab 3940: 2: xab 3941: 3: xab 3942: xxxab 3943: 0: xxxab 3944: 1: xxab 3945: 2: xxab 3946: 3: xxab 3947: *** Failers 3948: No match 3949: xyab 3950: No match 3951: 3952: /(ab|(bc|(de|(?1))))/I 3953: Failed: recursive call could loop indefinitely at offset 15 3954: 3955: /x(ab|(bc|(de|(?1)x)x)x)/I 3956: Failed: recursive call could loop indefinitely at offset 16 3957: 3958: /^([^()]|\((?1)*\))*$/I 3959: Capturing subpattern count = 1 3960: Options: anchored 3961: No first char 3962: No need char 3963: abc 3964: 0: abc 3965: 1: c 3966: a(b)c 3967: 0: a(b)c 3968: 1: c 3969: a(b(c))d 3970: 0: a(b(c))d 3971: 1: d 3972: *** Failers) 3973: No match 3974: a(b(c)d 3975: No match 3976: 3977: /^>abc>([^()]|\((?1)*\))*<xyz<$/I 3978: Capturing subpattern count = 1 3979: Options: anchored 3980: No first char 3981: Need char = '<' 3982: >abc>123<xyz< 3983: 0: >abc>123<xyz< 3984: 1: 3 3985: >abc>1(2)3<xyz< 3986: 0: >abc>1(2)3<xyz< 3987: 1: 3 3988: >abc>(1(2)3)<xyz< 3989: 0: >abc>(1(2)3)<xyz< 3990: 1: (1(2)3) 3991: 3992: /(a(?1)b)/DZ 3993: ------------------------------------------------------------------ 3994: Bra 3995: CBra 1 3996: a 3997: Once 3998: Recurse 3999: Ket 4000: b 4001: Ket 4002: Ket 4003: End 4004: ------------------------------------------------------------------ 4005: Capturing subpattern count = 1 4006: No options 4007: First char = 'a' 4008: Need char = 'b' 4009: 4010: /(a(?1)+b)/DZ 4011: ------------------------------------------------------------------ 4012: Bra 4013: CBra 1 4014: a 4015: Once 4016: Recurse 4017: KetRmax 4018: b 4019: Ket 4020: Ket 4021: End 4022: ------------------------------------------------------------------ 4023: Capturing subpattern count = 1 4024: No options 4025: First char = 'a' 4026: Need char = 'b' 4027: 4028: /^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/I 4029: Capturing subpattern count = 2 4030: Options: anchored 4031: No first char 4032: No need char 4033: 12 4034: 0: 12 4035: 1: 12 4036: (((2+2)*-3)-7) 4037: 0: (((2+2)*-3)-7) 4038: 1: (((2+2)*-3)-7) 4039: 2: - 4040: -12 4041: 0: -12 4042: 1: -12 4043: *** Failers 4044: No match 4045: ((2+2)*-3)-7) 4046: No match 4047: 4048: /^(x(y|(?1){2})z)/I 4049: Capturing subpattern count = 2 4050: Options: anchored 4051: No first char 4052: No need char 4053: xyz 4054: 0: xyz 4055: 1: xyz 4056: 2: y 4057: xxyzxyzz 4058: 0: xxyzxyzz 4059: 1: xxyzxyzz 4060: 2: xyzxyz 4061: *** Failers 4062: No match 4063: xxyzz 4064: No match 4065: xxyzxyzxyzz 4066: No match 4067: 4068: /((< (?: (?(R) \d++ | [^<>]*+) | (?2)) * >))/Ix 4069: Capturing subpattern count = 2 4070: Options: extended 4071: First char = '<' 4072: Need char = '>' 4073: <> 4074: 0: <> 4075: 1: <> 4076: 2: <> 4077: <abcd> 4078: 0: <abcd> 4079: 1: <abcd> 4080: 2: <abcd> 4081: <abc <123> hij> 4082: 0: <abc <123> hij> 4083: 1: <abc <123> hij> 4084: 2: <abc <123> hij> 4085: <abc <def> hij> 4086: 0: <def> 4087: 1: <def> 4088: 2: <def> 4089: <abc<>def> 4090: 0: <abc<>def> 4091: 1: <abc<>def> 4092: 2: <abc<>def> 4093: <abc<> 4094: 0: <> 4095: 1: <> 4096: 2: <> 4097: *** Failers 4098: No match 4099: <abc 4100: No match 4101: 4102: /(?1)/I 4103: Failed: reference to non-existent subpattern at offset 3 4104: 4105: /((?2)(abc)/I 4106: Failed: missing ) at offset 10 4107: 4108: /^(abc)def(?1)/I 4109: Capturing subpattern count = 1 4110: Options: anchored 4111: No first char 4112: No need char 4113: abcdefabc 4114: 0: abcdefabc 4115: 1: abc 4116: 4117: /^(a|b|c)=(?1)+/I 4118: Capturing subpattern count = 1 4119: Options: anchored 4120: No first char 4121: No need char 4122: a=a 4123: 0: a=a 4124: 1: a 4125: a=b 4126: 0: a=b 4127: 1: a 4128: a=bc 4129: 0: a=bc 4130: 1: a 4131: 4132: /^(a|b|c)=((?1))+/I 4133: Capturing subpattern count = 2 4134: Options: anchored 4135: No first char 4136: No need char 4137: a=a 4138: 0: a=a 4139: 1: a 4140: 2: a 4141: a=b 4142: 0: a=b 4143: 1: a 4144: 2: b 4145: a=bc 4146: 0: a=bc 4147: 1: a 4148: 2: c 4149: 4150: /a(?P<name1>b|c)d(?P<longername2>e)/DZ 4151: ------------------------------------------------------------------ 4152: Bra 4153: a 4154: CBra 1 4155: b 4156: Alt 4157: c 4158: Ket 4159: d 4160: CBra 2 4161: e 4162: Ket 4163: Ket 4164: End 4165: ------------------------------------------------------------------ 4166: Capturing subpattern count = 2 4167: Named capturing subpatterns: 4168: longername2 2 4169: name1 1 4170: No options 4171: First char = 'a' 4172: Need char = 'e' 4173: abde 4174: 0: abde 4175: 1: b 4176: 2: e 4177: acde 4178: 0: acde 4179: 1: c 4180: 2: e 4181: 4182: /(?:a(?P<c>c(?P<d>d)))(?P<a>a)/DZ 4183: ------------------------------------------------------------------ 4184: Bra 4185: Bra 4186: a 4187: CBra 1 4188: c 4189: CBra 2 4190: d 4191: Ket 4192: Ket 4193: Ket 4194: CBra 3 4195: a 4196: Ket 4197: Ket 4198: End 4199: ------------------------------------------------------------------ 4200: Capturing subpattern count = 3 4201: Named capturing subpatterns: 4202: a 3 4203: c 1 4204: d 2 4205: No options 4206: First char = 'a' 4207: Need char = 'a' 4208: 4209: /(?P<a>a)...(?P=a)bbb(?P>a)d/DZ 4210: ------------------------------------------------------------------ 4211: Bra 4212: CBra 1 4213: a 4214: Ket 4215: Any 4216: Any 4217: Any 4218: \1 4219: bbb 4220: Once 4221: Recurse 4222: Ket 4223: d 4224: Ket 4225: End 4226: ------------------------------------------------------------------ 4227: Capturing subpattern count = 1 4228: Max back reference = 1 4229: Named capturing subpatterns: 4230: a 1 4231: No options 4232: First char = 'a' 4233: Need char = 'd' 4234: 4235: /^\W*(?:(?P<one>(?P<two>.)\W*(?P>one)\W*(?P=two)|)|(?P<three>(?P<four>.)\W*(?P>three)\W*(?P=four)|\W*.\W*))\W*$/Ii 4236: Capturing subpattern count = 4 4237: Max back reference = 4 4238: Named capturing subpatterns: 4239: four 4 4240: one 1 4241: three 3 4242: two 2 4243: Options: anchored caseless 4244: No first char 4245: No need char 4246: 1221 4247: 0: 1221 4248: 1: 1221 4249: 2: 1 4250: Satan, oscillate my metallic sonatas! 4251: 0: Satan, oscillate my metallic sonatas! 4252: 1: <unset> 4253: 2: <unset> 4254: 3: Satan, oscillate my metallic sonatas 4255: 4: S 4256: A man, a plan, a canal: Panama! 4257: 0: A man, a plan, a canal: Panama! 4258: 1: <unset> 4259: 2: <unset> 4260: 3: A man, a plan, a canal: Panama 4261: 4: A 4262: Able was I ere I saw Elba. 4263: 0: Able was I ere I saw Elba. 4264: 1: <unset> 4265: 2: <unset> 4266: 3: Able was I ere I saw Elba 4267: 4: A 4268: *** Failers 4269: No match 4270: The quick brown fox 4271: No match 4272: 4273: /((?(R)a|b))\1(?1)?/I 4274: Capturing subpattern count = 1 4275: Max back reference = 1 4276: No options 4277: No first char 4278: No need char 4279: bb 4280: 0: bb 4281: 1: b 4282: bbaa 4283: 0: bba 4284: 1: b 4285: 4286: /(.*)a/Is 4287: Capturing subpattern count = 1 4288: Options: anchored dotall 4289: No first char 4290: Need char = 'a' 4291: 4292: /(.*)a\1/Is 4293: Capturing subpattern count = 1 4294: Max back reference = 1 4295: Options: dotall 4296: No first char 4297: Need char = 'a' 4298: 4299: /(.*)a(b)\2/Is 4300: Capturing subpattern count = 2 4301: Max back reference = 2 4302: Options: anchored dotall 4303: No first char 4304: Need char = 'b' 4305: 4306: /((.*)a|(.*)b)z/Is 4307: Capturing subpattern count = 3 4308: Options: anchored dotall 4309: No first char 4310: Need char = 'z' 4311: 4312: /((.*)a|(.*)b)z\1/Is 4313: Capturing subpattern count = 3 4314: Max back reference = 1 4315: Options: dotall 4316: No first char 4317: Need char = 'z' 4318: 4319: /((.*)a|(.*)b)z\2/Is 4320: Capturing subpattern count = 3 4321: Max back reference = 2 4322: Options: dotall 4323: No first char 4324: Need char = 'z' 4325: 4326: /((.*)a|(.*)b)z\3/Is 4327: Capturing subpattern count = 3 4328: Max back reference = 3 4329: Options: dotall 4330: No first char 4331: Need char = 'z' 4332: 4333: /((.*)a|^(.*)b)z\3/Is 4334: Capturing subpattern count = 3 4335: Max back reference = 3 4336: Options: anchored dotall 4337: No first char 4338: Need char = 'z' 4339: 4340: /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a/Is 4341: Capturing subpattern count = 31 4342: Options: anchored dotall 4343: No first char 4344: No need char 4345: 4346: /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\31/Is 4347: Capturing subpattern count = 31 4348: Max back reference = 31 4349: Options: dotall 4350: No first char 4351: No need char 4352: 4353: /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\32/Is 4354: Capturing subpattern count = 32 4355: Max back reference = 32 4356: Options: dotall 4357: No first char 4358: No need char 4359: 4360: /(a)(bc)/INDZ 4361: ------------------------------------------------------------------ 4362: Bra 4363: Bra 4364: a 4365: Ket 4366: Bra 4367: bc 4368: Ket 4369: Ket 4370: End 4371: ------------------------------------------------------------------ 4372: Capturing subpattern count = 0 4373: Options: no_auto_capture 4374: First char = 'a' 4375: Need char = 'c' 4376: abc 4377: 0: abc 4378: 4379: /(?P<one>a)(bc)/INDZ 4380: ------------------------------------------------------------------ 4381: Bra 4382: CBra 1 4383: a 4384: Ket 4385: Bra 4386: bc 4387: Ket 4388: Ket 4389: End 4390: ------------------------------------------------------------------ 4391: Capturing subpattern count = 1 4392: Named capturing subpatterns: 4393: one 1 4394: Options: no_auto_capture 4395: First char = 'a' 4396: Need char = 'c' 4397: abc 4398: 0: abc 4399: 1: a 4400: 4401: /(a)(?P<named>bc)/INDZ 4402: ------------------------------------------------------------------ 4403: Bra 4404: Bra 4405: a 4406: Ket 4407: CBra 1 4408: bc 4409: Ket 4410: Ket 4411: End 4412: ------------------------------------------------------------------ 4413: Capturing subpattern count = 1 4414: Named capturing subpatterns: 4415: named 1 4416: Options: no_auto_capture 4417: First char = 'a' 4418: Need char = 'c' 4419: 4420: /(a+)*zz/I 4421: Capturing subpattern count = 1 4422: No options 4423: No first char 4424: Need char = 'z' 4425: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazzbbbbbb\M 4426: Minimum match() limit = 8 4427: Minimum match() recursion limit = 6 4428: 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazz 4429: 1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4430: aaaaaaaaaaaaaz\M 4431: Minimum match() limit = 32768 4432: Minimum match() recursion limit = 42 4433: No match 4434: 4435: /(aaa(?C1)bbb|ab)/I 4436: Capturing subpattern count = 1 4437: No options 4438: First char = 'a' 4439: Need char = 'b' 4440: aaabbb 4441: --->aaabbb 4442: 1 ^ ^ b 4443: 0: aaabbb 4444: 1: aaabbb 4445: aaabbb\C*0 4446: --->aaabbb 4447: 1 ^ ^ b 4448: 0: aaabbb 4449: 1: aaabbb 4450: aaabbb\C*1 4451: --->aaabbb 4452: 1 ^ ^ b 4453: Callout data = 1 4454: 0: ab 4455: 1: ab 4456: aaabbb\C*-1 4457: --->aaabbb 4458: 1 ^ ^ b 4459: Callout data = -1 4460: No match 4461: 4462: /ab(?P<one>cd)ef(?P<two>gh)/I 4463: Capturing subpattern count = 2 4464: Named capturing subpatterns: 4465: one 1 4466: two 2 4467: No options 4468: First char = 'a' 4469: Need char = 'h' 4470: abcdefgh 4471: 0: abcdefgh 4472: 1: cd 4473: 2: gh 4474: abcdefgh\C1\Gtwo 4475: 0: abcdefgh 4476: 1: cd 4477: 2: gh 4478: 1C cd (2) 4479: G gh (2) two 4480: abcdefgh\Cone\Ctwo 4481: 0: abcdefgh 4482: 1: cd 4483: 2: gh 4484: C cd (2) one 4485: C gh (2) two 4486: abcdefgh\Cthree 4487: no parentheses with name "three" 4488: 0: abcdefgh 4489: 1: cd 4490: 2: gh 4491: copy substring three failed -7 4492: 4493: /(?P<Tes>)(?P<Test>)/DZ 4494: ------------------------------------------------------------------ 4495: Bra 4496: CBra 1 4497: Ket 4498: CBra 2 4499: Ket 4500: Ket 4501: End 4502: ------------------------------------------------------------------ 4503: Capturing subpattern count = 2 4504: Named capturing subpatterns: 4505: Tes 1 4506: Test 2 4507: No options 4508: No first char 4509: No need char 4510: 4511: /(?P<Test>)(?P<Tes>)/DZ 4512: ------------------------------------------------------------------ 4513: Bra 4514: CBra 1 4515: Ket 4516: CBra 2 4517: Ket 4518: Ket 4519: End 4520: ------------------------------------------------------------------ 4521: Capturing subpattern count = 2 4522: Named capturing subpatterns: 4523: Tes 2 4524: Test 1 4525: No options 4526: No first char 4527: No need char 4528: 4529: /(?P<Z>zz)(?P<A>aa)/I 4530: Capturing subpattern count = 2 4531: Named capturing subpatterns: 4532: A 2 4533: Z 1 4534: No options 4535: First char = 'z' 4536: Need char = 'a' 4537: zzaa\CZ 4538: 0: zzaa 4539: 1: zz 4540: 2: aa 4541: C zz (2) Z 4542: zzaa\CA 4543: 0: zzaa 4544: 1: zz 4545: 2: aa 4546: C aa (2) A 4547: 4548: /(?P<x>eks)(?P<x>eccs)/I 4549: Failed: two named subpatterns have the same name at offset 15 4550: 4551: /(?P<abc>abc(?P<def>def)(?P<abc>xyz))/I 4552: Failed: two named subpatterns have the same name at offset 30 4553: 4554: "\[((?P<elem>\d+)(,(?P>elem))*)\]"I 4555: Capturing subpattern count = 3 4556: Named capturing subpatterns: 4557: elem 2 4558: No options 4559: First char = '[' 4560: Need char = ']' 4561: [10,20,30,5,5,4,4,2,43,23,4234] 4562: 0: [10,20,30,5,5,4,4,2,43,23,4234] 4563: 1: 10,20,30,5,5,4,4,2,43,23,4234 4564: 2: 10 4565: 3: ,4234 4566: *** Failers 4567: No match 4568: [] 4569: No match 4570: 4571: "\[((?P<elem>\d+)(,(?P>elem))*)?\]"I 4572: Capturing subpattern count = 3 4573: Named capturing subpatterns: 4574: elem 2 4575: No options 4576: First char = '[' 4577: Need char = ']' 4578: [10,20,30,5,5,4,4,2,43,23,4234] 4579: 0: [10,20,30,5,5,4,4,2,43,23,4234] 4580: 1: 10,20,30,5,5,4,4,2,43,23,4234 4581: 2: 10 4582: 3: ,4234 4583: [] 4584: 0: [] 4585: 4586: /(a(b(?2)c))?/DZ 4587: ------------------------------------------------------------------ 4588: Bra 4589: Brazero 4590: CBra 1 4591: a 4592: CBra 2 4593: b 4594: Once 4595: Recurse 4596: Ket 4597: c 4598: Ket 4599: Ket 4600: Ket 4601: End 4602: ------------------------------------------------------------------ 4603: Capturing subpattern count = 2 4604: No options 4605: No first char 4606: No need char 4607: 4608: /(a(b(?2)c))*/DZ 4609: ------------------------------------------------------------------ 4610: Bra 4611: Brazero 4612: CBra 1 4613: a 4614: CBra 2 4615: b 4616: Once 4617: Recurse 4618: Ket 4619: c 4620: Ket 4621: KetRmax 4622: Ket 4623: End 4624: ------------------------------------------------------------------ 4625: Capturing subpattern count = 2 4626: No options 4627: No first char 4628: No need char 4629: 4630: /(a(b(?2)c)){0,2}/DZ 4631: ------------------------------------------------------------------ 4632: Bra 4633: Brazero 4634: Bra 4635: CBra 1 4636: a 4637: CBra 2 4638: b 4639: Once 4640: Recurse 4641: Ket 4642: c 4643: Ket 4644: Ket 4645: Brazero 4646: CBra 1 4647: a 4648: CBra 2 4649: b 4650: Once 4651: Recurse 4652: Ket 4653: c 4654: Ket 4655: Ket 4656: Ket 4657: Ket 4658: End 4659: ------------------------------------------------------------------ 4660: Capturing subpattern count = 2 4661: No options 4662: No first char 4663: No need char 4664: 4665: /[ab]{1}+/DZ 4666: ------------------------------------------------------------------ 4667: Bra 4668: Once 4669: [ab]{1,1} 4670: Ket 4671: Ket 4672: End 4673: ------------------------------------------------------------------ 4674: Capturing subpattern count = 0 4675: No options 4676: No first char 4677: No need char 4678: 4679: /((w\/|-|with)*(free|immediate)*.*?shipping\s*[!.-]*)/Ii 4680: Capturing subpattern count = 3 4681: Options: caseless 4682: No first char 4683: Need char = 'g' (caseless) 4684: Baby Bjorn Active Carrier - With free SHIPPING!! 4685: 0: Baby Bjorn Active Carrier - With free SHIPPING!! 4686: 1: Baby Bjorn Active Carrier - With free SHIPPING!! 4687: 4688: /((w\/|-|with)*(free|immediate)*.*?shipping\s*[!.-]*)/IiS 4689: Capturing subpattern count = 3 4690: Options: caseless 4691: No first char 4692: Need char = 'g' (caseless) 4693: Subject length lower bound = 8 4694: No set of starting bytes 4695: Baby Bjorn Active Carrier - With free SHIPPING!! 4696: 0: Baby Bjorn Active Carrier - With free SHIPPING!! 4697: 1: Baby Bjorn Active Carrier - With free SHIPPING!! 4698: 4699: /a*.*b/ISDZ 4700: ------------------------------------------------------------------ 4701: Bra 4702: a* 4703: Any* 4704: b 4705: Ket 4706: End 4707: ------------------------------------------------------------------ 4708: Capturing subpattern count = 0 4709: No options 4710: No first char 4711: Need char = 'b' 4712: Subject length lower bound = 1 4713: No set of starting bytes 4714: 4715: /(a|b)*.?c/ISDZ 4716: ------------------------------------------------------------------ 4717: Bra 4718: Brazero 4719: CBra 1 4720: a 4721: Alt 4722: b 4723: KetRmax 4724: Any? 4725: c 4726: Ket 4727: End 4728: ------------------------------------------------------------------ 4729: Capturing subpattern count = 1 4730: No options 4731: No first char 4732: Need char = 'c' 4733: Subject length lower bound = 1 4734: No set of starting bytes 4735: 4736: /abc(?C255)de(?C)f/DZ 4737: ------------------------------------------------------------------ 4738: Bra 4739: abc 4740: Callout 255 10 1 4741: de 4742: Callout 0 16 1 4743: f 4744: Ket 4745: End 4746: ------------------------------------------------------------------ 4747: Capturing subpattern count = 0 4748: No options 4749: First char = 'a' 4750: Need char = 'f' 4751: 4752: /abcde/ICDZ 4753: ------------------------------------------------------------------ 4754: Bra 4755: Callout 255 0 1 4756: a 4757: Callout 255 1 1 4758: b 4759: Callout 255 2 1 4760: c 4761: Callout 255 3 1 4762: d 4763: Callout 255 4 1 4764: e 4765: Callout 255 5 0 4766: Ket 4767: End 4768: ------------------------------------------------------------------ 4769: Capturing subpattern count = 0 4770: Options: 4771: First char = 'a' 4772: Need char = 'e' 4773: abcde 4774: --->abcde 4775: +0 ^ a 4776: +1 ^^ b 4777: +2 ^ ^ c 4778: +3 ^ ^ d 4779: +4 ^ ^ e 4780: +5 ^ ^ 4781: 0: abcde 4782: abcdfe 4783: --->abcdfe 4784: +0 ^ a 4785: +1 ^^ b 4786: +2 ^ ^ c 4787: +3 ^ ^ d 4788: +4 ^ ^ e 4789: No match 4790: 4791: /a*b/ICDZ 4792: ------------------------------------------------------------------ 4793: Bra 4794: Callout 255 0 2 4795: a*+ 4796: Callout 255 2 1 4797: b 4798: Callout 255 3 0 4799: Ket 4800: End 4801: ------------------------------------------------------------------ 4802: Capturing subpattern count = 0 4803: Options: 4804: No first char 4805: Need char = 'b' 4806: ab 4807: --->ab 4808: +0 ^ a* 4809: +2 ^^ b 4810: +3 ^ ^ 4811: 0: ab 4812: aaaab 4813: --->aaaab 4814: +0 ^ a* 4815: +2 ^ ^ b 4816: +3 ^ ^ 4817: 0: aaaab 4818: aaaacb 4819: --->aaaacb 4820: +0 ^ a* 4821: +2 ^ ^ b 4822: +0 ^ a* 4823: +2 ^ ^ b 4824: +0 ^ a* 4825: +2 ^ ^ b 4826: +0 ^ a* 4827: +2 ^^ b 4828: +0 ^ a* 4829: +2 ^ b 4830: +0 ^ a* 4831: +2 ^ b 4832: +3 ^^ 4833: 0: b 4834: 4835: /a+b/ICDZ 4836: ------------------------------------------------------------------ 4837: Bra 4838: Callout 255 0 2 4839: a++ 4840: Callout 255 2 1 4841: b 4842: Callout 255 3 0 4843: Ket 4844: End 4845: ------------------------------------------------------------------ 4846: Capturing subpattern count = 0 4847: Options: 4848: First char = 'a' 4849: Need char = 'b' 4850: ab 4851: --->ab 4852: +0 ^ a+ 4853: +2 ^^ b 4854: +3 ^ ^ 4855: 0: ab 4856: aaaab 4857: --->aaaab 4858: +0 ^ a+ 4859: +2 ^ ^ b 4860: +3 ^ ^ 4861: 0: aaaab 4862: aaaacb 4863: --->aaaacb 4864: +0 ^ a+ 4865: +2 ^ ^ b 4866: +0 ^ a+ 4867: +2 ^ ^ b 4868: +0 ^ a+ 4869: +2 ^ ^ b 4870: +0 ^ a+ 4871: +2 ^^ b 4872: No match 4873: 4874: /(abc|def)x/ICDZ 4875: ------------------------------------------------------------------ 4876: Bra 4877: Callout 255 0 9 4878: CBra 1 4879: Callout 255 1 1 4880: a 4881: Callout 255 2 1 4882: b 4883: Callout 255 3 1 4884: c 4885: Callout 255 4 0 4886: Alt 4887: Callout 255 5 1 4888: d 4889: Callout 255 6 1 4890: e 4891: Callout 255 7 1 4892: f 4893: Callout 255 8 0 4894: Ket 4895: Callout 255 9 1 4896: x 4897: Callout 255 10 0 4898: Ket 4899: End 4900: ------------------------------------------------------------------ 4901: Capturing subpattern count = 1 4902: Options: 4903: No first char 4904: Need char = 'x' 4905: abcx 4906: --->abcx 4907: +0 ^ (abc|def) 4908: +1 ^ a 4909: +2 ^^ b 4910: +3 ^ ^ c 4911: +4 ^ ^ | 4912: +9 ^ ^ x 4913: +10 ^ ^ 4914: 0: abcx 4915: 1: abc 4916: defx 4917: --->defx 4918: +0 ^ (abc|def) 4919: +1 ^ a 4920: +5 ^ d 4921: +6 ^^ e 4922: +7 ^ ^ f 4923: +8 ^ ^ ) 4924: +9 ^ ^ x 4925: +10 ^ ^ 4926: 0: defx 4927: 1: def 4928: abcdefzx 4929: --->abcdefzx 4930: +0 ^ (abc|def) 4931: +1 ^ a 4932: +2 ^^ b 4933: +3 ^ ^ c 4934: +4 ^ ^ | 4935: +9 ^ ^ x 4936: +5 ^ d 4937: +0 ^ (abc|def) 4938: +1 ^ a 4939: +5 ^ d 4940: +0 ^ (abc|def) 4941: +1 ^ a 4942: +5 ^ d 4943: +0 ^ (abc|def) 4944: +1 ^ a 4945: +5 ^ d 4946: +6 ^^ e 4947: +7 ^ ^ f 4948: +8 ^ ^ ) 4949: +9 ^ ^ x 4950: +0 ^ (abc|def) 4951: +1 ^ a 4952: +5 ^ d 4953: +0 ^ (abc|def) 4954: +1 ^ a 4955: +5 ^ d 4956: +0 ^ (abc|def) 4957: +1 ^ a 4958: +5 ^ d 4959: +0 ^ (abc|def) 4960: +1 ^ a 4961: +5 ^ d 4962: No match 4963: 4964: /(ab|cd){3,4}/IC 4965: Capturing subpattern count = 1 4966: Options: 4967: No first char 4968: No need char 4969: ababab 4970: --->ababab 4971: +0 ^ (ab|cd){3,4} 4972: +1 ^ a 4973: +2 ^^ b 4974: +3 ^ ^ | 4975: +1 ^ ^ a 4976: +2 ^ ^ b 4977: +3 ^ ^ | 4978: +1 ^ ^ a 4979: +2 ^ ^ b 4980: +3 ^ ^ | 4981: +1 ^ ^ a 4982: +4 ^ ^ c 4983: +12 ^ ^ 4984: 0: ababab 4985: 1: ab 4986: abcdabcd 4987: --->abcdabcd 4988: +0 ^ (ab|cd){3,4} 4989: +1 ^ a 4990: +2 ^^ b 4991: +3 ^ ^ | 4992: +1 ^ ^ a 4993: +4 ^ ^ c 4994: +5 ^ ^ d 4995: +6 ^ ^ ) 4996: +1 ^ ^ a 4997: +2 ^ ^ b 4998: +3 ^ ^ | 4999: +1 ^ ^ a 5000: +4 ^ ^ c 5001: +5 ^ ^ d 5002: +6 ^ ^ ) 5003: +12 ^ ^ 5004: 0: abcdabcd 5005: 1: cd 5006: abcdcdcdcdcd 5007: --->abcdcdcdcdcd 5008: +0 ^ (ab|cd){3,4} 5009: +1 ^ a 5010: +2 ^^ b 5011: +3 ^ ^ | 5012: +1 ^ ^ a 5013: +4 ^ ^ c 5014: +5 ^ ^ d 5015: +6 ^ ^ ) 5016: +1 ^ ^ a 5017: +4 ^ ^ c 5018: +5 ^ ^ d 5019: +6 ^ ^ ) 5020: +1 ^ ^ a 5021: +4 ^ ^ c 5022: +5 ^ ^ d 5023: +6 ^ ^ ) 5024: +12 ^ ^ 5025: 0: abcdcdcd 5026: 1: cd 5027: 5028: /([ab]{,4}c|xy)/ICDZ 5029: ------------------------------------------------------------------ 5030: Bra 5031: Callout 255 0 14 5032: CBra 1 5033: Callout 255 1 4 5034: [ab] 5035: Callout 255 5 1 5036: { 5037: Callout 255 6 1 5038: , 5039: Callout 255 7 1 5040: 4 5041: Callout 255 8 1 5042: } 5043: Callout 255 9 1 5044: c 5045: Callout 255 10 0 5046: Alt 5047: Callout 255 11 1 5048: x 5049: Callout 255 12 1 5050: y 5051: Callout 255 13 0 5052: Ket 5053: Callout 255 14 0 5054: Ket 5055: End 5056: ------------------------------------------------------------------ 5057: Capturing subpattern count = 1 5058: Options: 5059: No first char 5060: No need char 5061: Note: that { does NOT introduce a quantifier 5062: --->Note: that { does NOT introduce a quantifier 5063: +0 ^ ([ab]{,4}c|xy) 5064: +1 ^ [ab] 5065: +11 ^ x 5066: +0 ^ ([ab]{,4}c|xy) 5067: +1 ^ [ab] 5068: +11 ^ x 5069: +0 ^ ([ab]{,4}c|xy) 5070: +1 ^ [ab] 5071: +11 ^ x 5072: +0 ^ ([ab]{,4}c|xy) 5073: +1 ^ [ab] 5074: +11 ^ x 5075: +0 ^ ([ab]{,4}c|xy) 5076: +1 ^ [ab] 5077: +11 ^ x 5078: +0 ^ ([ab]{,4}c|xy) 5079: +1 ^ [ab] 5080: +11 ^ x 5081: +0 ^ ([ab]{,4}c|xy) 5082: +1 ^ [ab] 5083: +11 ^ x 5084: +0 ^ ([ab]{,4}c|xy) 5085: +1 ^ [ab] 5086: +11 ^ x 5087: +0 ^ ([ab]{,4}c|xy) 5088: +1 ^ [ab] 5089: +5 ^^ { 5090: +11 ^ x 5091: +0 ^ ([ab]{,4}c|xy) 5092: +1 ^ [ab] 5093: +11 ^ x 5094: +0 ^ ([ab]{,4}c|xy) 5095: +1 ^ [ab] 5096: +11 ^ x 5097: +0 ^ ([ab]{,4}c|xy) 5098: +1 ^ [ab] 5099: +11 ^ x 5100: +0 ^ ([ab]{,4}c|xy) 5101: +1 ^ [ab] 5102: +11 ^ x 5103: +0 ^ ([ab]{,4}c|xy) 5104: +1 ^ [ab] 5105: +11 ^ x 5106: +0 ^ ([ab]{,4}c|xy) 5107: +1 ^ [ab] 5108: +11 ^ x 5109: +0 ^ ([ab]{,4}c|xy) 5110: +1 ^ [ab] 5111: +11 ^ x 5112: +0 ^ ([ab]{,4}c|xy) 5113: +1 ^ [ab] 5114: +11 ^ x 5115: +0 ^ ([ab]{,4}c|xy) 5116: +1 ^ [ab] 5117: +11 ^ x 5118: +0 ^ ([ab]{,4}c|xy) 5119: +1 ^ [ab] 5120: +11 ^ x 5121: +0 ^ ([ab]{,4}c|xy) 5122: +1 ^ [ab] 5123: +11 ^ x 5124: +0 ^ ([ab]{,4}c|xy) 5125: +1 ^ [ab] 5126: +11 ^ x 5127: +0 ^ ([ab]{,4}c|xy) 5128: +1 ^ [ab] 5129: +11 ^ x 5130: +0 ^ ([ab]{,4}c|xy) 5131: +1 ^ [ab] 5132: +11 ^ x 5133: +0 ^ ([ab]{,4}c|xy) 5134: +1 ^ [ab] 5135: +11 ^ x 5136: +0 ^ ([ab]{,4}c|xy) 5137: +1 ^ [ab] 5138: +11 ^ x 5139: +0 ^ ([ab]{,4}c|xy) 5140: +1 ^ [ab] 5141: +11 ^ x 5142: +0 ^ ([ab]{,4}c|xy) 5143: +1 ^ [ab] 5144: +11 ^ x 5145: +0 ^ ([ab]{,4}c|xy) 5146: +1 ^ [ab] 5147: +11 ^ x 5148: +0 ^ ([ab]{,4}c|xy) 5149: +1 ^ [ab] 5150: +11 ^ x 5151: +0 ^ ([ab]{,4}c|xy) 5152: +1 ^ [ab] 5153: +11 ^ x 5154: +0 ^ ([ab]{,4}c|xy) 5155: +1 ^ [ab] 5156: +11 ^ x 5157: +0 ^ ([ab]{,4}c|xy) 5158: +1 ^ [ab] 5159: +11 ^ x 5160: +0 ^ ([ab]{,4}c|xy) 5161: +1 ^ [ab] 5162: +5 ^^ { 5163: +11 ^ x 5164: +0 ^ ([ab]{,4}c|xy) 5165: +1 ^ [ab] 5166: +11 ^ x 5167: +0 ^ ([ab]{,4}c|xy) 5168: +1 ^ [ab] 5169: +11 ^ x 5170: +0 ^ ([ab]{,4}c|xy) 5171: +1 ^ [ab] 5172: +11 ^ x 5173: +0 ^ ([ab]{,4}c|xy) 5174: +1 ^ [ab] 5175: +5 ^^ { 5176: +11 ^ x 5177: +0 ^ ([ab]{,4}c|xy) 5178: +1 ^ [ab] 5179: +11 ^ x 5180: +0 ^ ([ab]{,4}c|xy) 5181: +1 ^ [ab] 5182: +11 ^ x 5183: +0 ^ ([ab]{,4}c|xy) 5184: +1 ^ [ab] 5185: +11 ^ x 5186: +0 ^ ([ab]{,4}c|xy) 5187: +1 ^ [ab] 5188: +11 ^ x 5189: +0 ^ ([ab]{,4}c|xy) 5190: +1 ^ [ab] 5191: +11 ^ x 5192: +0 ^ ([ab]{,4}c|xy) 5193: +1 ^ [ab] 5194: +11 ^ x 5195: +0 ^ ([ab]{,4}c|xy) 5196: +1 ^ [ab] 5197: +11 ^ x 5198: +0 ^ ([ab]{,4}c|xy) 5199: +1 ^ [ab] 5200: +11 ^ x 5201: No match 5202: 5203: /([ab]{1,4}c|xy){4,5}?123/ICDZ 5204: ------------------------------------------------------------------ 5205: Bra 5206: Callout 255 0 21 5207: CBra 1 5208: Callout 255 1 9 5209: [ab]{1,4} 5210: Callout 255 10 1 5211: c 5212: Callout 255 11 0 5213: Alt 5214: Callout 255 12 1 5215: x 5216: Callout 255 13 1 5217: y 5218: Callout 255 14 0 5219: Ket 5220: CBra 1 5221: Callout 255 1 9 5222: [ab]{1,4} 5223: Callout 255 10 1 5224: c 5225: Callout 255 11 0 5226: Alt 5227: Callout 255 12 1 5228: x 5229: Callout 255 13 1 5230: y 5231: Callout 255 14 0 5232: Ket 5233: CBra 1 5234: Callout 255 1 9 5235: [ab]{1,4} 5236: Callout 255 10 1 5237: c 5238: Callout 255 11 0 5239: Alt 5240: Callout 255 12 1 5241: x 5242: Callout 255 13 1 5243: y 5244: Callout 255 14 0 5245: Ket 5246: CBra 1 5247: Callout 255 1 9 5248: [ab]{1,4} 5249: Callout 255 10 1 5250: c 5251: Callout 255 11 0 5252: Alt 5253: Callout 255 12 1 5254: x 5255: Callout 255 13 1 5256: y 5257: Callout 255 14 0 5258: Ket 5259: Braminzero 5260: CBra 1 5261: Callout 255 1 9 5262: [ab]{1,4} 5263: Callout 255 10 1 5264: c 5265: Callout 255 11 0 5266: Alt 5267: Callout 255 12 1 5268: x 5269: Callout 255 13 1 5270: y 5271: Callout 255 14 0 5272: Ket 5273: Callout 255 21 1 5274: 1 5275: Callout 255 22 1 5276: 2 5277: Callout 255 23 1 5278: 3 5279: Callout 255 24 0 5280: Ket 5281: End 5282: ------------------------------------------------------------------ 5283: Capturing subpattern count = 1 5284: Options: 5285: No first char 5286: Need char = '3' 5287: aacaacaacaacaac123 5288: --->aacaacaacaacaac123 5289: +0 ^ ([ab]{1,4}c|xy){4,5}? 5290: +1 ^ [ab]{1,4} 5291: +10 ^ ^ c 5292: +11 ^ ^ | 5293: +1 ^ ^ [ab]{1,4} 5294: +10 ^ ^ c 5295: +11 ^ ^ | 5296: +1 ^ ^ [ab]{1,4} 5297: +10 ^ ^ c 5298: +11 ^ ^ | 5299: +1 ^ ^ [ab]{1,4} 5300: +10 ^ ^ c 5301: +11 ^ ^ | 5302: +21 ^ ^ 1 5303: +1 ^ ^ [ab]{1,4} 5304: +10 ^ ^ c 5305: +11 ^ ^ | 5306: +21 ^ ^ 1 5307: +22 ^ ^ 2 5308: +23 ^ ^ 3 5309: +24 ^ ^ 5310: 0: aacaacaacaacaac123 5311: 1: aac 5312: 5313: /\b.*/I 5314: Capturing subpattern count = 0 5315: No options 5316: No first char 5317: No need char 5318: ab cd\>1 5319: 0: cd 5320: 5321: /\b.*/Is 5322: Capturing subpattern count = 0 5323: Options: dotall 5324: No first char 5325: No need char 5326: ab cd\>1 5327: 0: cd 5328: 5329: /(?!.bcd).*/I 5330: Capturing subpattern count = 0 5331: No options 5332: No first char 5333: No need char 5334: Xbcd12345 5335: 0: bcd12345 5336: 5337: /abcde/I 5338: Capturing subpattern count = 0 5339: No options 5340: First char = 'a' 5341: Need char = 'e' 5342: ab\P 5343: Partial match: ab 5344: abc\P 5345: Partial match: abc 5346: abcd\P 5347: Partial match: abcd 5348: abcde\P 5349: 0: abcde 5350: the quick brown abc\P 5351: Partial match: abc 5352: ** Failers\P 5353: No match 5354: the quick brown abxyz fox\P 5355: No match 5356: 5357: "^(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])/(20)?\d\d$"I 5358: Capturing subpattern count = 3 5359: Options: anchored 5360: No first char 5361: Need char = '/' 5362: 13/05/04\P 5363: 0: 13/05/04 5364: 1: 13 5365: 2: 05 5366: 13/5/2004\P 5367: 0: 13/5/2004 5368: 1: 13 5369: 2: 5 5370: 3: 20 5371: 02/05/09\P 5372: 0: 02/05/09 5373: 1: 02 5374: 2: 05 5375: 1\P 5376: Partial match: 1 5377: 1/2\P 5378: Partial match: 1/2 5379: 1/2/0\P 5380: Partial match: 1/2/0 5381: 1/2/04\P 5382: 0: 1/2/04 5383: 1: 1 5384: 2: 2 5385: 0\P 5386: Partial match: 0 5387: 02/\P 5388: Partial match: 02/ 5389: 02/0\P 5390: Partial match: 02/0 5391: 02/1\P 5392: Partial match: 02/1 5393: ** Failers\P 5394: No match 5395: \P 5396: No match 5397: 123\P 5398: No match 5399: 33/4/04\P 5400: No match 5401: 3/13/04\P 5402: No match 5403: 0/1/2003\P 5404: No match 5405: 0/\P 5406: No match 5407: 02/0/\P 5408: No match 5409: 02/13\P 5410: No match 5411: 5412: /0{0,2}ABC/I 5413: Capturing subpattern count = 0 5414: No options 5415: No first char 5416: Need char = 'C' 5417: 5418: /\d{3,}ABC/I 5419: Capturing subpattern count = 0 5420: No options 5421: No first char 5422: Need char = 'C' 5423: 5424: /\d*ABC/I 5425: Capturing subpattern count = 0 5426: No options 5427: No first char 5428: Need char = 'C' 5429: 5430: /[abc]+DE/I 5431: Capturing subpattern count = 0 5432: No options 5433: No first char 5434: Need char = 'E' 5435: 5436: /[abc]?123/I 5437: Capturing subpattern count = 0 5438: No options 5439: No first char 5440: Need char = '3' 5441: 123\P 5442: 0: 123 5443: a\P 5444: Partial match: a 5445: b\P 5446: Partial match: b 5447: c\P 5448: Partial match: c 5449: c12\P 5450: Partial match: c12 5451: c123\P 5452: 0: c123 5453: 5454: /^(?:\d){3,5}X/I 5455: Capturing subpattern count = 0 5456: Options: anchored 5457: No first char 5458: Need char = 'X' 5459: 1\P 5460: Partial match: 1 5461: 123\P 5462: Partial match: 123 5463: 123X 5464: 0: 123X 5465: 1234\P 5466: Partial match: 1234 5467: 1234X 5468: 0: 1234X 5469: 12345\P 5470: Partial match: 12345 5471: 12345X 5472: 0: 12345X 5473: *** Failers 5474: No match 5475: 1X 5476: No match 5477: 123456\P 5478: No match 5479: 5480: /abc/I>testsavedregex 5481: Capturing subpattern count = 0 5482: No options 5483: First char = 'a' 5484: Need char = 'c' 5485: Compiled regex written to testsavedregex 5486: <testsavedregex 5487: Compiled regex loaded from testsavedregex 5488: No study data 5489: abc 5490: 0: abc 5491: ** Failers 5492: No match 5493: bca 5494: No match 5495: 5496: /abc/IF>testsavedregex 5497: Capturing subpattern count = 0 5498: No options 5499: First char = 'a' 5500: Need char = 'c' 5501: Compiled regex written to testsavedregex 5502: <testsavedregex 5503: Compiled regex (byte-inverted) loaded from testsavedregex 5504: No study data 5505: abc 5506: 0: abc 5507: ** Failers 5508: No match 5509: bca 5510: No match 5511: 5512: /(a|b)/IS>testsavedregex 5513: Capturing subpattern count = 1 5514: No options 5515: No first char 5516: No need char 5517: Subject length lower bound = 1 5518: Starting byte set: a b 5519: Compiled regex written to testsavedregex 5520: Study data written to testsavedregex 5521: <testsavedregex 5522: Compiled regex loaded from testsavedregex 5523: Study data loaded from testsavedregex 5524: abc 5525: 0: a 5526: 1: a 5527: ** Failers 5528: 0: a 5529: 1: a 5530: def 5531: No match 5532: 5533: /(a|b)/ISF>testsavedregex 5534: Capturing subpattern count = 1 5535: No options 5536: No first char 5537: No need char 5538: Subject length lower bound = 1 5539: Starting byte set: a b 5540: Compiled regex written to testsavedregex 5541: Study data written to testsavedregex 5542: <testsavedregex 5543: Compiled regex (byte-inverted) loaded from testsavedregex 5544: Study data loaded from testsavedregex 5545: abc 5546: 0: a 5547: 1: a 5548: ** Failers 5549: 0: a 5550: 1: a 5551: def 5552: No match 5553: 5554: ~<(\w+)/?>(.)*</(\1)>~smgI 5555: Capturing subpattern count = 3 5556: Max back reference = 1 5557: Options: multiline dotall 5558: First char = '<' 5559: Need char = '>' 5560: <!DOCTYPE seite SYSTEM "http://www.lco.lineas.de/xmlCms.dtd">\n<seite>\n<dokumenteninformation>\n<seitentitel>Partner der LCO</seitentitel>\n<sprache>de</sprache>\n<seitenbeschreibung>Partner der LINEAS Consulting\nGmbH</seitenbeschreibung>\n<schluesselworte>LINEAS Consulting GmbH Hamburg\nPartnerfirmen</schluesselworte>\n<revisit>30 days</revisit>\n<robots>index,follow</robots>\n<menueinformation>\n<aktiv>ja</aktiv>\n<menueposition>3</menueposition>\n<menuetext>Partner</menuetext>\n</menueinformation>\n<lastedited>\n<autor>LCO</autor>\n<firma>LINEAS Consulting</firma>\n<datum>15.10.2003</datum>\n</lastedited>\n</dokumenteninformation>\n<inhalt>\n\n<absatzueberschrift>Die Partnerfirmen der LINEAS Consulting\nGmbH</absatzueberschrift>\n\n<absatz><link ziel="http://www.ca.com/" zielfenster="_blank">\n<bild name="logo_ca.gif" rahmen="no"/></link> <link\nziel="http://www.ey.com/" zielfenster="_blank"><bild\nname="logo_euy.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><link ziel="http://www.cisco.de/" zielfenster="_blank">\n<bild name="logo_cisco.gif" rahmen="ja"/></link></absatz>\n\n<absatz><link ziel="http://www.atelion.de/"\nzielfenster="_blank"><bild\nname="logo_atelion.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><link ziel="http://www.line-information.de/"\nzielfenster="_blank">\n<bild name="logo_line_information.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><bild name="logo_aw.gif" rahmen="no"/></absatz>\n\n<absatz><link ziel="http://www.incognis.de/"\nzielfenster="_blank"><bild\nname="logo_incognis.gif" rahmen="no"/></link></absatz>\n\n<absatz><link ziel="http://www.addcraft.com/"\nzielfenster="_blank"><bild\nname="logo_addcraft.gif" rahmen="no"/></link></absatz>\n\n<absatz><link ziel="http://www.comendo.com/"\nzielfenster="_blank"><bild\nname="logo_comendo.gif" rahmen="no"/></link></absatz>\n\n</inhalt>\n</seite> 5561: 0: <seite>\x0a<dokumenteninformation>\x0a<seitentitel>Partner der LCO</seitentitel>\x0a<sprache>de</sprache>\x0a<seitenbeschreibung>Partner der LINEAS Consulting\x0aGmbH</seitenbeschreibung>\x0a<schluesselworte>LINEAS Consulting GmbH Hamburg\x0aPartnerfirmen</schluesselworte>\x0a<revisit>30 days</revisit>\x0a<robots>index,follow</robots>\x0a<menueinformation>\x0a<aktiv>ja</aktiv>\x0a<menueposition>3</menueposition>\x0a<menuetext>Partner</menuetext>\x0a</menueinformation>\x0a<lastedited>\x0a<autor>LCO</autor>\x0a<firma>LINEAS Consulting</firma>\x0a<datum>15.10.2003</datum>\x0a</lastedited>\x0a</dokumenteninformation>\x0a<inhalt>\x0a\x0a<absatzueberschrift>Die Partnerfirmen der LINEAS Consulting\x0aGmbH</absatzueberschrift>\x0a\x0a<absatz><link ziel="http://www.ca.com/" zielfenster="_blank">\x0a<bild name="logo_ca.gif" rahmen="no"/></link> <link\x0aziel="http://www.ey.com/" zielfenster="_blank"><bild\x0aname="logo_euy.gif" rahmen="no"/></link>\x0a</absatz>\x0a\x0a<absatz><link ziel="http://www.cisco.de/" zielfenster="_blank">\x0a<bild name="logo_cisco.gif" rahmen="ja"/></link></absatz>\x0a\x0a<absatz><link ziel="http://www.atelion.de/"\x0azielfenster="_blank"><bild\x0aname="logo_atelion.gif" rahmen="no"/></link>\x0a</absatz>\x0a\x0a<absatz><link ziel="http://www.line-information.de/"\x0azielfenster="_blank">\x0a<bild name="logo_line_information.gif" rahmen="no"/></link>\x0a</absatz>\x0a\x0a<absatz><bild name="logo_aw.gif" rahmen="no"/></absatz>\x0a\x0a<absatz><link ziel="http://www.incognis.de/"\x0azielfenster="_blank"><bild\x0aname="logo_incognis.gif" rahmen="no"/></link></absatz>\x0a\x0a<absatz><link ziel="http://www.addcraft.com/"\x0azielfenster="_blank"><bild\x0aname="logo_addcraft.gif" rahmen="no"/></link></absatz>\x0a\x0a<absatz><link ziel="http://www.comendo.com/"\x0azielfenster="_blank"><bild\x0aname="logo_comendo.gif" rahmen="no"/></link></absatz>\x0a\x0a</inhalt>\x0a</seite> 5562: 1: seite 5563: 2: \x0a 5564: 3: seite 5565: 5566: /^a/IF 5567: Capturing subpattern count = 0 5568: Options: anchored 5569: No first char 5570: No need char 5571: 5572: /line\nbreak/I 5573: Capturing subpattern count = 0 5574: Contains explicit CR or LF match 5575: No options 5576: First char = 'l' 5577: Need char = 'k' 5578: this is a line\nbreak 5579: 0: line\x0abreak 5580: line one\nthis is a line\nbreak in the second line 5581: 0: line\x0abreak 5582: 5583: /line\nbreak/If 5584: Capturing subpattern count = 0 5585: Contains explicit CR or LF match 5586: Options: firstline 5587: First char = 'l' 5588: Need char = 'k' 5589: this is a line\nbreak 5590: 0: line\x0abreak 5591: ** Failers 5592: No match 5593: line one\nthis is a line\nbreak in the second line 5594: No match 5595: 5596: /line\nbreak/Imf 5597: Capturing subpattern count = 0 5598: Contains explicit CR or LF match 5599: Options: multiline firstline 5600: First char = 'l' 5601: Need char = 'k' 5602: this is a line\nbreak 5603: 0: line\x0abreak 5604: ** Failers 5605: No match 5606: line one\nthis is a line\nbreak in the second line 5607: No match 5608: 5609: /ab.cd/P 5610: ab-cd 5611: 0: ab-cd 5612: ab=cd 5613: 0: ab=cd 5614: ** Failers 5615: No match: POSIX code 17: match failed 5616: ab\ncd 5617: No match: POSIX code 17: match failed 5618: 5619: /ab.cd/Ps 5620: ab-cd 5621: 0: ab-cd 5622: ab=cd 5623: 0: ab=cd 5624: ab\ncd 5625: 0: ab\x0acd 5626: 5627: /(?i)(?-i)AbCd/I 5628: Capturing subpattern count = 0 5629: No options 5630: First char = 'A' 5631: Need char = 'd' 5632: AbCd 5633: 0: AbCd 5634: ** Failers 5635: No match 5636: abcd 5637: No match 5638: 5639: /a{11111111111111111111}/I 5640: Failed: number too big in {} quantifier at offset 22 5641: 5642: /(){64294967295}/I 5643: Failed: number too big in {} quantifier at offset 14 5644: 5645: /(){2,4294967295}/I 5646: Failed: number too big in {} quantifier at offset 15 5647: 5648: "(?i:a)(?i:b)(?i:c)(?i:d)(?i:e)(?i:f)(?i:g)(?i:h)(?i:i)(?i:j)(k)(?i:l)A\1B"I 5649: Capturing subpattern count = 1 5650: Max back reference = 1 5651: No options 5652: First char = 'a' (caseless) 5653: Need char = 'B' 5654: abcdefghijklAkB 5655: 0: abcdefghijklAkB 5656: 1: k 5657: 5658: "(?P<n0>a)(?P<n1>b)(?P<n2>c)(?P<n3>d)(?P<n4>e)(?P<n5>f)(?P<n6>g)(?P<n7>h)(?P<n8>i)(?P<n9>j)(?P<n10>k)(?P<n11>l)A\11B"I 5659: Capturing subpattern count = 12 5660: Max back reference = 11 5661: Named capturing subpatterns: 5662: n0 1 5663: n1 2 5664: n10 11 5665: n11 12 5666: n2 3 5667: n3 4 5668: n4 5 5669: n5 6 5670: n6 7 5671: n7 8 5672: n8 9 5673: n9 10 5674: No options 5675: First char = 'a' 5676: Need char = 'B' 5677: abcdefghijklAkB 5678: 0: abcdefghijklAkB 5679: 1: a 5680: 2: b 5681: 3: c 5682: 4: d 5683: 5: e 5684: 6: f 5685: 7: g 5686: 8: h 5687: 9: i 5688: 10: j 5689: 11: k 5690: 12: l 5691: 5692: "(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)A\11B"I 5693: Capturing subpattern count = 12 5694: Max back reference = 11 5695: No options 5696: First char = 'a' 5697: Need char = 'B' 5698: abcdefghijklAkB 5699: 0: abcdefghijklAkB 5700: 1: a 5701: 2: b 5702: 3: c 5703: 4: d 5704: 5: e 5705: 6: f 5706: 7: g 5707: 8: h 5708: 9: i 5709: 10: j 5710: 11: k 5711: 12: l 5712: 5713: "(?P<name0>a)(?P<name1>a)(?P<name2>a)(?P<name3>a)(?P<name4>a)(?P<name5>a)(?P<name6>a)(?P<name7>a)(?P<name8>a)(?P<name9>a)(?P<name10>a)(?P<name11>a)(?P<name12>a)(?P<name13>a)(?P<name14>a)(?P<name15>a)(?P<name16>a)(?P<name17>a)(?P<name18>a)(?P<name19>a)(?P<name20>a)(?P<name21>a)(?P<name22>a)(?P<name23>a)(?P<name24>a)(?P<name25>a)(?P<name26>a)(?P<name27>a)(?P<name28>a)(?P<name29>a)(?P<name30>a)(?P<name31>a)(?P<name32>a)(?P<name33>a)(?P<name34>a)(?P<name35>a)(?P<name36>a)(?P<name37>a)(?P<name38>a)(?P<name39>a)(?P<name40>a)(?P<name41>a)(?P<name42>a)(?P<name43>a)(?P<name44>a)(?P<name45>a)(?P<name46>a)(?P<name47>a)(?P<name48>a)(?P<name49>a)(?P<name50>a)(?P<name51>a)(?P<name52>a)(?P<name53>a)(?P<name54>a)(?P<name55>a)(?P<name56>a)(?P<name57>a)(?P<name58>a)(?P<name59>a)(?P<name60>a)(?P<name61>a)(?P<name62>a)(?P<name63>a)(?P<name64>a)(?P<name65>a)(?P<name66>a)(?P<name67>a)(?P<name68>a)(?P<name69>a)(?P<name70>a)(?P<name71>a)(?P<name72>a)(?P<name73>a)(?P<name74>a)(?P<name75>a)(?P<name76>a)(?P<name77>a)(?P<name78>a)(?P<name79>a)(?P<name80>a)(?P<name81>a)(?P<name82>a)(?P<name83>a)(?P<name84>a)(?P<name85>a)(?P<name86>a)(?P<name87>a)(?P<name88>a)(?P<name89>a)(?P<name90>a)(?P<name91>a)(?P<name92>a)(?P<name93>a)(?P<name94>a)(?P<name95>a)(?P<name96>a)(?P<name97>a)(?P<name98>a)(?P<name99>a)(?P<name100>a)"I 5714: Capturing subpattern count = 101 5715: Named capturing subpatterns: 5716: name0 1 5717: name1 2 5718: name10 11 5719: name100 101 5720: name11 12 5721: name12 13 5722: name13 14 5723: name14 15 5724: name15 16 5725: name16 17 5726: name17 18 5727: name18 19 5728: name19 20 5729: name2 3 5730: name20 21 5731: name21 22 5732: name22 23 5733: name23 24 5734: name24 25 5735: name25 26 5736: name26 27 5737: name27 28 5738: name28 29 5739: name29 30 5740: name3 4 5741: name30 31 5742: name31 32 5743: name32 33 5744: name33 34 5745: name34 35 5746: name35 36 5747: name36 37 5748: name37 38 5749: name38 39 5750: name39 40 5751: name4 5 5752: name40 41 5753: name41 42 5754: name42 43 5755: name43 44 5756: name44 45 5757: name45 46 5758: name46 47 5759: name47 48 5760: name48 49 5761: name49 50 5762: name5 6 5763: name50 51 5764: name51 52 5765: name52 53 5766: name53 54 5767: name54 55 5768: name55 56 5769: name56 57 5770: name57 58 5771: name58 59 5772: name59 60 5773: name6 7 5774: name60 61 5775: name61 62 5776: name62 63 5777: name63 64 5778: name64 65 5779: name65 66 5780: name66 67 5781: name67 68 5782: name68 69 5783: name69 70 5784: name7 8 5785: name70 71 5786: name71 72 5787: name72 73 5788: name73 74 5789: name74 75 5790: name75 76 5791: name76 77 5792: name77 78 5793: name78 79 5794: name79 80 5795: name8 9 5796: name80 81 5797: name81 82 5798: name82 83 5799: name83 84 5800: name84 85 5801: name85 86 5802: name86 87 5803: name87 88 5804: name88 89 5805: name89 90 5806: name9 10 5807: name90 91 5808: name91 92 5809: name92 93 5810: name93 94 5811: name94 95 5812: name95 96 5813: name96 97 5814: name97 98 5815: name98 99 5816: name99 100 5817: No options 5818: First char = 'a' 5819: Need char = 'a' 5820: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5821: Matched, but too many substrings 5822: 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5823: 1: a 5824: 2: a 5825: 3: a 5826: 4: a 5827: 5: a 5828: 6: a 5829: 7: a 5830: 8: a 5831: 9: a 5832: 10: a 5833: 11: a 5834: 12: a 5835: 13: a 5836: 14: a 5837: 5838: "(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)"I 5839: Capturing subpattern count = 101 5840: No options 5841: First char = 'a' 5842: Need char = 'a' 5843: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5844: Matched, but too many substrings 5845: 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5846: 1: a 5847: 2: a 5848: 3: a 5849: 4: a 5850: 5: a 5851: 6: a 5852: 7: a 5853: 8: a 5854: 9: a 5855: 10: a 5856: 11: a 5857: 12: a 5858: 13: a 5859: 14: a 5860: 5861: /[^()]*(?:\((?R)\)[^()]*)*/I 5862: Capturing subpattern count = 0 5863: No options 5864: No first char 5865: No need char 5866: (this(and)that 5867: 0: 5868: (this(and)that) 5869: 0: (this(and)that) 5870: (this(and)that)stuff 5871: 0: (this(and)that)stuff 5872: 5873: /[^()]*(?:\((?>(?R))\)[^()]*)*/I 5874: Capturing subpattern count = 0 5875: No options 5876: No first char 5877: No need char 5878: (this(and)that 5879: 0: 5880: (this(and)that) 5881: 0: (this(and)that) 5882: 5883: /[^()]*(?:\((?R)\))*[^()]*/I 5884: Capturing subpattern count = 0 5885: No options 5886: No first char 5887: No need char 5888: (this(and)that 5889: 0: 5890: (this(and)that) 5891: 0: (this(and)that) 5892: 5893: /(?:\((?R)\))*[^()]*/I 5894: Capturing subpattern count = 0 5895: No options 5896: No first char 5897: No need char 5898: (this(and)that 5899: 0: 5900: (this(and)that) 5901: 0: 5902: ((this)) 5903: 0: ((this)) 5904: 5905: /(?:\((?R)\))|[^()]*/I 5906: Capturing subpattern count = 0 5907: No options 5908: No first char 5909: No need char 5910: (this(and)that 5911: 0: 5912: (this(and)that) 5913: 0: 5914: (this) 5915: 0: (this) 5916: ((this)) 5917: 0: ((this)) 5918: 5919: /a(b)c/PN 5920: abc 5921: Matched with REG_NOSUB 5922: 5923: /a(?P<name>b)c/PN 5924: abc 5925: Matched with REG_NOSUB 5926: 5927: /\x{100}/I 5928: Failed: character value in \x{...} sequence is too large at offset 6 5929: 5930: /\x{0000ff}/I 5931: Capturing subpattern count = 0 5932: No options 5933: First char = 255 5934: No need char 5935: 5936: /^((?P<A>a1)|(?P<A>a2)b)/I 5937: Failed: two named subpatterns have the same name at offset 17 5938: 5939: /^((?P<A>a1)|(?P<A>a2)b)/IJ 5940: Capturing subpattern count = 3 5941: Named capturing subpatterns: 5942: A 2 5943: A 3 5944: Options: anchored dupnames 5945: No first char 5946: No need char 5947: a1b\CA 5948: 0: a1 5949: 1: a1 5950: 2: a1 5951: C a1 (2) A 5952: a2b\CA 5953: 0: a2b 5954: 1: a2b 5955: 2: <unset> 5956: 3: a2 5957: C a2 (2) A 5958: ** Failers 5959: No match 5960: a1b\CZ\CA 5961: no parentheses with name "Z" 5962: 0: a1 5963: 1: a1 5964: 2: a1 5965: copy substring Z failed -7 5966: C a1 (2) A 5967: 5968: /^(?P<A>a)(?P<A>b)/IJ 5969: Capturing subpattern count = 2 5970: Named capturing subpatterns: 5971: A 1 5972: A 2 5973: Options: anchored dupnames 5974: No first char 5975: No need char 5976: ab\CA 5977: 0: ab 5978: 1: a 5979: 2: b 5980: C a (1) A 5981: 5982: /^(?P<A>a)(?P<A>b)|cd/IJ 5983: Capturing subpattern count = 2 5984: Named capturing subpatterns: 5985: A 1 5986: A 2 5987: Options: dupnames 5988: No first char 5989: No need char 5990: ab\CA 5991: 0: ab 5992: 1: a 5993: 2: b 5994: C a (1) A 5995: cd\CA 5996: 0: cd 5997: copy substring A failed -7 5998: 5999: /^(?P<A>a)(?P<A>b)|cd(?P<A>ef)(?P<A>gh)/IJ 6000: Capturing subpattern count = 4 6001: Named capturing subpatterns: 6002: A 1 6003: A 2 6004: A 3 6005: A 4 6006: Options: dupnames 6007: No first char 6008: No need char 6009: cdefgh\CA 6010: 0: cdefgh 6011: 1: <unset> 6012: 2: <unset> 6013: 3: ef 6014: 4: gh 6015: C ef (2) A 6016: 6017: /^((?P<A>a1)|(?P<A>a2)b)/IJ 6018: Capturing subpattern count = 3 6019: Named capturing subpatterns: 6020: A 2 6021: A 3 6022: Options: anchored dupnames 6023: No first char 6024: No need char 6025: a1b\GA 6026: 0: a1 6027: 1: a1 6028: 2: a1 6029: G a1 (2) A 6030: a2b\GA 6031: 0: a2b 6032: 1: a2b 6033: 2: <unset> 6034: 3: a2 6035: G a2 (2) A 6036: ** Failers 6037: No match 6038: a1b\GZ\GA 6039: no parentheses with name "Z" 6040: 0: a1 6041: 1: a1 6042: 2: a1 6043: copy substring Z failed -7 6044: G a1 (2) A 6045: 6046: /^(?P<A>a)(?P<A>b)/IJ 6047: Capturing subpattern count = 2 6048: Named capturing subpatterns: 6049: A 1 6050: A 2 6051: Options: anchored dupnames 6052: No first char 6053: No need char 6054: ab\GA 6055: 0: ab 6056: 1: a 6057: 2: b 6058: G a (1) A 6059: 6060: /^(?P<A>a)(?P<A>b)|cd/IJ 6061: Capturing subpattern count = 2 6062: Named capturing subpatterns: 6063: A 1 6064: A 2 6065: Options: dupnames 6066: No first char 6067: No need char 6068: ab\GA 6069: 0: ab 6070: 1: a 6071: 2: b 6072: G a (1) A 6073: cd\GA 6074: 0: cd 6075: copy substring A failed -7 6076: 6077: /^(?P<A>a)(?P<A>b)|cd(?P<A>ef)(?P<A>gh)/IJ 6078: Capturing subpattern count = 4 6079: Named capturing subpatterns: 6080: A 1 6081: A 2 6082: A 3 6083: A 4 6084: Options: dupnames 6085: No first char 6086: No need char 6087: cdefgh\GA 6088: 0: cdefgh 6089: 1: <unset> 6090: 2: <unset> 6091: 3: ef 6092: 4: gh 6093: G ef (2) A 6094: 6095: /(?J)^((?P<A>a1)|(?P<A>a2)b)/I 6096: Capturing subpattern count = 3 6097: Named capturing subpatterns: 6098: A 2 6099: A 3 6100: Options: anchored dupnames 6101: Duplicate name status changes 6102: No first char 6103: No need char 6104: a1b\CA 6105: 0: a1 6106: 1: a1 6107: 2: a1 6108: C a1 (2) A 6109: a2b\CA 6110: 0: a2b 6111: 1: a2b 6112: 2: <unset> 6113: 3: a2 6114: C a2 (2) A 6115: 6116: /^(?P<A>a) (?J:(?P<B>b)(?P<B>c)) (?P<A>d)/I 6117: Failed: two named subpatterns have the same name at offset 37 6118: 6119: / In this next test, J is not set at the outer level; consequently it isn't 6120: set in the pattern's options; consequently pcre_get_named_substring() produces 6121: a random value. /Ix 6122: Capturing subpattern count = 1 6123: Options: extended 6124: First char = 'I' 6125: Need char = 'e' 6126: 6127: /^(?P<A>a) (?J:(?P<B>b)(?P<B>c)) (?P<C>d)/I 6128: Capturing subpattern count = 4 6129: Named capturing subpatterns: 6130: A 1 6131: B 2 6132: B 3 6133: C 4 6134: Options: anchored 6135: Duplicate name status changes 6136: No first char 6137: No need char 6138: a bc d\CA\CB\CC 6139: 0: a bc d 6140: 1: a 6141: 2: b 6142: 3: c 6143: 4: d 6144: C a (1) A 6145: C b (1) B 6146: C d (1) C 6147: 6148: /^(?P<A>a)?(?(A)a|b)/I 6149: Capturing subpattern count = 1 6150: Named capturing subpatterns: 6151: A 1 6152: Options: anchored 6153: No first char 6154: No need char 6155: aabc 6156: 0: aa 6157: 1: a 6158: bc 6159: 0: b 6160: ** Failers 6161: No match 6162: abc 6163: No match 6164: 6165: /(?:(?(ZZ)a|b)(?P<ZZ>X))+/I 6166: Capturing subpattern count = 1 6167: Named capturing subpatterns: 6168: ZZ 1 6169: No options 6170: No first char 6171: Need char = 'X' 6172: bXaX 6173: 0: bXaX 6174: 1: X 6175: 6176: /(?:(?(2y)a|b)(X))+/I 6177: Failed: reference to non-existent subpattern at offset 9 6178: 6179: /(?:(?(ZA)a|b)(?P<ZZ>X))+/I 6180: Failed: reference to non-existent subpattern at offset 9 6181: 6182: /(?:(?(ZZ)a|b)(?(ZZ)a|b)(?P<ZZ>X))+/I 6183: Capturing subpattern count = 1 6184: Named capturing subpatterns: 6185: ZZ 1 6186: No options 6187: No first char 6188: Need char = 'X' 6189: bbXaaX 6190: 0: bbXaaX 6191: 1: X 6192: 6193: /(?:(?(ZZ)a|\(b\))\\(?P<ZZ>X))+/I 6194: Capturing subpattern count = 1 6195: Named capturing subpatterns: 6196: ZZ 1 6197: No options 6198: No first char 6199: Need char = 'X' 6200: (b)\\Xa\\X 6201: 0: (b)\Xa\X 6202: 1: X 6203: 6204: /(?P<ABC/I 6205: Failed: syntax error in subpattern name (missing terminator) at offset 7 6206: 6207: /(?:(?(A)(?P=A)a|b)(?P<A>X|Y))+/I 6208: Capturing subpattern count = 1 6209: Max back reference = 1 6210: Named capturing subpatterns: 6211: A 1 6212: No options 6213: No first char 6214: No need char 6215: bXXaYYaY 6216: 0: bXXaYYaY 6217: 1: Y 6218: bXYaXXaX 6219: 0: bX 6220: 1: X 6221: 6222: /()()()()()()()()()(?:(?(A)(?P=A)a|b)(?P<A>X|Y))+/I 6223: Capturing subpattern count = 10 6224: Max back reference = 10 6225: Named capturing subpatterns: 6226: A 10 6227: No options 6228: No first char 6229: No need char 6230: bXXaYYaY 6231: 0: bXXaYYaY 6232: 1: 6233: 2: 6234: 3: 6235: 4: 6236: 5: 6237: 6: 6238: 7: 6239: 8: 6240: 9: 6241: 10: Y 6242: 6243: /\777/I 6244: Failed: octal value is greater than \377 (not in UTF-8 mode) at offset 3 6245: 6246: /\s*,\s*/IS 6247: Capturing subpattern count = 0 6248: No options 6249: No first char 6250: Need char = ',' 6251: Subject length lower bound = 1 6252: Starting byte set: \x09 \x0a \x0c \x0d \x20 , 6253: \x0b,\x0b 6254: 0: , 6255: \x0c,\x0d 6256: 0: \x0c,\x0d 6257: 6258: /^abc/Im 6259: Capturing subpattern count = 0 6260: Options: multiline 6261: First char at start or follows newline 6262: Need char = 'c' 6263: xyz\nabc 6264: 0: abc 6265: xyz\nabc\<lf> 6266: 0: abc 6267: xyz\r\nabc\<lf> 6268: 0: abc 6269: xyz\rabc\<cr> 6270: 0: abc 6271: xyz\r\nabc\<crlf> 6272: 0: abc 6273: ** Failers 6274: No match 6275: xyz\nabc\<cr> 6276: No match 6277: xyz\r\nabc\<cr> 6278: No match 6279: xyz\nabc\<crlf> 6280: No match 6281: xyz\rabc\<crlf> 6282: No match 6283: xyz\rabc\<lf> 6284: No match 6285: 6286: /abc$/Im<lf> 6287: Capturing subpattern count = 0 6288: Options: multiline 6289: Forced newline sequence: LF 6290: First char = 'a' 6291: Need char = 'c' 6292: xyzabc 6293: 0: abc 6294: xyzabc\n 6295: 0: abc 6296: xyzabc\npqr 6297: 0: abc 6298: xyzabc\r\<cr> 6299: 0: abc 6300: xyzabc\rpqr\<cr> 6301: 0: abc 6302: xyzabc\r\n\<crlf> 6303: 0: abc 6304: xyzabc\r\npqr\<crlf> 6305: 0: abc 6306: ** Failers 6307: No match 6308: xyzabc\r 6309: No match 6310: xyzabc\rpqr 6311: No match 6312: xyzabc\r\n 6313: No match 6314: xyzabc\r\npqr 6315: No match 6316: 6317: /^abc/Im<cr> 6318: Capturing subpattern count = 0 6319: Options: multiline 6320: Forced newline sequence: CR 6321: First char at start or follows newline 6322: Need char = 'c' 6323: xyz\rabcdef 6324: 0: abc 6325: xyz\nabcdef\<lf> 6326: 0: abc 6327: ** Failers 6328: No match 6329: xyz\nabcdef 6330: No match 6331: 6332: /^abc/Im<lf> 6333: Capturing subpattern count = 0 6334: Options: multiline 6335: Forced newline sequence: LF 6336: First char at start or follows newline 6337: Need char = 'c' 6338: xyz\nabcdef 6339: 0: abc 6340: xyz\rabcdef\<cr> 6341: 0: abc 6342: ** Failers 6343: No match 6344: xyz\rabcdef 6345: No match 6346: 6347: /^abc/Im<crlf> 6348: Capturing subpattern count = 0 6349: Options: multiline 6350: Forced newline sequence: CRLF 6351: First char at start or follows newline 6352: Need char = 'c' 6353: xyz\r\nabcdef 6354: 0: abc 6355: xyz\rabcdef\<cr> 6356: 0: abc 6357: ** Failers 6358: No match 6359: xyz\rabcdef 6360: No match 6361: 6362: /^abc/Im<bad> 6363: Unknown newline type at: <bad> 6364: 6365: 6366: /abc/I 6367: Capturing subpattern count = 0 6368: No options 6369: First char = 'a' 6370: Need char = 'c' 6371: xyz\rabc\<bad> 6372: Unknown newline type at: <bad> 6373: abc 6374: 0: abc 6375: 6376: /.*/I<lf> 6377: Capturing subpattern count = 0 6378: Options: 6379: Forced newline sequence: LF 6380: First char at start or follows newline 6381: No need char 6382: abc\ndef 6383: 0: abc 6384: abc\rdef 6385: 0: abc\x0ddef 6386: abc\r\ndef 6387: 0: abc\x0d 6388: \<cr>abc\ndef 6389: 0: abc\x0adef 6390: \<cr>abc\rdef 6391: 0: abc 6392: \<cr>abc\r\ndef 6393: 0: abc 6394: \<crlf>abc\ndef 6395: 0: abc\x0adef 6396: \<crlf>abc\rdef 6397: 0: abc\x0ddef 6398: \<crlf>abc\r\ndef 6399: 0: abc 6400: 6401: /\w+(.)(.)?def/Is 6402: Capturing subpattern count = 2 6403: Options: dotall 6404: No first char 6405: Need char = 'f' 6406: abc\ndef 6407: 0: abc\x0adef 6408: 1: \x0a 6409: abc\rdef 6410: 0: abc\x0ddef 6411: 1: \x0d 6412: abc\r\ndef 6413: 0: abc\x0d\x0adef 6414: 1: \x0d 6415: 2: \x0a 6416: 6417: +((?:\s|//.*\\n|/[*](?:\\n|.)*?[*]/)*)+I 6418: Capturing subpattern count = 1 6419: No options 6420: No first char 6421: No need char 6422: /* this is a C style comment */\M 6423: Minimum match() limit = 120 6424: Minimum match() recursion limit = 6 6425: 0: /* this is a C style comment */ 6426: 1: /* this is a C style comment */ 6427: 6428: /(?P<B>25[0-5]|2[0-4]\d|[01]?\d?\d)(?:\.(?P>B)){3}/I 6429: Capturing subpattern count = 1 6430: Named capturing subpatterns: 6431: B 1 6432: No options 6433: No first char 6434: Need char = '.' 6435: 6436: /()()()()()()()()()()()()()()()()()()()() 6437: ()()()()()()()()()()()()()()()()()()()() 6438: ()()()()()()()()()()()()()()()()()()()() 6439: ()()()()()()()()()()()()()()()()()()()() 6440: ()()()()()()()()()()()()()()()()()()()() 6441: (.(.))/Ix 6442: Capturing subpattern count = 102 6443: Options: extended 6444: No first char 6445: No need char 6446: XY\O400 6447: 0: XY 6448: 1: 6449: 2: 6450: 3: 6451: 4: 6452: 5: 6453: 6: 6454: 7: 6455: 8: 6456: 9: 6457: 10: 6458: 11: 6459: 12: 6460: 13: 6461: 14: 6462: 15: 6463: 16: 6464: 17: 6465: 18: 6466: 19: 6467: 20: 6468: 21: 6469: 22: 6470: 23: 6471: 24: 6472: 25: 6473: 26: 6474: 27: 6475: 28: 6476: 29: 6477: 30: 6478: 31: 6479: 32: 6480: 33: 6481: 34: 6482: 35: 6483: 36: 6484: 37: 6485: 38: 6486: 39: 6487: 40: 6488: 41: 6489: 42: 6490: 43: 6491: 44: 6492: 45: 6493: 46: 6494: 47: 6495: 48: 6496: 49: 6497: 50: 6498: 51: 6499: 52: 6500: 53: 6501: 54: 6502: 55: 6503: 56: 6504: 57: 6505: 58: 6506: 59: 6507: 60: 6508: 61: 6509: 62: 6510: 63: 6511: 64: 6512: 65: 6513: 66: 6514: 67: 6515: 68: 6516: 69: 6517: 70: 6518: 71: 6519: 72: 6520: 73: 6521: 74: 6522: 75: 6523: 76: 6524: 77: 6525: 78: 6526: 79: 6527: 80: 6528: 81: 6529: 82: 6530: 83: 6531: 84: 6532: 85: 6533: 86: 6534: 87: 6535: 88: 6536: 89: 6537: 90: 6538: 91: 6539: 92: 6540: 93: 6541: 94: 6542: 95: 6543: 96: 6544: 97: 6545: 98: 6546: 99: 6547: 100: 6548: 101: XY 6549: 102: Y 6550: 6551: /(a*b|(?i:c*(?-i)d))/IS 6552: Capturing subpattern count = 1 6553: No options 6554: No first char 6555: No need char 6556: Subject length lower bound = 1 6557: Starting byte set: C a b c d 6558: 6559: /()[ab]xyz/IS 6560: Capturing subpattern count = 1 6561: No options 6562: No first char 6563: Need char = 'z' 6564: Subject length lower bound = 4 6565: Starting byte set: a b 6566: 6567: /(|)[ab]xyz/IS 6568: Capturing subpattern count = 1 6569: No options 6570: No first char 6571: Need char = 'z' 6572: Subject length lower bound = 4 6573: Starting byte set: a b 6574: 6575: /(|c)[ab]xyz/IS 6576: Capturing subpattern count = 1 6577: No options 6578: No first char 6579: Need char = 'z' 6580: Subject length lower bound = 4 6581: Starting byte set: a b c 6582: 6583: /(|c?)[ab]xyz/IS 6584: Capturing subpattern count = 1 6585: No options 6586: No first char 6587: Need char = 'z' 6588: Subject length lower bound = 4 6589: Starting byte set: a b c 6590: 6591: /(d?|c?)[ab]xyz/IS 6592: Capturing subpattern count = 1 6593: No options 6594: No first char 6595: Need char = 'z' 6596: Subject length lower bound = 4 6597: Starting byte set: a b c d 6598: 6599: /(d?|c)[ab]xyz/IS 6600: Capturing subpattern count = 1 6601: No options 6602: No first char 6603: Need char = 'z' 6604: Subject length lower bound = 4 6605: Starting byte set: a b c d 6606: 6607: /^a*b\d/DZ 6608: ------------------------------------------------------------------ 6609: Bra 6610: ^ 6611: a*+ 6612: b 6613: \d 6614: Ket 6615: End 6616: ------------------------------------------------------------------ 6617: Capturing subpattern count = 0 6618: Options: anchored 6619: No first char 6620: Need char = 'b' 6621: 6622: /^a*+b\d/DZ 6623: ------------------------------------------------------------------ 6624: Bra 6625: ^ 6626: a*+ 6627: b 6628: \d 6629: Ket 6630: End 6631: ------------------------------------------------------------------ 6632: Capturing subpattern count = 0 6633: Options: anchored 6634: No first char 6635: Need char = 'b' 6636: 6637: /^a*?b\d/DZ 6638: ------------------------------------------------------------------ 6639: Bra 6640: ^ 6641: a*+ 6642: b 6643: \d 6644: Ket 6645: End 6646: ------------------------------------------------------------------ 6647: Capturing subpattern count = 0 6648: Options: anchored 6649: No first char 6650: Need char = 'b' 6651: 6652: /^a+A\d/DZ 6653: ------------------------------------------------------------------ 6654: Bra 6655: ^ 6656: a++ 6657: A 6658: \d 6659: Ket 6660: End 6661: ------------------------------------------------------------------ 6662: Capturing subpattern count = 0 6663: Options: anchored 6664: No first char 6665: Need char = 'A' 6666: aaaA5 6667: 0: aaaA5 6668: ** Failers 6669: No match 6670: aaaa5 6671: No match 6672: 6673: /^a*A\d/IiDZ 6674: ------------------------------------------------------------------ 6675: Bra 6676: ^ 6677: a* 6678: NC A 6679: \d 6680: Ket 6681: End 6682: ------------------------------------------------------------------ 6683: Capturing subpattern count = 0 6684: Options: anchored caseless 6685: No first char 6686: Need char = 'A' (caseless) 6687: aaaA5 6688: 0: aaaA5 6689: aaaa5 6690: 0: aaaa5 6691: 6692: /(a*|b*)[cd]/IS 6693: Capturing subpattern count = 1 6694: No options 6695: No first char 6696: No need char 6697: Subject length lower bound = 1 6698: Starting byte set: a b c d 6699: 6700: /(a+|b*)[cd]/IS 6701: Capturing subpattern count = 1 6702: No options 6703: No first char 6704: No need char 6705: Subject length lower bound = 1 6706: Starting byte set: a b c d 6707: 6708: /(a*|b+)[cd]/IS 6709: Capturing subpattern count = 1 6710: No options 6711: No first char 6712: No need char 6713: Subject length lower bound = 1 6714: Starting byte set: a b c d 6715: 6716: /(a+|b+)[cd]/IS 6717: Capturing subpattern count = 1 6718: No options 6719: No first char 6720: No need char 6721: Subject length lower bound = 2 6722: Starting byte set: a b 6723: 6724: /(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 6725: (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 6726: ((( 6727: a 6728: )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 6729: )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 6730: ))) 6731: /Ix 6732: Capturing subpattern count = 203 6733: Options: extended 6734: First char = 'a' 6735: No need char 6736: large nest 6737: Matched, but too many substrings 6738: 0: a 6739: 1: a 6740: 2: a 6741: 3: a 6742: 4: a 6743: 5: a 6744: 6: a 6745: 7: a 6746: 8: a 6747: 9: a 6748: 10: a 6749: 11: a 6750: 12: a 6751: 13: a 6752: 14: a 6753: 6754: /a*\d/BZ 6755: ------------------------------------------------------------------ 6756: Bra 6757: a*+ 6758: \d 6759: Ket 6760: End 6761: ------------------------------------------------------------------ 6762: 6763: /a*\D/BZ 6764: ------------------------------------------------------------------ 6765: Bra 6766: a* 6767: \D 6768: Ket 6769: End 6770: ------------------------------------------------------------------ 6771: 6772: /0*\d/BZ 6773: ------------------------------------------------------------------ 6774: Bra 6775: 0* 6776: \d 6777: Ket 6778: End 6779: ------------------------------------------------------------------ 6780: 6781: /0*\D/BZ 6782: ------------------------------------------------------------------ 6783: Bra 6784: 0*+ 6785: \D 6786: Ket 6787: End 6788: ------------------------------------------------------------------ 6789: 6790: /a*\s/BZ 6791: ------------------------------------------------------------------ 6792: Bra 6793: a*+ 6794: \s 6795: Ket 6796: End 6797: ------------------------------------------------------------------ 6798: 6799: /a*\S/BZ 6800: ------------------------------------------------------------------ 6801: Bra 6802: a* 6803: \S 6804: Ket 6805: End 6806: ------------------------------------------------------------------ 6807: 6808: / *\s/BZ 6809: ------------------------------------------------------------------ 6810: Bra 6811: * 6812: \s 6813: Ket 6814: End 6815: ------------------------------------------------------------------ 6816: 6817: / *\S/BZ 6818: ------------------------------------------------------------------ 6819: Bra 6820: *+ 6821: \S 6822: Ket 6823: End 6824: ------------------------------------------------------------------ 6825: 6826: /a*\w/BZ 6827: ------------------------------------------------------------------ 6828: Bra 6829: a* 6830: \w 6831: Ket 6832: End 6833: ------------------------------------------------------------------ 6834: 6835: /a*\W/BZ 6836: ------------------------------------------------------------------ 6837: Bra 6838: a*+ 6839: \W 6840: Ket 6841: End 6842: ------------------------------------------------------------------ 6843: 6844: /=*\w/BZ 6845: ------------------------------------------------------------------ 6846: Bra 6847: =*+ 6848: \w 6849: Ket 6850: End 6851: ------------------------------------------------------------------ 6852: 6853: /=*\W/BZ 6854: ------------------------------------------------------------------ 6855: Bra 6856: =* 6857: \W 6858: Ket 6859: End 6860: ------------------------------------------------------------------ 6861: 6862: /\d*a/BZ 6863: ------------------------------------------------------------------ 6864: Bra 6865: \d*+ 6866: a 6867: Ket 6868: End 6869: ------------------------------------------------------------------ 6870: 6871: /\d*2/BZ 6872: ------------------------------------------------------------------ 6873: Bra 6874: \d* 6875: 2 6876: Ket 6877: End 6878: ------------------------------------------------------------------ 6879: 6880: /\d*\d/BZ 6881: ------------------------------------------------------------------ 6882: Bra 6883: \d* 6884: \d 6885: Ket 6886: End 6887: ------------------------------------------------------------------ 6888: 6889: /\d*\D/BZ 6890: ------------------------------------------------------------------ 6891: Bra 6892: \d*+ 6893: \D 6894: Ket 6895: End 6896: ------------------------------------------------------------------ 6897: 6898: /\d*\s/BZ 6899: ------------------------------------------------------------------ 6900: Bra 6901: \d*+ 6902: \s 6903: Ket 6904: End 6905: ------------------------------------------------------------------ 6906: 6907: /\d*\S/BZ 6908: ------------------------------------------------------------------ 6909: Bra 6910: \d* 6911: \S 6912: Ket 6913: End 6914: ------------------------------------------------------------------ 6915: 6916: /\d*\w/BZ 6917: ------------------------------------------------------------------ 6918: Bra 6919: \d* 6920: \w 6921: Ket 6922: End 6923: ------------------------------------------------------------------ 6924: 6925: /\d*\W/BZ 6926: ------------------------------------------------------------------ 6927: Bra 6928: \d*+ 6929: \W 6930: Ket 6931: End 6932: ------------------------------------------------------------------ 6933: 6934: /\D*a/BZ 6935: ------------------------------------------------------------------ 6936: Bra 6937: \D* 6938: a 6939: Ket 6940: End 6941: ------------------------------------------------------------------ 6942: 6943: /\D*2/BZ 6944: ------------------------------------------------------------------ 6945: Bra 6946: \D*+ 6947: 2 6948: Ket 6949: End 6950: ------------------------------------------------------------------ 6951: 6952: /\D*\d/BZ 6953: ------------------------------------------------------------------ 6954: Bra 6955: \D*+ 6956: \d 6957: Ket 6958: End 6959: ------------------------------------------------------------------ 6960: 6961: /\D*\D/BZ 6962: ------------------------------------------------------------------ 6963: Bra 6964: \D* 6965: \D 6966: Ket 6967: End 6968: ------------------------------------------------------------------ 6969: 6970: /\D*\s/BZ 6971: ------------------------------------------------------------------ 6972: Bra 6973: \D* 6974: \s 6975: Ket 6976: End 6977: ------------------------------------------------------------------ 6978: 6979: /\D*\S/BZ 6980: ------------------------------------------------------------------ 6981: Bra 6982: \D* 6983: \S 6984: Ket 6985: End 6986: ------------------------------------------------------------------ 6987: 6988: /\D*\w/BZ 6989: ------------------------------------------------------------------ 6990: Bra 6991: \D* 6992: \w 6993: Ket 6994: End 6995: ------------------------------------------------------------------ 6996: 6997: /\D*\W/BZ 6998: ------------------------------------------------------------------ 6999: Bra 7000: \D* 7001: \W 7002: Ket 7003: End 7004: ------------------------------------------------------------------ 7005: 7006: /\s*a/BZ 7007: ------------------------------------------------------------------ 7008: Bra 7009: \s*+ 7010: a 7011: Ket 7012: End 7013: ------------------------------------------------------------------ 7014: 7015: /\s*2/BZ 7016: ------------------------------------------------------------------ 7017: Bra 7018: \s*+ 7019: 2 7020: Ket 7021: End 7022: ------------------------------------------------------------------ 7023: 7024: /\s*\d/BZ 7025: ------------------------------------------------------------------ 7026: Bra 7027: \s*+ 7028: \d 7029: Ket 7030: End 7031: ------------------------------------------------------------------ 7032: 7033: /\s*\D/BZ 7034: ------------------------------------------------------------------ 7035: Bra 7036: \s* 7037: \D 7038: Ket 7039: End 7040: ------------------------------------------------------------------ 7041: 7042: /\s*\s/BZ 7043: ------------------------------------------------------------------ 7044: Bra 7045: \s* 7046: \s 7047: Ket 7048: End 7049: ------------------------------------------------------------------ 7050: 7051: /\s*\S/BZ 7052: ------------------------------------------------------------------ 7053: Bra 7054: \s*+ 7055: \S 7056: Ket 7057: End 7058: ------------------------------------------------------------------ 7059: 7060: /\s*\w/BZ 7061: ------------------------------------------------------------------ 7062: Bra 7063: \s*+ 7064: \w 7065: Ket 7066: End 7067: ------------------------------------------------------------------ 7068: 7069: /\s*\W/BZ 7070: ------------------------------------------------------------------ 7071: Bra 7072: \s* 7073: \W 7074: Ket 7075: End 7076: ------------------------------------------------------------------ 7077: 7078: /\S*a/BZ 7079: ------------------------------------------------------------------ 7080: Bra 7081: \S* 7082: a 7083: Ket 7084: End 7085: ------------------------------------------------------------------ 7086: 7087: /\S*2/BZ 7088: ------------------------------------------------------------------ 7089: Bra 7090: \S* 7091: 2 7092: Ket 7093: End 7094: ------------------------------------------------------------------ 7095: 7096: /\S*\d/BZ 7097: ------------------------------------------------------------------ 7098: Bra 7099: \S* 7100: \d 7101: Ket 7102: End 7103: ------------------------------------------------------------------ 7104: 7105: /\S*\D/BZ 7106: ------------------------------------------------------------------ 7107: Bra 7108: \S* 7109: \D 7110: Ket 7111: End 7112: ------------------------------------------------------------------ 7113: 7114: /\S*\s/BZ 7115: ------------------------------------------------------------------ 7116: Bra 7117: \S*+ 7118: \s 7119: Ket 7120: End 7121: ------------------------------------------------------------------ 7122: 7123: /\S*\S/BZ 7124: ------------------------------------------------------------------ 7125: Bra 7126: \S* 7127: \S 7128: Ket 7129: End 7130: ------------------------------------------------------------------ 7131: 7132: /\S*\w/BZ 7133: ------------------------------------------------------------------ 7134: Bra 7135: \S* 7136: \w 7137: Ket 7138: End 7139: ------------------------------------------------------------------ 7140: 7141: /\S*\W/BZ 7142: ------------------------------------------------------------------ 7143: Bra 7144: \S* 7145: \W 7146: Ket 7147: End 7148: ------------------------------------------------------------------ 7149: 7150: /\w*a/BZ 7151: ------------------------------------------------------------------ 7152: Bra 7153: \w* 7154: a 7155: Ket 7156: End 7157: ------------------------------------------------------------------ 7158: 7159: /\w*2/BZ 7160: ------------------------------------------------------------------ 7161: Bra 7162: \w* 7163: 2 7164: Ket 7165: End 7166: ------------------------------------------------------------------ 7167: 7168: /\w*\d/BZ 7169: ------------------------------------------------------------------ 7170: Bra 7171: \w* 7172: \d 7173: Ket 7174: End 7175: ------------------------------------------------------------------ 7176: 7177: /\w*\D/BZ 7178: ------------------------------------------------------------------ 7179: Bra 7180: \w* 7181: \D 7182: Ket 7183: End 7184: ------------------------------------------------------------------ 7185: 7186: /\w*\s/BZ 7187: ------------------------------------------------------------------ 7188: Bra 7189: \w*+ 7190: \s 7191: Ket 7192: End 7193: ------------------------------------------------------------------ 7194: 7195: /\w*\S/BZ 7196: ------------------------------------------------------------------ 7197: Bra 7198: \w* 7199: \S 7200: Ket 7201: End 7202: ------------------------------------------------------------------ 7203: 7204: /\w*\w/BZ 7205: ------------------------------------------------------------------ 7206: Bra 7207: \w* 7208: \w 7209: Ket 7210: End 7211: ------------------------------------------------------------------ 7212: 7213: /\w*\W/BZ 7214: ------------------------------------------------------------------ 7215: Bra 7216: \w*+ 7217: \W 7218: Ket 7219: End 7220: ------------------------------------------------------------------ 7221: 7222: /\W*a/BZ 7223: ------------------------------------------------------------------ 7224: Bra 7225: \W*+ 7226: a 7227: Ket 7228: End 7229: ------------------------------------------------------------------ 7230: 7231: /\W*2/BZ 7232: ------------------------------------------------------------------ 7233: Bra 7234: \W*+ 7235: 2 7236: Ket 7237: End 7238: ------------------------------------------------------------------ 7239: 7240: /\W*\d/BZ 7241: ------------------------------------------------------------------ 7242: Bra 7243: \W*+ 7244: \d 7245: Ket 7246: End 7247: ------------------------------------------------------------------ 7248: 7249: /\W*\D/BZ 7250: ------------------------------------------------------------------ 7251: Bra 7252: \W* 7253: \D 7254: Ket 7255: End 7256: ------------------------------------------------------------------ 7257: 7258: /\W*\s/BZ 7259: ------------------------------------------------------------------ 7260: Bra 7261: \W* 7262: \s 7263: Ket 7264: End 7265: ------------------------------------------------------------------ 7266: 7267: /\W*\S/BZ 7268: ------------------------------------------------------------------ 7269: Bra 7270: \W* 7271: \S 7272: Ket 7273: End 7274: ------------------------------------------------------------------ 7275: 7276: /\W*\w/BZ 7277: ------------------------------------------------------------------ 7278: Bra 7279: \W*+ 7280: \w 7281: Ket 7282: End 7283: ------------------------------------------------------------------ 7284: 7285: /\W*\W/BZ 7286: ------------------------------------------------------------------ 7287: Bra 7288: \W* 7289: \W 7290: Ket 7291: End 7292: ------------------------------------------------------------------ 7293: 7294: /[^a]+a/BZ 7295: ------------------------------------------------------------------ 7296: Bra 7297: [^a]++ 7298: a 7299: Ket 7300: End 7301: ------------------------------------------------------------------ 7302: 7303: /[^a]+a/BZi 7304: ------------------------------------------------------------------ 7305: Bra 7306: [^A]++ 7307: NC a 7308: Ket 7309: End 7310: ------------------------------------------------------------------ 7311: 7312: /[^a]+A/BZi 7313: ------------------------------------------------------------------ 7314: Bra 7315: [^A]++ 7316: NC A 7317: Ket 7318: End 7319: ------------------------------------------------------------------ 7320: 7321: /[^a]+b/BZ 7322: ------------------------------------------------------------------ 7323: Bra 7324: [^a]+ 7325: b 7326: Ket 7327: End 7328: ------------------------------------------------------------------ 7329: 7330: /[^a]+\d/BZ 7331: ------------------------------------------------------------------ 7332: Bra 7333: [^a]+ 7334: \d 7335: Ket 7336: End 7337: ------------------------------------------------------------------ 7338: 7339: /a*[^a]/BZ 7340: ------------------------------------------------------------------ 7341: Bra 7342: a* 7343: [^a] 7344: Ket 7345: End 7346: ------------------------------------------------------------------ 7347: 7348: /(?P<abc>x)(?P<xyz>y)/I 7349: Capturing subpattern count = 2 7350: Named capturing subpatterns: 7351: abc 1 7352: xyz 2 7353: No options 7354: First char = 'x' 7355: Need char = 'y' 7356: xy\Cabc\Cxyz 7357: 0: xy 7358: 1: x 7359: 2: y 7360: C x (1) abc 7361: C y (1) xyz 7362: 7363: /(?<abc>x)(?'xyz'y)/I 7364: Capturing subpattern count = 2 7365: Named capturing subpatterns: 7366: abc 1 7367: xyz 2 7368: No options 7369: First char = 'x' 7370: Need char = 'y' 7371: xy\Cabc\Cxyz 7372: 0: xy 7373: 1: x 7374: 2: y 7375: C x (1) abc 7376: C y (1) xyz 7377: 7378: /(?<abc'x)(?'xyz'y)/I 7379: Failed: syntax error in subpattern name (missing terminator) at offset 6 7380: 7381: /(?<abc>x)(?'xyz>y)/I 7382: Failed: syntax error in subpattern name (missing terminator) at offset 15 7383: 7384: /(?P'abc'x)(?P<xyz>y)/I 7385: Failed: unrecognized character after (?P at offset 3 7386: 7387: /^(?:(?(ZZ)a|b)(?<ZZ>X))+/ 7388: bXaX 7389: 0: bXaX 7390: 1: X 7391: bXbX 7392: 0: bX 7393: 1: X 7394: ** Failers 7395: No match 7396: aXaX 7397: No match 7398: aXbX 7399: No match 7400: 7401: /^(?P>abc)(?<abcd>xxx)/ 7402: Failed: reference to non-existent subpattern at offset 8 7403: 7404: /^(?P>abc)(?<abc>x|y)/ 7405: xx 7406: 0: xx 7407: 1: x 7408: xy 7409: 0: xy 7410: 1: y 7411: yy 7412: 0: yy 7413: 1: y 7414: yx 7415: 0: yx 7416: 1: x 7417: 7418: /^(?P>abc)(?P<abc>x|y)/ 7419: xx 7420: 0: xx 7421: 1: x 7422: xy 7423: 0: xy 7424: 1: y 7425: yy 7426: 0: yy 7427: 1: y 7428: yx 7429: 0: yx 7430: 1: x 7431: 7432: /^((?(abc)a|b)(?<abc>x|y))+/ 7433: bxay 7434: 0: bxay 7435: 1: ay 7436: 2: y 7437: bxby 7438: 0: bx 7439: 1: bx 7440: 2: x 7441: ** Failers 7442: No match 7443: axby 7444: No match 7445: 7446: /^(((?P=abc)|X)(?<abc>x|y))+/ 7447: XxXxxx 7448: 0: XxXxxx 7449: 1: xx 7450: 2: x 7451: 3: x 7452: XxXyyx 7453: 0: XxXyyx 7454: 1: yx 7455: 2: y 7456: 3: x 7457: XxXyxx 7458: 0: XxXy 7459: 1: Xy 7460: 2: X 7461: 3: y 7462: ** Failers 7463: No match 7464: x 7465: No match 7466: 7467: /^(?1)(abc)/ 7468: abcabc 7469: 0: abcabc 7470: 1: abc 7471: 7472: /^(?:(?:\1|X)(a|b))+/ 7473: Xaaa 7474: 0: Xaaa 7475: 1: a 7476: Xaba 7477: 0: Xa 7478: 1: a 7479: 7480: /^[\E\Qa\E-\Qz\E]+/BZ 7481: ------------------------------------------------------------------ 7482: Bra 7483: ^ 7484: [a-z]+ 7485: Ket 7486: End 7487: ------------------------------------------------------------------ 7488: 7489: /^[a\Q]bc\E]/BZ 7490: ------------------------------------------------------------------ 7491: Bra 7492: ^ 7493: [\]a-c] 7494: Ket 7495: End 7496: ------------------------------------------------------------------ 7497: 7498: /^[a-\Q\E]/BZ 7499: ------------------------------------------------------------------ 7500: Bra 7501: ^ 7502: [\-a] 7503: Ket 7504: End 7505: ------------------------------------------------------------------ 7506: 7507: /^(?P>abc)[()](?<abc>)/BZ 7508: ------------------------------------------------------------------ 7509: Bra 7510: ^ 7511: Once 7512: Recurse 7513: Ket 7514: [()] 7515: CBra 1 7516: Ket 7517: Ket 7518: End 7519: ------------------------------------------------------------------ 7520: 7521: /^((?(abc)y)[()](?P<abc>x))+/BZ 7522: ------------------------------------------------------------------ 7523: Bra 7524: ^ 7525: CBra 1 7526: Cond 7527: 2 Cond nref 7528: y 7529: Ket 7530: [()] 7531: CBra 2 7532: x 7533: Ket 7534: KetRmax 7535: Ket 7536: End 7537: ------------------------------------------------------------------ 7538: (xy)x 7539: 0: (xy)x 7540: 1: y)x 7541: 2: x 7542: 7543: /^(?P>abc)\Q()\E(?<abc>)/BZ 7544: ------------------------------------------------------------------ 7545: Bra 7546: ^ 7547: Once 7548: Recurse 7549: Ket 7550: () 7551: CBra 1 7552: Ket 7553: Ket 7554: End 7555: ------------------------------------------------------------------ 7556: 7557: /^(?P>abc)[a\Q(]\E(](?<abc>)/BZ 7558: ------------------------------------------------------------------ 7559: Bra 7560: ^ 7561: Once 7562: Recurse 7563: Ket 7564: [(\]a] 7565: CBra 1 7566: Ket 7567: Ket 7568: End 7569: ------------------------------------------------------------------ 7570: 7571: /^(?P>abc) # this is (a comment) 7572: (?<abc>)/BZx 7573: ------------------------------------------------------------------ 7574: Bra 7575: ^ 7576: Once 7577: Recurse 7578: Ket 7579: CBra 1 7580: Ket 7581: Ket 7582: End 7583: ------------------------------------------------------------------ 7584: 7585: /^\W*(?:(?<one>(?<two>.)\W*(?&one)\W*\k<two>|)|(?<three>(?<four>.)\W*(?&three)\W*\k'four'|\W*.\W*))\W*$/Ii 7586: Capturing subpattern count = 4 7587: Max back reference = 4 7588: Named capturing subpatterns: 7589: four 4 7590: one 1 7591: three 3 7592: two 2 7593: Options: anchored caseless 7594: No first char 7595: No need char 7596: 1221 7597: 0: 1221 7598: 1: 1221 7599: 2: 1 7600: Satan, oscillate my metallic sonatas! 7601: 0: Satan, oscillate my metallic sonatas! 7602: 1: <unset> 7603: 2: <unset> 7604: 3: Satan, oscillate my metallic sonatas 7605: 4: S 7606: A man, a plan, a canal: Panama! 7607: 0: A man, a plan, a canal: Panama! 7608: 1: <unset> 7609: 2: <unset> 7610: 3: A man, a plan, a canal: Panama 7611: 4: A 7612: Able was I ere I saw Elba. 7613: 0: Able was I ere I saw Elba. 7614: 1: <unset> 7615: 2: <unset> 7616: 3: Able was I ere I saw Elba 7617: 4: A 7618: *** Failers 7619: No match 7620: The quick brown fox 7621: No match 7622: 7623: /(?=(\w+))\1:/I 7624: Capturing subpattern count = 1 7625: Max back reference = 1 7626: No options 7627: No first char 7628: Need char = ':' 7629: abcd: 7630: 0: abcd: 7631: 1: abcd 7632: 7633: /(?=(?'abc'\w+))\k<abc>:/I 7634: Capturing subpattern count = 1 7635: Max back reference = 1 7636: Named capturing subpatterns: 7637: abc 1 7638: No options 7639: No first char 7640: Need char = ':' 7641: abcd: 7642: 0: abcd: 7643: 1: abcd 7644: 7645: /(?'abc'a|b)(?<abc>d|e)\k<abc>{2}/J 7646: adaa 7647: 0: adaa 7648: 1: a 7649: 2: d 7650: ** Failers 7651: No match 7652: addd 7653: No match 7654: adbb 7655: No match 7656: 7657: /(?'abc'a|b)(?<abc>d|e)(?&abc){2}/J 7658: bdaa 7659: 0: bdaa 7660: 1: b 7661: 2: d 7662: bdab 7663: 0: bdab 7664: 1: b 7665: 2: d 7666: ** Failers 7667: No match 7668: bddd 7669: No match 7670: 7671: /(?(<bc))/ 7672: Failed: malformed number or name after (?( at offset 6 7673: 7674: /(?(''))/ 7675: Failed: assertion expected after (?( at offset 4 7676: 7677: /(?('R')stuff)/ 7678: Failed: reference to non-existent subpattern at offset 7 7679: 7680: /((abc (?(R) (?(R1)1) (?(R2)2) X | (?1) (?2) (?R) ))) /x 7681: abcabc1Xabc2XabcXabcabc 7682: 0: abcabc1Xabc2XabcX 7683: 1: abcabc1Xabc2XabcX 7684: 2: abcabc1Xabc2XabcX 7685: 7686: /(?<A> (?'B' abc (?(R) (?(R&A)1) (?(R&B)2) X | (?1) (?2) (?R) ))) /x 7687: abcabc1Xabc2XabcXabcabc 7688: 0: abcabc1Xabc2XabcX 7689: 1: abcabc1Xabc2XabcX 7690: 2: abcabc1Xabc2XabcX 7691: 7692: /(?<A> (?'B' abc (?(R) (?(R&1)1) (?(R&B)2) X | (?1) (?2) (?R) ))) /x 7693: Failed: reference to non-existent subpattern at offset 29 7694: 7695: /(?<1> (?'B' abc (?(R) (?(R&1)1) (?(R&B)2) X | (?1) (?2) (?R) ))) /x 7696: abcabc1Xabc2XabcXabcabc 7697: 0: abcabc1Xabc2XabcX 7698: 1: abcabc1Xabc2XabcX 7699: 2: abcabc1Xabc2XabcX 7700: 7701: /^(?(DEFINE) abc | xyz ) /x 7702: Failed: DEFINE group contains more than one branch at offset 22 7703: 7704: /(?(DEFINE) abc) xyz/xI 7705: Capturing subpattern count = 0 7706: Options: extended 7707: First char = 'x' 7708: Need char = 'z' 7709: 7710: /(?(DEFINE) abc){3} xyz/x 7711: Failed: repeating a DEFINE group is not allowed at offset 17 7712: 7713: /(a|)*\d/ 7714: \O0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7715: No match 7716: \O0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 7717: Matched, but too many substrings 7718: 7719: /^a.b/<lf> 7720: a\rb 7721: 0: a\x0db 7722: a\nb\<cr> 7723: 0: a\x0ab 7724: a\x85b\<anycrlf> 7725: 0: a\x85b 7726: ** Failers 7727: No match 7728: a\nb 7729: No match 7730: a\nb\<any> 7731: No match 7732: a\rb\<cr> 7733: No match 7734: a\rb\<any> 7735: No match 7736: a\x85b\<any> 7737: No match 7738: a\rb\<anycrlf> 7739: No match 7740: 7741: /^abc./mgx<any> 7742: abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x85abc7 JUNK 7743: 0: abc1 7744: 0: abc2 7745: 0: abc3 7746: 0: abc4 7747: 0: abc5 7748: 0: abc6 7749: 0: abc7 7750: 7751: /abc.$/mgx<any> 7752: abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc7 abc9 7753: 0: abc1 7754: 0: abc2 7755: 0: abc3 7756: 0: abc4 7757: 0: abc5 7758: 0: abc6 7759: 0: abc9 7760: 7761: /a/<cr><any> 7762: 7763: /a/<any><crlf> 7764: Failed: inconsistent NEWLINE options at offset 0 7765: 7766: /^a\Rb/<bsr_unicode> 7767: a\nb 7768: 0: a\x0ab 7769: a\rb 7770: 0: a\x0db 7771: a\r\nb 7772: 0: a\x0d\x0ab 7773: a\x0bb 7774: 0: a\x0bb 7775: a\x0cb 7776: 0: a\x0cb 7777: a\x85b 7778: 0: a\x85b 7779: ** Failers 7780: No match 7781: a\n\rb 7782: No match 7783: 7784: /^a\R*b/<bsr_unicode> 7785: ab 7786: 0: ab 7787: a\nb 7788: 0: a\x0ab 7789: a\rb 7790: 0: a\x0db 7791: a\r\nb 7792: 0: a\x0d\x0ab 7793: a\x0bb 7794: 0: a\x0bb 7795: a\x0cb 7796: 0: a\x0cb 7797: a\x85b 7798: 0: a\x85b 7799: a\n\rb 7800: 0: a\x0a\x0db 7801: a\n\r\x85\x0cb 7802: 0: a\x0a\x0d\x85\x0cb 7803: 7804: /^a\R+b/<bsr_unicode> 7805: a\nb 7806: 0: a\x0ab 7807: a\rb 7808: 0: a\x0db 7809: a\r\nb 7810: 0: a\x0d\x0ab 7811: a\x0bb 7812: 0: a\x0bb 7813: a\x0cb 7814: 0: a\x0cb 7815: a\x85b 7816: 0: a\x85b 7817: a\n\rb 7818: 0: a\x0a\x0db 7819: a\n\r\x85\x0cb 7820: 0: a\x0a\x0d\x85\x0cb 7821: ** Failers 7822: No match 7823: ab 7824: No match 7825: 7826: /^a\R{1,3}b/<bsr_unicode> 7827: a\nb 7828: 0: a\x0ab 7829: a\n\rb 7830: 0: a\x0a\x0db 7831: a\n\r\x85b 7832: 0: a\x0a\x0d\x85b 7833: a\r\n\r\nb 7834: 0: a\x0d\x0a\x0d\x0ab 7835: a\r\n\r\n\r\nb 7836: 0: a\x0d\x0a\x0d\x0a\x0d\x0ab 7837: a\n\r\n\rb 7838: 0: a\x0a\x0d\x0a\x0db 7839: a\n\n\r\nb 7840: 0: a\x0a\x0a\x0d\x0ab 7841: ** Failers 7842: No match 7843: a\n\n\n\rb 7844: No match 7845: a\r 7846: No match 7847: 7848: /^a[\R]b/<bsr_unicode> 7849: aRb 7850: 0: aRb 7851: ** Failers 7852: No match 7853: a\nb 7854: No match 7855: 7856: /(?&abc)X(?<abc>P)/I 7857: Capturing subpattern count = 1 7858: Named capturing subpatterns: 7859: abc 1 7860: No options 7861: No first char 7862: Need char = 'P' 7863: abcPXP123 7864: 0: PXP 7865: 1: P 7866: 7867: /(?1)X(?<abc>P)/I 7868: Capturing subpattern count = 1 7869: Named capturing subpatterns: 7870: abc 1 7871: No options 7872: No first char 7873: Need char = 'P' 7874: abcPXP123 7875: 0: PXP 7876: 1: P 7877: 7878: /(?:a(?&abc)b)*(?<abc>x)/ 7879: 123axbaxbaxbx456 7880: 0: axbaxbaxbx 7881: 1: x 7882: 123axbaxbaxb456 7883: 0: x 7884: 1: x 7885: 7886: /(?:a(?&abc)b){1,5}(?<abc>x)/ 7887: 123axbaxbaxbx456 7888: 0: axbaxbaxbx 7889: 1: x 7890: 7891: /(?:a(?&abc)b){2,5}(?<abc>x)/ 7892: 123axbaxbaxbx456 7893: 0: axbaxbaxbx 7894: 1: x 7895: 7896: /(?:a(?&abc)b){2,}(?<abc>x)/ 7897: 123axbaxbaxbx456 7898: 0: axbaxbaxbx 7899: 1: x 7900: 7901: /(abc)(?i:(?1))/ 7902: defabcabcxyz 7903: 0: abcabc 7904: 1: abc 7905: DEFabcABCXYZ 7906: No match 7907: 7908: /(abc)(?:(?i)(?1))/ 7909: defabcabcxyz 7910: 0: abcabc 7911: 1: abc 7912: DEFabcABCXYZ 7913: No match 7914: 7915: /^(a)\g-2/ 7916: Failed: reference to non-existent subpattern at offset 7 7917: 7918: /^(a)\g/ 7919: Failed: a numbered reference must not be zero at offset 5 7920: 7921: /^(a)\g{0}/ 7922: Failed: a numbered reference must not be zero at offset 8 7923: 7924: /^(a)\g{3/ 7925: Failed: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number at offset 8 7926: 7927: /^(a)\g{4a}/ 7928: Failed: reference to non-existent subpattern at offset 9 7929: 7930: /^a.b/<lf> 7931: a\rb 7932: 0: a\x0db 7933: *** Failers 7934: No match 7935: a\nb 7936: No match 7937: 7938: /.+foo/ 7939: afoo 7940: 0: afoo 7941: ** Failers 7942: No match 7943: \r\nfoo 7944: No match 7945: \nfoo 7946: No match 7947: 7948: /.+foo/<crlf> 7949: afoo 7950: 0: afoo 7951: \nfoo 7952: 0: \x0afoo 7953: ** Failers 7954: No match 7955: \r\nfoo 7956: No match 7957: 7958: /.+foo/<any> 7959: afoo 7960: 0: afoo 7961: ** Failers 7962: No match 7963: \nfoo 7964: No match 7965: \r\nfoo 7966: No match 7967: 7968: /.+foo/s 7969: afoo 7970: 0: afoo 7971: \r\nfoo 7972: 0: \x0d\x0afoo 7973: \nfoo 7974: 0: \x0afoo 7975: 7976: /^$/mg<any> 7977: abc\r\rxyz 7978: 0: 7979: abc\n\rxyz 7980: 0: 7981: ** Failers 7982: No match 7983: abc\r\nxyz 7984: No match 7985: 7986: /(?m)^$/<any>g+ 7987: abc\r\n\r\n 7988: 0: 7989: 0+ \x0d\x0a 7990: 7991: /(?m)^$|^\r\n/<any>g+ 7992: abc\r\n\r\n 7993: 0: 7994: 0+ \x0d\x0a 7995: 0: \x0d\x0a 7996: 0+ 7997: 7998: /(?m)$/<any>g+ 7999: abc\r\n\r\n 8000: 0: 8001: 0+ \x0d\x0a\x0d\x0a 8002: 0: 8003: 0+ \x0d\x0a 8004: 0: 8005: 0+ 8006: 8007: /abc.$/mgx<anycrlf> 8008: abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc9 8009: 0: abc1 8010: 0: abc4 8011: 0: abc5 8012: 0: abc9 8013: 8014: /^X/m 8015: XABC 8016: 0: X 8017: ** Failers 8018: No match 8019: XABC\B 8020: No match 8021: 8022: /(ab|c)(?-1)/BZ 8023: ------------------------------------------------------------------ 8024: Bra 8025: CBra 1 8026: ab 8027: Alt 8028: c 8029: Ket 8030: Once 8031: Recurse 8032: Ket 8033: Ket 8034: End 8035: ------------------------------------------------------------------ 8036: abc 8037: 0: abc 8038: 1: ab 8039: 8040: /xy(?+1)(abc)/BZ 8041: ------------------------------------------------------------------ 8042: Bra 8043: xy 8044: Once 8045: Recurse 8046: Ket 8047: CBra 1 8048: abc 8049: Ket 8050: Ket 8051: End 8052: ------------------------------------------------------------------ 8053: xyabcabc 8054: 0: xyabcabc 8055: 1: abc 8056: ** Failers 8057: No match 8058: xyabc 8059: No match 8060: 8061: /x(?-0)y/ 8062: Failed: a numbered reference must not be zero at offset 5 8063: 8064: /x(?-1)y/ 8065: Failed: reference to non-existent subpattern at offset 5 8066: 8067: /x(?+0)y/ 8068: Failed: a numbered reference must not be zero at offset 5 8069: 8070: /x(?+1)y/ 8071: Failed: reference to non-existent subpattern at offset 5 8072: 8073: /^(abc)?(?(-1)X|Y)/BZ 8074: ------------------------------------------------------------------ 8075: Bra 8076: ^ 8077: Brazero 8078: CBra 1 8079: abc 8080: Ket 8081: Cond 8082: 1 Cond ref 8083: X 8084: Alt 8085: Y 8086: Ket 8087: Ket 8088: End 8089: ------------------------------------------------------------------ 8090: abcX 8091: 0: abcX 8092: 1: abc 8093: Y 8094: 0: Y 8095: ** Failers 8096: No match 8097: abcY 8098: No match 8099: 8100: /^((?(+1)X|Y)(abc))+/BZ 8101: ------------------------------------------------------------------ 8102: Bra 8103: ^ 8104: CBra 1 8105: Cond 8106: 2 Cond ref 8107: X 8108: Alt 8109: Y 8110: Ket 8111: CBra 2 8112: abc 8113: Ket 8114: KetRmax 8115: Ket 8116: End 8117: ------------------------------------------------------------------ 8118: YabcXabc 8119: 0: YabcXabc 8120: 1: Xabc 8121: 2: abc 8122: YabcXabcXabc 8123: 0: YabcXabcXabc 8124: 1: Xabc 8125: 2: abc 8126: ** Failers 8127: No match 8128: XabcXabc 8129: No match 8130: 8131: /(?(-1)a)/BZ 8132: Failed: reference to non-existent subpattern at offset 6 8133: 8134: /((?(-1)a))/BZ 8135: ------------------------------------------------------------------ 8136: Bra 8137: CBra 1 8138: Cond 8139: 1 Cond ref 8140: a 8141: Ket 8142: Ket 8143: Ket 8144: End 8145: ------------------------------------------------------------------ 8146: 8147: /((?(-2)a))/BZ 8148: Failed: reference to non-existent subpattern at offset 7 8149: 8150: /^(?(+1)X|Y)(.)/BZ 8151: ------------------------------------------------------------------ 8152: Bra 8153: ^ 8154: Cond 8155: 1 Cond ref 8156: X 8157: Alt 8158: Y 8159: Ket 8160: CBra 1 8161: Any 8162: Ket 8163: Ket 8164: End 8165: ------------------------------------------------------------------ 8166: Y! 8167: 0: Y! 8168: 1: ! 8169: 8170: /(?<A>tom|bon)-\k{A}/ 8171: tom-tom 8172: 0: tom-tom 8173: 1: tom 8174: bon-bon 8175: 0: bon-bon 8176: 1: bon 8177: ** Failers 8178: No match 8179: tom-bon 8180: No match 8181: 8182: /\g{A/ 8183: Failed: syntax error in subpattern name (missing terminator) at offset 4 8184: 8185: /(?|(abc)|(xyz))/BZ 8186: ------------------------------------------------------------------ 8187: Bra 8188: Bra 8189: CBra 1 8190: abc 8191: Ket 8192: Alt 8193: CBra 1 8194: xyz 8195: Ket 8196: Ket 8197: Ket 8198: End 8199: ------------------------------------------------------------------ 8200: >abc< 8201: 0: abc 8202: 1: abc 8203: >xyz< 8204: 0: xyz 8205: 1: xyz 8206: 8207: /(x)(?|(abc)|(xyz))(x)/BZ 8208: ------------------------------------------------------------------ 8209: Bra 8210: CBra 1 8211: x 8212: Ket 8213: Bra 8214: CBra 2 8215: abc 8216: Ket 8217: Alt 8218: CBra 2 8219: xyz 8220: Ket 8221: Ket 8222: CBra 3 8223: x 8224: Ket 8225: Ket 8226: End 8227: ------------------------------------------------------------------ 8228: xabcx 8229: 0: xabcx 8230: 1: x 8231: 2: abc 8232: 3: x 8233: xxyzx 8234: 0: xxyzx 8235: 1: x 8236: 2: xyz 8237: 3: x 8238: 8239: /(x)(?|(abc)(pqr)|(xyz))(x)/BZ 8240: ------------------------------------------------------------------ 8241: Bra 8242: CBra 1 8243: x 8244: Ket 8245: Bra 8246: CBra 2 8247: abc 8248: Ket 8249: CBra 3 8250: pqr 8251: Ket 8252: Alt 8253: CBra 2 8254: xyz 8255: Ket 8256: Ket 8257: CBra 4 8258: x 8259: Ket 8260: Ket 8261: End 8262: ------------------------------------------------------------------ 8263: xabcpqrx 8264: 0: xabcpqrx 8265: 1: x 8266: 2: abc 8267: 3: pqr 8268: 4: x 8269: xxyzx 8270: 0: xxyzx 8271: 1: x 8272: 2: xyz 8273: 3: <unset> 8274: 4: x 8275: 8276: /[\h]/BZ 8277: ------------------------------------------------------------------ 8278: Bra 8279: [\x09 \xa0] 8280: Ket 8281: End 8282: ------------------------------------------------------------------ 8283: >\x09< 8284: 0: \x09 8285: 8286: /[\h]+/BZ 8287: ------------------------------------------------------------------ 8288: Bra 8289: [\x09 \xa0]+ 8290: Ket 8291: End 8292: ------------------------------------------------------------------ 8293: >\x09\x20\xa0< 8294: 0: \x09 \xa0 8295: 8296: /[\v]/BZ 8297: ------------------------------------------------------------------ 8298: Bra 8299: [\x0a-\x0d\x85] 8300: Ket 8301: End 8302: ------------------------------------------------------------------ 8303: 8304: /[\H]/BZ 8305: ------------------------------------------------------------------ 8306: Bra 8307: [\x00-\x08\x0a-\x1f!-\x9f\xa1-\xff] 8308: Ket 8309: End 8310: ------------------------------------------------------------------ 8311: 8312: /[^\h]/BZ 8313: ------------------------------------------------------------------ 8314: Bra 8315: [\x00-\x08\x0a-\x1f!-\x9f\xa1-\xff] (neg) 8316: Ket 8317: End 8318: ------------------------------------------------------------------ 8319: 8320: /[\V]/BZ 8321: ------------------------------------------------------------------ 8322: Bra 8323: [\x00-\x09\x0e-\x84\x86-\xff] 8324: Ket 8325: End 8326: ------------------------------------------------------------------ 8327: 8328: /[\x0a\V]/BZ 8329: ------------------------------------------------------------------ 8330: Bra 8331: [\x00-\x0a\x0e-\x84\x86-\xff] 8332: Ket 8333: End 8334: ------------------------------------------------------------------ 8335: 8336: /\H++X/BZ 8337: ------------------------------------------------------------------ 8338: Bra 8339: \H++ 8340: X 8341: Ket 8342: End 8343: ------------------------------------------------------------------ 8344: ** Failers 8345: No match 8346: XXXX 8347: No match 8348: 8349: /\H+\hY/BZ 8350: ------------------------------------------------------------------ 8351: Bra 8352: \H++ 8353: \h 8354: Y 8355: Ket 8356: End 8357: ------------------------------------------------------------------ 8358: XXXX Y 8359: 0: XXXX Y 8360: 8361: /\H+ Y/BZ 8362: ------------------------------------------------------------------ 8363: Bra 8364: \H++ 8365: Y 8366: Ket 8367: End 8368: ------------------------------------------------------------------ 8369: 8370: /\h+A/BZ 8371: ------------------------------------------------------------------ 8372: Bra 8373: \h++ 8374: A 8375: Ket 8376: End 8377: ------------------------------------------------------------------ 8378: 8379: /\v*B/BZ 8380: ------------------------------------------------------------------ 8381: Bra 8382: \v*+ 8383: B 8384: Ket 8385: End 8386: ------------------------------------------------------------------ 8387: 8388: /\V+\x0a/BZ 8389: ------------------------------------------------------------------ 8390: Bra 8391: \V++ 8392: \x0a 8393: Ket 8394: End 8395: ------------------------------------------------------------------ 8396: 8397: /A+\h/BZ 8398: ------------------------------------------------------------------ 8399: Bra 8400: A++ 8401: \h 8402: Ket 8403: End 8404: ------------------------------------------------------------------ 8405: 8406: / *\H/BZ 8407: ------------------------------------------------------------------ 8408: Bra 8409: *+ 8410: \H 8411: Ket 8412: End 8413: ------------------------------------------------------------------ 8414: 8415: /A*\v/BZ 8416: ------------------------------------------------------------------ 8417: Bra 8418: A*+ 8419: \v 8420: Ket 8421: End 8422: ------------------------------------------------------------------ 8423: 8424: /\x0b*\V/BZ 8425: ------------------------------------------------------------------ 8426: Bra 8427: \x0b*+ 8428: \V 8429: Ket 8430: End 8431: ------------------------------------------------------------------ 8432: 8433: /\d+\h/BZ 8434: ------------------------------------------------------------------ 8435: Bra 8436: \d++ 8437: \h 8438: Ket 8439: End 8440: ------------------------------------------------------------------ 8441: 8442: /\d*\v/BZ 8443: ------------------------------------------------------------------ 8444: Bra 8445: \d*+ 8446: \v 8447: Ket 8448: End 8449: ------------------------------------------------------------------ 8450: 8451: /S+\h\S+\v/BZ 8452: ------------------------------------------------------------------ 8453: Bra 8454: S++ 8455: \h 8456: \S++ 8457: \v 8458: Ket 8459: End 8460: ------------------------------------------------------------------ 8461: 8462: /\w{3,}\h\w+\v/BZ 8463: ------------------------------------------------------------------ 8464: Bra 8465: \w{3} 8466: \w*+ 8467: \h 8468: \w++ 8469: \v 8470: Ket 8471: End 8472: ------------------------------------------------------------------ 8473: 8474: /\h+\d\h+\w\h+\S\h+\H/BZ 8475: ------------------------------------------------------------------ 8476: Bra 8477: \h++ 8478: \d 8479: \h++ 8480: \w 8481: \h++ 8482: \S 8483: \h++ 8484: \H 8485: Ket 8486: End 8487: ------------------------------------------------------------------ 8488: 8489: /\v+\d\v+\w\v+\S\v+\V/BZ 8490: ------------------------------------------------------------------ 8491: Bra 8492: \v++ 8493: \d 8494: \v++ 8495: \w 8496: \v+ 8497: \S 8498: \v++ 8499: \V 8500: Ket 8501: End 8502: ------------------------------------------------------------------ 8503: 8504: /\H+\h\H+\d/BZ 8505: ------------------------------------------------------------------ 8506: Bra 8507: \H++ 8508: \h 8509: \H+ 8510: \d 8511: Ket 8512: End 8513: ------------------------------------------------------------------ 8514: 8515: /\V+\v\V+\w/BZ 8516: ------------------------------------------------------------------ 8517: Bra 8518: \V++ 8519: \v 8520: \V+ 8521: \w 8522: Ket 8523: End 8524: ------------------------------------------------------------------ 8525: 8526: /\( (?: [^()]* | (?R) )* \)/x 8527: (0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(00)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0) 8528: 0: (0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(00)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0) 8529: 8530: /[\E]AAA/ 8531: Failed: missing terminating ] for character class at offset 7 8532: 8533: /[\Q\E]AAA/ 8534: Failed: missing terminating ] for character class at offset 9 8535: 8536: /[^\E]AAA/ 8537: Failed: missing terminating ] for character class at offset 8 8538: 8539: /[^\Q\E]AAA/ 8540: Failed: missing terminating ] for character class at offset 10 8541: 8542: /[\E^]AAA/ 8543: Failed: missing terminating ] for character class at offset 8 8544: 8545: /[\Q\E^]AAA/ 8546: Failed: missing terminating ] for character class at offset 10 8547: 8548: /A(*PRUNE)B(*SKIP)C(*THEN)D(*COMMIT)E(*F)F(*FAIL)G(?!)H(*ACCEPT)I/BZ 8549: ------------------------------------------------------------------ 8550: Bra 8551: A 8552: *PRUNE 8553: B 8554: *SKIP 8555: C 8556: *THEN 8557: D 8558: *COMMIT 8559: E 8560: *FAIL 8561: F 8562: *FAIL 8563: G 8564: *FAIL 8565: H 8566: *ACCEPT 8567: I 8568: Ket 8569: End 8570: ------------------------------------------------------------------ 8571: 8572: /^a+(*FAIL)/C 8573: aaaaaa 8574: --->aaaaaa 8575: +0 ^ ^ 8576: +1 ^ a+ 8577: +3 ^ ^ (*FAIL) 8578: +3 ^ ^ (*FAIL) 8579: +3 ^ ^ (*FAIL) 8580: +3 ^ ^ (*FAIL) 8581: +3 ^ ^ (*FAIL) 8582: +3 ^^ (*FAIL) 8583: No match 8584: 8585: /a+b?c+(*FAIL)/C 8586: aaabccc 8587: --->aaabccc 8588: +0 ^ a+ 8589: +2 ^ ^ b? 8590: +4 ^ ^ c+ 8591: +6 ^ ^ (*FAIL) 8592: +6 ^ ^ (*FAIL) 8593: +6 ^ ^ (*FAIL) 8594: +4 ^ ^ c+ 8595: +2 ^ ^ b? 8596: +4 ^ ^ c+ 8597: +2 ^^ b? 8598: +4 ^^ c+ 8599: +0 ^ a+ 8600: +2 ^ ^ b? 8601: +4 ^ ^ c+ 8602: +6 ^ ^ (*FAIL) 8603: +6 ^ ^ (*FAIL) 8604: +6 ^ ^ (*FAIL) 8605: +4 ^ ^ c+ 8606: +2 ^^ b? 8607: +4 ^^ c+ 8608: +0 ^ a+ 8609: +2 ^^ b? 8610: +4 ^ ^ c+ 8611: +6 ^ ^ (*FAIL) 8612: +6 ^ ^ (*FAIL) 8613: +6 ^ ^ (*FAIL) 8614: +4 ^^ c+ 8615: No match 8616: 8617: /a+b?(*PRUNE)c+(*FAIL)/C 8618: aaabccc 8619: --->aaabccc 8620: +0 ^ a+ 8621: +2 ^ ^ b? 8622: +4 ^ ^ (*PRUNE) 8623: +12 ^ ^ c+ 8624: +14 ^ ^ (*FAIL) 8625: +14 ^ ^ (*FAIL) 8626: +14 ^ ^ (*FAIL) 8627: +0 ^ a+ 8628: +2 ^ ^ b? 8629: +4 ^ ^ (*PRUNE) 8630: +12 ^ ^ c+ 8631: +14 ^ ^ (*FAIL) 8632: +14 ^ ^ (*FAIL) 8633: +14 ^ ^ (*FAIL) 8634: +0 ^ a+ 8635: +2 ^^ b? 8636: +4 ^ ^ (*PRUNE) 8637: +12 ^ ^ c+ 8638: +14 ^ ^ (*FAIL) 8639: +14 ^ ^ (*FAIL) 8640: +14 ^ ^ (*FAIL) 8641: No match 8642: 8643: /a+b?(*COMMIT)c+(*FAIL)/C 8644: aaabccc 8645: --->aaabccc 8646: +0 ^ a+ 8647: +2 ^ ^ b? 8648: +4 ^ ^ (*COMMIT) 8649: +13 ^ ^ c+ 8650: +15 ^ ^ (*FAIL) 8651: +15 ^ ^ (*FAIL) 8652: +15 ^ ^ (*FAIL) 8653: No match 8654: 8655: /a+b?(*SKIP)c+(*FAIL)/C 8656: aaabcccaaabccc 8657: --->aaabcccaaabccc 8658: +0 ^ a+ 8659: +2 ^ ^ b? 8660: +4 ^ ^ (*SKIP) 8661: +11 ^ ^ c+ 8662: +13 ^ ^ (*FAIL) 8663: +13 ^ ^ (*FAIL) 8664: +13 ^ ^ (*FAIL) 8665: +0 ^ a+ 8666: +2 ^ ^ b? 8667: +4 ^ ^ (*SKIP) 8668: +11 ^ ^ c+ 8669: +13 ^ ^ (*FAIL) 8670: +13 ^ ^ (*FAIL) 8671: +13 ^ ^ (*FAIL) 8672: No match 8673: 8674: /a+b?(*THEN)c+(*FAIL)/C 8675: aaabccc 8676: --->aaabccc 8677: +0 ^ a+ 8678: +2 ^ ^ b? 8679: +4 ^ ^ (*THEN) 8680: +11 ^ ^ c+ 8681: +13 ^ ^ (*FAIL) 8682: +13 ^ ^ (*FAIL) 8683: +13 ^ ^ (*FAIL) 8684: +0 ^ a+ 8685: +2 ^ ^ b? 8686: +4 ^ ^ (*THEN) 8687: +11 ^ ^ c+ 8688: +13 ^ ^ (*FAIL) 8689: +13 ^ ^ (*FAIL) 8690: +13 ^ ^ (*FAIL) 8691: +0 ^ a+ 8692: +2 ^^ b? 8693: +4 ^ ^ (*THEN) 8694: +11 ^ ^ c+ 8695: +13 ^ ^ (*FAIL) 8696: +13 ^ ^ (*FAIL) 8697: +13 ^ ^ (*FAIL) 8698: No match 8699: 8700: /a(*MARK)b/ 8701: Failed: (*MARK) must have an argument at offset 7 8702: 8703: /(?i:A{1,}\6666666666)/ 8704: Failed: number is too big at offset 19 8705: 8706: /\g6666666666/ 8707: Failed: number is too big at offset 11 8708: 8709: /[\g6666666666]/ 8710: Failed: number is too big at offset 12 8711: 8712: /(?1)\c[/ 8713: Failed: reference to non-existent subpattern at offset 3 8714: 8715: /.+A/<crlf> 8716: \r\nA 8717: No match 8718: 8719: /\nA/<crlf> 8720: \r\nA 8721: 0: \x0aA 8722: 8723: /[\r\n]A/<crlf> 8724: \r\nA 8725: 0: \x0aA 8726: 8727: /(\r|\n)A/<crlf> 8728: \r\nA 8729: 0: \x0aA 8730: 1: \x0a 8731: 8732: /a(*CR)b/ 8733: Failed: (*VERB) not recognized at offset 5 8734: 8735: /(*CR)a.b/ 8736: a\nb 8737: 0: a\x0ab 8738: ** Failers 8739: No match 8740: a\rb 8741: No match 8742: 8743: /(*CR)a.b/<lf> 8744: a\nb 8745: 0: a\x0ab 8746: ** Failers 8747: No match 8748: a\rb 8749: No match 8750: 8751: /(*LF)a.b/<CRLF> 8752: a\rb 8753: 0: a\x0db 8754: ** Failers 8755: No match 8756: a\nb 8757: No match 8758: 8759: /(*CRLF)a.b/ 8760: a\rb 8761: 0: a\x0db 8762: a\nb 8763: 0: a\x0ab 8764: ** Failers 8765: No match 8766: a\r\nb 8767: No match 8768: 8769: /(*ANYCRLF)a.b/<CR> 8770: ** Failers 8771: No match 8772: a\rb 8773: No match 8774: a\nb 8775: No match 8776: a\r\nb 8777: No match 8778: 8779: /(*ANY)a.b/<cr> 8780: ** Failers 8781: No match 8782: a\rb 8783: No match 8784: a\nb 8785: No match 8786: a\r\nb 8787: No match 8788: a\x85b 8789: No match 8790: 8791: /(*ANY).*/g 8792: abc\r\ndef 8793: 0: abc 8794: 0: 8795: 0: def 8796: 0: 8797: 8798: /(*ANYCRLF).*/g 8799: abc\r\ndef 8800: 0: abc 8801: 0: 8802: 0: def 8803: 0: 8804: 8805: /(*CRLF).*/g 8806: abc\r\ndef 8807: 0: abc 8808: 0: 8809: 0: def 8810: 0: 8811: 8812: /a\Rb/I<bsr_anycrlf> 8813: Capturing subpattern count = 0 8814: Options: bsr_anycrlf 8815: First char = 'a' 8816: Need char = 'b' 8817: a\rb 8818: 0: a\x0db 8819: a\nb 8820: 0: a\x0ab 8821: a\r\nb 8822: 0: a\x0d\x0ab 8823: ** Failers 8824: No match 8825: a\x85b 8826: No match 8827: a\x0bb 8828: No match 8829: 8830: /a\Rb/I<bsr_unicode> 8831: Capturing subpattern count = 0 8832: Options: bsr_unicode 8833: First char = 'a' 8834: Need char = 'b' 8835: a\rb 8836: 0: a\x0db 8837: a\nb 8838: 0: a\x0ab 8839: a\r\nb 8840: 0: a\x0d\x0ab 8841: a\x85b 8842: 0: a\x85b 8843: a\x0bb 8844: 0: a\x0bb 8845: ** Failers 8846: No match 8847: a\x85b\<bsr_anycrlf> 8848: No match 8849: a\x0bb\<bsr_anycrlf> 8850: No match 8851: 8852: /a\R?b/I<bsr_anycrlf> 8853: Capturing subpattern count = 0 8854: Options: bsr_anycrlf 8855: First char = 'a' 8856: Need char = 'b' 8857: a\rb 8858: 0: a\x0db 8859: a\nb 8860: 0: a\x0ab 8861: a\r\nb 8862: 0: a\x0d\x0ab 8863: ** Failers 8864: No match 8865: a\x85b 8866: No match 8867: a\x0bb 8868: No match 8869: 8870: /a\R?b/I<bsr_unicode> 8871: Capturing subpattern count = 0 8872: Options: bsr_unicode 8873: First char = 'a' 8874: Need char = 'b' 8875: a\rb 8876: 0: a\x0db 8877: a\nb 8878: 0: a\x0ab 8879: a\r\nb 8880: 0: a\x0d\x0ab 8881: a\x85b 8882: 0: a\x85b 8883: a\x0bb 8884: 0: a\x0bb 8885: ** Failers 8886: No match 8887: a\x85b\<bsr_anycrlf> 8888: No match 8889: a\x0bb\<bsr_anycrlf> 8890: No match 8891: 8892: /a\R{2,4}b/I<bsr_anycrlf> 8893: Capturing subpattern count = 0 8894: Options: bsr_anycrlf 8895: First char = 'a' 8896: Need char = 'b' 8897: a\r\n\nb 8898: 0: a\x0d\x0a\x0ab 8899: a\n\r\rb 8900: 0: a\x0a\x0d\x0db 8901: a\r\n\r\n\r\n\r\nb 8902: 0: a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0ab 8903: ** Failers 8904: No match 8905: a\x85\85b 8906: No match 8907: a\x0b\0bb 8908: No match 8909: 8910: /a\R{2,4}b/I<bsr_unicode> 8911: Capturing subpattern count = 0 8912: Options: bsr_unicode 8913: First char = 'a' 8914: Need char = 'b' 8915: a\r\rb 8916: 0: a\x0d\x0db 8917: a\n\n\nb 8918: 0: a\x0a\x0a\x0ab 8919: a\r\n\n\r\rb 8920: 0: a\x0d\x0a\x0a\x0d\x0db 8921: a\x85\85b 8922: No match 8923: a\x0b\0bb 8924: No match 8925: ** Failers 8926: No match 8927: a\r\r\r\r\rb 8928: No match 8929: a\x85\85b\<bsr_anycrlf> 8930: No match 8931: a\x0b\0bb\<bsr_anycrlf> 8932: No match 8933: 8934: /(*BSR_ANYCRLF)a\Rb/I 8935: Capturing subpattern count = 0 8936: Options: bsr_anycrlf 8937: First char = 'a' 8938: Need char = 'b' 8939: a\nb 8940: 0: a\x0ab 8941: a\rb 8942: 0: a\x0db 8943: 8944: /(*BSR_UNICODE)a\Rb/I 8945: Capturing subpattern count = 0 8946: Options: bsr_unicode 8947: First char = 'a' 8948: Need char = 'b' 8949: a\x85b 8950: 0: a\x85b 8951: 8952: /(*BSR_ANYCRLF)(*CRLF)a\Rb/I 8953: Capturing subpattern count = 0 8954: Options: bsr_anycrlf 8955: Forced newline sequence: CRLF 8956: First char = 'a' 8957: Need char = 'b' 8958: a\nb 8959: 0: a\x0ab 8960: a\rb 8961: 0: a\x0db 8962: 8963: /(*CRLF)(*BSR_UNICODE)a\Rb/I 8964: Capturing subpattern count = 0 8965: Options: bsr_unicode 8966: Forced newline sequence: CRLF 8967: First char = 'a' 8968: Need char = 'b' 8969: a\x85b 8970: 0: a\x85b 8971: 8972: /(*CRLF)(*BSR_ANYCRLF)(*CR)ab/I 8973: Capturing subpattern count = 0 8974: Options: bsr_anycrlf 8975: Forced newline sequence: CR 8976: First char = 'a' 8977: Need char = 'b' 8978: 8979: /(?<a>)(?&)/ 8980: Failed: subpattern name expected at offset 9 8981: 8982: /(?<abc>)(?&a)/ 8983: Failed: reference to non-existent subpattern at offset 12 8984: 8985: /(?<a>)(?&aaaaaaaaaaaaaaaaaaaaaaa)/ 8986: Failed: reference to non-existent subpattern at offset 32 8987: 8988: /(?+-a)/ 8989: Failed: digit expected after (?+ at offset 3 8990: 8991: /(?-+a)/ 8992: Failed: unrecognized character after (? or (?- at offset 3 8993: 8994: /(?(-1))/ 8995: Failed: reference to non-existent subpattern at offset 6 8996: 8997: /(?(+10))/ 8998: Failed: reference to non-existent subpattern at offset 7 8999: 9000: /(?(10))/ 9001: Failed: reference to non-existent subpattern at offset 6 9002: 9003: /(?(+2))()()/ 9004: 9005: /(?(2))()()/ 9006: 9007: /\k''/ 9008: Failed: subpattern name expected at offset 3 9009: 9010: /\k<>/ 9011: Failed: subpattern name expected at offset 3 9012: 9013: /\k{}/ 9014: Failed: subpattern name expected at offset 3 9015: 9016: /(?P=)/ 9017: Failed: subpattern name expected at offset 4 9018: 9019: /(?P>)/ 9020: Failed: subpattern name expected at offset 4 9021: 9022: /(?!\w)(?R)/ 9023: Failed: recursive call could loop indefinitely at offset 9 9024: 9025: /(?=\w)(?R)/ 9026: Failed: recursive call could loop indefinitely at offset 9 9027: 9028: /(?<!\w)(?R)/ 9029: Failed: recursive call could loop indefinitely at offset 10 9030: 9031: /(?<=\w)(?R)/ 9032: Failed: recursive call could loop indefinitely at offset 10 9033: 9034: /[[:foo:]]/ 9035: Failed: unknown POSIX class name at offset 3 9036: 9037: /[[:1234:]]/ 9038: Failed: unknown POSIX class name at offset 3 9039: 9040: /[[:f\oo:]]/ 9041: Failed: unknown POSIX class name at offset 3 9042: 9043: /[[: :]]/ 9044: Failed: unknown POSIX class name at offset 3 9045: 9046: /[[:...:]]/ 9047: Failed: unknown POSIX class name at offset 3 9048: 9049: /[[:l\ower:]]/ 9050: Failed: unknown POSIX class name at offset 3 9051: 9052: /[[:abc\:]]/ 9053: Failed: unknown POSIX class name at offset 3 9054: 9055: /[abc[:x\]pqr:]]/ 9056: Failed: unknown POSIX class name at offset 6 9057: 9058: /[[:a\dz:]]/ 9059: Failed: unknown POSIX class name at offset 3 9060: 9061: /(^(a|b\g<-1'c))/ 9062: Failed: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number at offset 15 9063: 9064: /^(?+1)(?<a>x|y){0}z/ 9065: xzxx 9066: 0: xz 9067: yzyy 9068: 0: yz 9069: ** Failers 9070: No match 9071: xxz 9072: No match 9073: 9074: /(\3)(\1)(a)/ 9075: cat 9076: No match 9077: 9078: /(\3)(\1)(a)/<JS> 9079: cat 9080: 0: a 9081: 1: 9082: 2: 9083: 3: a 9084: 9085: /TA]/ 9086: The ACTA] comes 9087: 0: TA] 9088: 9089: /TA]/<JS> 9090: Failed: ] is an invalid data character in JavaScript compatibility mode at offset 2 9091: 9092: /(?2)[]a()b](abc)/ 9093: Failed: reference to non-existent subpattern at offset 3 9094: 9095: /(?2)[^]a()b](abc)/ 9096: Failed: reference to non-existent subpattern at offset 3 9097: 9098: /(?1)[]a()b](abc)/ 9099: abcbabc 9100: 0: abcbabc 9101: 1: abc 9102: ** Failers 9103: No match 9104: abcXabc 9105: No match 9106: 9107: /(?1)[^]a()b](abc)/ 9108: abcXabc 9109: 0: abcXabc 9110: 1: abc 9111: ** Failers 9112: No match 9113: abcbabc 9114: No match 9115: 9116: /(?2)[]a()b](abc)(xyz)/ 9117: xyzbabcxyz 9118: 0: xyzbabcxyz 9119: 1: abc 9120: 2: xyz 9121: 9122: /(?&N)[]a(?<N>)](?<M>abc)/ 9123: Failed: reference to non-existent subpattern at offset 4 9124: 9125: /(?&N)[]a(?<N>)](abc)/ 9126: Failed: reference to non-existent subpattern at offset 4 9127: 9128: /a[]b/ 9129: Failed: missing terminating ] for character class at offset 4 9130: 9131: /a[^]b/ 9132: Failed: missing terminating ] for character class at offset 5 9133: 9134: /a[]b/<JS> 9135: ** Failers 9136: No match 9137: ab 9138: No match 9139: 9140: /a[]+b/<JS> 9141: ** Failers 9142: No match 9143: ab 9144: No match 9145: 9146: /a[]*+b/<JS> 9147: ** Failers 9148: No match 9149: ab 9150: No match 9151: 9152: /a[^]b/<JS> 9153: aXb 9154: 0: aXb 9155: a\nb 9156: 0: a\x0ab 9157: ** Failers 9158: No match 9159: ab 9160: No match 9161: 9162: /a[^]+b/<JS> 9163: aXb 9164: 0: aXb 9165: a\nX\nXb 9166: 0: a\x0aX\x0aXb 9167: ** Failers 9168: No match 9169: ab 9170: No match 9171: 9172: /a(?!)+b/ 9173: Failed: nothing to repeat at offset 5 9174: 9175: /a(*FAIL)+b/ 9176: Failed: nothing to repeat at offset 8 9177: 9178: /(abc|pqr|123){0}[xyz]/SI 9179: Capturing subpattern count = 1 9180: No options 9181: No first char 9182: No need char 9183: Subject length lower bound = 1 9184: Starting byte set: x y z 9185: 9186: /(?(?=.*b)b|^)/CI 9187: Capturing subpattern count = 0 9188: Options: 9189: No first char 9190: No need char 9191: adc 9192: --->adc 9193: +0 ^ (?(?=.*b)b|^) 9194: +2 ^ (?=.*b) 9195: +5 ^ .* 9196: +7 ^ ^ b 9197: +7 ^ ^ b 9198: +7 ^^ b 9199: +7 ^ b 9200: +12 ^ ) 9201: +13 ^ 9202: 0: 9203: abc 9204: --->abc 9205: +0 ^ (?(?=.*b)b|^) 9206: +2 ^ (?=.*b) 9207: +5 ^ .* 9208: +7 ^ ^ b 9209: +7 ^ ^ b 9210: +7 ^^ b 9211: +8 ^ ^ ) 9212: +9 ^ b 9213: +0 ^ (?(?=.*b)b|^) 9214: +2 ^ (?=.*b) 9215: +5 ^ .* 9216: +7 ^ ^ b 9217: +7 ^^ b 9218: +7 ^ b 9219: +8 ^^ ) 9220: +9 ^ b 9221: +10 ^^ | 9222: +13 ^^ 9223: 0: b 9224: 9225: /(?(?=b).*b|^d)/I 9226: Capturing subpattern count = 0 9227: No options 9228: No first char 9229: No need char 9230: 9231: /(?(?=.*b).*b|^d)/I 9232: Capturing subpattern count = 0 9233: No options 9234: First char at start or follows newline 9235: No need char 9236: 9237: /a?|b?/P 9238: abc 9239: 0: a 9240: ** Failers 9241: 0: 9242: ddd\N 9243: No match: POSIX code 17: match failed 9244: 9245: /xyz/C 9246: xyz 9247: --->xyz 9248: +0 ^ x 9249: +1 ^^ y 9250: +2 ^ ^ z 9251: +3 ^ ^ 9252: 0: xyz 9253: abcxyz 9254: --->abcxyz 9255: +0 ^ x 9256: +1 ^^ y 9257: +2 ^ ^ z 9258: +3 ^ ^ 9259: 0: xyz 9260: abcxyz\Y 9261: --->abcxyz 9262: +0 ^ x 9263: +0 ^ x 9264: +0 ^ x 9265: +0 ^ x 9266: +1 ^^ y 9267: +2 ^ ^ z 9268: +3 ^ ^ 9269: 0: xyz 9270: ** Failers 9271: No match 9272: abc 9273: No match 9274: abc\Y 9275: --->abc 9276: +0 ^ x 9277: +0 ^ x 9278: +0 ^ x 9279: +0 ^ x 9280: No match 9281: abcxypqr 9282: No match 9283: abcxypqr\Y 9284: --->abcxypqr 9285: +0 ^ x 9286: +0 ^ x 9287: +0 ^ x 9288: +0 ^ x 9289: +1 ^^ y 9290: +2 ^ ^ z 9291: +0 ^ x 9292: +0 ^ x 9293: +0 ^ x 9294: +0 ^ x 9295: +0 ^ x 9296: No match 9297: 9298: /(*NO_START_OPT)xyz/C 9299: abcxyz 9300: --->abcxyz 9301: +15 ^ x 9302: +15 ^ x 9303: +15 ^ x 9304: +15 ^ x 9305: +16 ^^ y 9306: +17 ^ ^ z 9307: +18 ^ ^ 9308: 0: xyz 9309: 9310: /xyz/CY 9311: abcxyz 9312: --->abcxyz 9313: +0 ^ x 9314: +0 ^ x 9315: +0 ^ x 9316: +0 ^ x 9317: +1 ^^ y 9318: +2 ^ ^ z 9319: +3 ^ ^ 9320: 0: xyz 9321: 9322: /^"((?(?=[a])[^"])|b)*"$/C 9323: "ab" 9324: --->"ab" 9325: +0 ^ ^ 9326: +1 ^ " 9327: +2 ^^ ((?(?=[a])[^"])|b)* 9328: +3 ^^ (?(?=[a])[^"]) 9329: +5 ^^ (?=[a]) 9330: +8 ^^ [a] 9331: +11 ^ ^ ) 9332: +12 ^^ [^"] 9333: +16 ^ ^ ) 9334: +17 ^ ^ | 9335: +3 ^ ^ (?(?=[a])[^"]) 9336: +5 ^ ^ (?=[a]) 9337: +8 ^ ^ [a] 9338: +21 ^ ^ " 9339: +18 ^ ^ b 9340: +19 ^ ^ ) 9341: +3 ^ ^ (?(?=[a])[^"]) 9342: +5 ^ ^ (?=[a]) 9343: +8 ^ ^ [a] 9344: +21 ^ ^ " 9345: +22 ^ ^ $ 9346: +23 ^ ^ 9347: 0: "ab" 9348: 1: 9349: 9350: /^"((?(?=[a])[^"])|b)*"$/ 9351: "ab" 9352: 0: "ab" 9353: 1: 9354: 9355: /^X(?5)(a)(?|(b)|(q))(c)(d)Y/ 9356: Failed: reference to non-existent subpattern at offset 5 9357: 9358: /^X(?&N)(a)(?|(b)|(q))(c)(d)(?<N>Y)/ 9359: XYabcdY 9360: 0: XYabcdY 9361: 1: a 9362: 2: b 9363: 3: c 9364: 4: d 9365: 5: Y 9366: 9367: /Xa{2,4}b/ 9368: X\P 9369: Partial match: X 9370: Xa\P 9371: Partial match: Xa 9372: Xaa\P 9373: Partial match: Xaa 9374: Xaaa\P 9375: Partial match: Xaaa 9376: Xaaaa\P 9377: Partial match: Xaaaa 9378: 9379: /Xa{2,4}?b/ 9380: X\P 9381: Partial match: X 9382: Xa\P 9383: Partial match: Xa 9384: Xaa\P 9385: Partial match: Xaa 9386: Xaaa\P 9387: Partial match: Xaaa 9388: Xaaaa\P 9389: Partial match: Xaaaa 9390: 9391: /Xa{2,4}+b/ 9392: X\P 9393: Partial match: X 9394: Xa\P 9395: Partial match: Xa 9396: Xaa\P 9397: Partial match: Xaa 9398: Xaaa\P 9399: Partial match: Xaaa 9400: Xaaaa\P 9401: Partial match: Xaaaa 9402: 9403: /X\d{2,4}b/ 9404: X\P 9405: Partial match: X 9406: X3\P 9407: Partial match: X3 9408: X33\P 9409: Partial match: X33 9410: X333\P 9411: Partial match: X333 9412: X3333\P 9413: Partial match: X3333 9414: 9415: /X\d{2,4}?b/ 9416: X\P 9417: Partial match: X 9418: X3\P 9419: Partial match: X3 9420: X33\P 9421: Partial match: X33 9422: X333\P 9423: Partial match: X333 9424: X3333\P 9425: Partial match: X3333 9426: 9427: /X\d{2,4}+b/ 9428: X\P 9429: Partial match: X 9430: X3\P 9431: Partial match: X3 9432: X33\P 9433: Partial match: X33 9434: X333\P 9435: Partial match: X333 9436: X3333\P 9437: Partial match: X3333 9438: 9439: /X\D{2,4}b/ 9440: X\P 9441: Partial match: X 9442: Xa\P 9443: Partial match: Xa 9444: Xaa\P 9445: Partial match: Xaa 9446: Xaaa\P 9447: Partial match: Xaaa 9448: Xaaaa\P 9449: Partial match: Xaaaa 9450: 9451: /X\D{2,4}?b/ 9452: X\P 9453: Partial match: X 9454: Xa\P 9455: Partial match: Xa 9456: Xaa\P 9457: Partial match: Xaa 9458: Xaaa\P 9459: Partial match: Xaaa 9460: Xaaaa\P 9461: Partial match: Xaaaa 9462: 9463: /X\D{2,4}+b/ 9464: X\P 9465: Partial match: X 9466: Xa\P 9467: Partial match: Xa 9468: Xaa\P 9469: Partial match: Xaa 9470: Xaaa\P 9471: Partial match: Xaaa 9472: Xaaaa\P 9473: Partial match: Xaaaa 9474: 9475: /X[abc]{2,4}b/ 9476: X\P 9477: Partial match: X 9478: Xa\P 9479: Partial match: Xa 9480: Xaa\P 9481: Partial match: Xaa 9482: Xaaa\P 9483: Partial match: Xaaa 9484: Xaaaa\P 9485: Partial match: Xaaaa 9486: 9487: /X[abc]{2,4}?b/ 9488: X\P 9489: Partial match: X 9490: Xa\P 9491: Partial match: Xa 9492: Xaa\P 9493: Partial match: Xaa 9494: Xaaa\P 9495: Partial match: Xaaa 9496: Xaaaa\P 9497: Partial match: Xaaaa 9498: 9499: /X[abc]{2,4}+b/ 9500: X\P 9501: Partial match: X 9502: Xa\P 9503: Partial match: Xa 9504: Xaa\P 9505: Partial match: Xaa 9506: Xaaa\P 9507: Partial match: Xaaa 9508: Xaaaa\P 9509: Partial match: Xaaaa 9510: 9511: /X[^a]{2,4}b/ 9512: X\P 9513: Partial match: X 9514: Xz\P 9515: Partial match: Xz 9516: Xzz\P 9517: Partial match: Xzz 9518: Xzzz\P 9519: Partial match: Xzzz 9520: Xzzzz\P 9521: Partial match: Xzzzz 9522: 9523: /X[^a]{2,4}?b/ 9524: X\P 9525: Partial match: X 9526: Xz\P 9527: Partial match: Xz 9528: Xzz\P 9529: Partial match: Xzz 9530: Xzzz\P 9531: Partial match: Xzzz 9532: Xzzzz\P 9533: Partial match: Xzzzz 9534: 9535: /X[^a]{2,4}+b/ 9536: X\P 9537: Partial match: X 9538: Xz\P 9539: Partial match: Xz 9540: Xzz\P 9541: Partial match: Xzz 9542: Xzzz\P 9543: Partial match: Xzzz 9544: Xzzzz\P 9545: Partial match: Xzzzz 9546: 9547: /(Y)X\1{2,4}b/ 9548: YX\P 9549: Partial match: YX 9550: YXY\P 9551: Partial match: YXY 9552: YXYY\P 9553: Partial match: YXYY 9554: YXYYY\P 9555: Partial match: YXYYY 9556: YXYYYY\P 9557: Partial match: YXYYYY 9558: 9559: /(Y)X\1{2,4}?b/ 9560: YX\P 9561: Partial match: YX 9562: YXY\P 9563: Partial match: YXY 9564: YXYY\P 9565: Partial match: YXYY 9566: YXYYY\P 9567: Partial match: YXYYY 9568: YXYYYY\P 9569: Partial match: YXYYYY 9570: 9571: /(Y)X\1{2,4}+b/ 9572: YX\P 9573: Partial match: YX 9574: YXY\P 9575: Partial match: YXY 9576: YXYY\P 9577: Partial match: YXYY 9578: YXYYY\P 9579: Partial match: YXYYY 9580: YXYYYY\P 9581: Partial match: YXYYYY 9582: 9583: /\++\KZ|\d+X|9+Y/ 9584: ++++123999\P 9585: Partial match: 123999 9586: ++++123999Y\P 9587: 0: 999Y 9588: ++++Z1234\P 9589: 0: Z 9590: 9591: /Z(*F)/ 9592: Z\P 9593: No match 9594: ZA\P 9595: No match 9596: 9597: /Z(?!)/ 9598: Z\P 9599: No match 9600: ZA\P 9601: No match 9602: 9603: /dog(sbody)?/ 9604: dogs\P 9605: 0: dog 9606: dogs\P\P 9607: Partial match: dogs 9608: 9609: /dog(sbody)??/ 9610: dogs\P 9611: 0: dog 9612: dogs\P\P 9613: 0: dog 9614: 9615: /dog|dogsbody/ 9616: dogs\P 9617: 0: dog 9618: dogs\P\P 9619: 0: dog 9620: 9621: /dogsbody|dog/ 9622: dogs\P 9623: 0: dog 9624: dogs\P\P 9625: Partial match: dogs 9626: 9627: /\bthe cat\b/ 9628: the cat\P 9629: 0: the cat 9630: the cat\P\P 9631: Partial match: the cat 9632: 9633: /abc/ 9634: abc\P 9635: 0: abc 9636: abc\P\P 9637: 0: abc 9638: 9639: /\w+A/P 9640: CDAAAAB 9641: 0: CDAAAA 9642: 9643: /\w+A/PU 9644: CDAAAAB 9645: 0: CDA 9646: 9647: /abc\K123/ 9648: xyzabc123pqr 9649: 0: 123 9650: xyzabc12\P 9651: Partial match: abc12 9652: xyzabc12\P\P 9653: Partial match: abc12 9654: 9655: /(?<=abc)123/ 9656: xyzabc123pqr 9657: 0: 123 9658: xyzabc12\P 9659: Partial match: abc12 9660: xyzabc12\P\P 9661: Partial match: abc12 9662: 9663: /\babc\b/ 9664: +++abc+++ 9665: 0: abc 9666: +++ab\P 9667: Partial match: +ab 9668: +++ab\P\P 9669: Partial match: +ab 9670: 9671: /(?&word)(?&element)(?(DEFINE)(?<element><[^m][^>]>[^<])(?<word>\w*+))/BZ 9672: ------------------------------------------------------------------ 9673: Bra 9674: Once 9675: Recurse 9676: Ket 9677: Once 9678: Recurse 9679: Ket 9680: Cond 9681: Cond def 9682: CBra 1 9683: < 9684: [^m] 9685: [^>] 9686: > 9687: [^<] 9688: Ket 9689: CBra 2 9690: \w*+ 9691: Ket 9692: Ket 9693: Ket 9694: End 9695: ------------------------------------------------------------------ 9696: 9697: /(?&word)(?&element)(?(DEFINE)(?<element><[^\d][^>]>[^<])(?<word>\w*+))/BZ 9698: ------------------------------------------------------------------ 9699: Bra 9700: Once 9701: Recurse 9702: Ket 9703: Once 9704: Recurse 9705: Ket 9706: Cond 9707: Cond def 9708: CBra 1 9709: < 9710: [\x00-/:-\xff] (neg) 9711: [^>] 9712: > 9713: [^<] 9714: Ket 9715: CBra 2 9716: \w*+ 9717: Ket 9718: Ket 9719: Ket 9720: End 9721: ------------------------------------------------------------------ 9722: 9723: /(ab)(x(y)z(cd(*ACCEPT)))pq/BZ 9724: ------------------------------------------------------------------ 9725: Bra 9726: CBra 1 9727: ab 9728: Ket 9729: CBra 2 9730: x 9731: CBra 3 9732: y 9733: Ket 9734: z 9735: CBra 4 9736: cd 9737: Close 4 9738: Close 2 9739: *ACCEPT 9740: Ket 9741: Ket 9742: pq 9743: Ket 9744: End 9745: ------------------------------------------------------------------ 9746: 9747: /abc\K/+ 9748: abcdef 9749: 0: 9750: 0+ def 9751: abcdef\N\N 9752: 0: 9753: 0+ def 9754: xyzabcdef\N\N 9755: 0: 9756: 0+ def 9757: ** Failers 9758: No match 9759: abcdef\N 9760: No match 9761: xyzabcdef\N 9762: No match 9763: 9764: /^(?:(?=abc)|abc\K)/+ 9765: abcdef 9766: 0: 9767: 0+ abcdef 9768: abcdef\N\N 9769: 0: 9770: 0+ def 9771: ** Failers 9772: No match 9773: abcdef\N 9774: No match 9775: 9776: /a?b?/+ 9777: xyz 9778: 0: 9779: 0+ xyz 9780: xyzabc 9781: 0: 9782: 0+ xyzabc 9783: xyzabc\N 9784: 0: ab 9785: 0+ c 9786: xyzabc\N\N 9787: 0: 9788: 0+ yzabc 9789: xyz\N\N 9790: 0: 9791: 0+ yz 9792: ** Failers 9793: 0: 9794: 0+ ** Failers 9795: xyz\N 9796: No match 9797: 9798: /^a?b?/+ 9799: xyz 9800: 0: 9801: 0+ xyz 9802: xyzabc 9803: 0: 9804: 0+ xyzabc 9805: ** Failers 9806: 0: 9807: 0+ ** Failers 9808: xyzabc\N 9809: No match 9810: xyzabc\N\N 9811: No match 9812: xyz\N\N 9813: No match 9814: xyz\N 9815: No match 9816: 9817: /^(?<name>a|b\g<name>c)/ 9818: aaaa 9819: 0: a 9820: 1: a 9821: bacxxx 9822: 0: bac 9823: 1: bac 9824: bbaccxxx 9825: 0: bbacc 9826: 1: bbacc 9827: bbbacccxx 9828: 0: bbbaccc 9829: 1: bbbaccc 9830: 9831: /^(?<name>a|b\g'name'c)/ 9832: aaaa 9833: 0: a 9834: 1: a 9835: bacxxx 9836: 0: bac 9837: 1: bac 9838: bbaccxxx 9839: 0: bbacc 9840: 1: bbacc 9841: bbbacccxx 9842: 0: bbbaccc 9843: 1: bbbaccc 9844: 9845: /^(a|b\g<1>c)/ 9846: aaaa 9847: 0: a 9848: 1: a 9849: bacxxx 9850: 0: bac 9851: 1: bac 9852: bbaccxxx 9853: 0: bbacc 9854: 1: bbacc 9855: bbbacccxx 9856: 0: bbbaccc 9857: 1: bbbaccc 9858: 9859: /^(a|b\g'1'c)/ 9860: aaaa 9861: 0: a 9862: 1: a 9863: bacxxx 9864: 0: bac 9865: 1: bac 9866: bbaccxxx 9867: 0: bbacc 9868: 1: bbacc 9869: bbbacccxx 9870: 0: bbbaccc 9871: 1: bbbaccc 9872: 9873: /^(a|b\g'-1'c)/ 9874: aaaa 9875: 0: a 9876: 1: a 9877: bacxxx 9878: 0: bac 9879: 1: bac 9880: bbaccxxx 9881: 0: bbacc 9882: 1: bbacc 9883: bbbacccxx 9884: 0: bbbaccc 9885: 1: bbbaccc 9886: 9887: /(^(a|b\g<-1>c))/ 9888: aaaa 9889: 0: a 9890: 1: a 9891: 2: a 9892: bacxxx 9893: 0: bac 9894: 1: bac 9895: 2: bac 9896: bbaccxxx 9897: 0: bbacc 9898: 1: bbacc 9899: 2: bbacc 9900: bbbacccxx 9901: 0: bbbaccc 9902: 1: bbbaccc 9903: 2: bbbaccc 9904: 9905: /(?-i:\g<name>)(?i:(?<name>a))/ 9906: XaaX 9907: 0: aa 9908: 1: a 9909: XAAX 9910: 0: AA 9911: 1: A 9912: 9913: /(?i:\g<name>)(?-i:(?<name>a))/ 9914: XaaX 9915: 0: aa 9916: 1: a 9917: ** Failers 9918: No match 9919: XAAX 9920: No match 9921: 9922: /(?-i:\g<+1>)(?i:(a))/ 9923: XaaX 9924: 0: aa 9925: 1: a 9926: XAAX 9927: 0: AA 9928: 1: A 9929: 9930: /(?=(?<regex>(?#simplesyntax)\$(?<name>[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)(?:\[(?<index>[a-zA-Z0-9_\x{7f}-\x{ff}]+|\$\g<name>)\]|->\g<name>(\(.*?\))?)?|(?#simple syntax withbraces)\$\{(?:\g<name>(?<indices>\[(?:\g<index>|'(?:\\.|[^'\\])*'|"(?:\g<regex>|\\.|[^"\\])*")\])?|\g<complex>|\$\{\g<complex>\})\}|(?#complexsyntax)\{(?<complex>\$(?<segment>\g<name>(\g<indices>*|\(.*?\))?)(?:->\g<segment>)*|\$\g<complex>|\$\{\g<complex>\})\}))\{/ 9931: 9932: /(?<n>a|b|c)\g<n>*/ 9933: abc 9934: 0: abc 9935: 1: a 9936: accccbbb 9937: 0: accccbbb 9938: 1: a 9939: 9940: /^X(?7)(a)(?|(b)|(q)(r)(s))(c)(d)(Y)/ 9941: XYabcdY 9942: 0: XYabcdY 9943: 1: a 9944: 2: b 9945: 3: <unset> 9946: 4: <unset> 9947: 5: c 9948: 6: d 9949: 7: Y 9950: 9951: /(?<=b(?1)|zzz)(a)/ 9952: xbaax 9953: 0: a 9954: 1: a 9955: xzzzax 9956: 0: a 9957: 1: a 9958: 9959: /(a)(?<=b\1)/ 9960: Failed: lookbehind assertion is not fixed length at offset 10 9961: 9962: /(a)(?<=b+(?1))/ 9963: Failed: lookbehind assertion is not fixed length at offset 13 9964: 9965: /(a+)(?<=b(?1))/ 9966: Failed: lookbehind assertion is not fixed length at offset 14 9967: 9968: /(a(?<=b(?1)))/ 9969: Failed: lookbehind assertion is not fixed length at offset 13 9970: 9971: /(?<=b(?1))xyz/ 9972: Failed: reference to non-existent subpattern at offset 8 9973: 9974: /(?<=b(?1))xyz(b+)pqrstuvew/ 9975: Failed: lookbehind assertion is not fixed length at offset 26 9976: 9977: /(a|bc)\1/SI 9978: Capturing subpattern count = 1 9979: Max back reference = 1 9980: No options 9981: No first char 9982: No need char 9983: Subject length lower bound = 2 9984: Starting byte set: a b 9985: 9986: /(a|bc)\1{2,3}/SI 9987: Capturing subpattern count = 1 9988: Max back reference = 1 9989: No options 9990: No first char 9991: No need char 9992: Subject length lower bound = 3 9993: Starting byte set: a b 9994: 9995: /(a|bc)(?1)/SI 9996: Capturing subpattern count = 1 9997: No options 9998: No first char 9999: No need char 10000: Subject length lower bound = 2 10001: Starting byte set: a b 10002: 10003: /(a|b\1)(a|b\1)/SI 10004: Capturing subpattern count = 2 10005: Max back reference = 1 10006: No options 10007: No first char 10008: No need char 10009: Subject length lower bound = 2 10010: Starting byte set: a b 10011: 10012: /(a|b\1){2}/SI 10013: Capturing subpattern count = 1 10014: Max back reference = 1 10015: No options 10016: No first char 10017: No need char 10018: Subject length lower bound = 2 10019: Starting byte set: a b 10020: 10021: /(a|bbbb\1)(a|bbbb\1)/SI 10022: Capturing subpattern count = 2 10023: Max back reference = 1 10024: No options 10025: No first char 10026: No need char 10027: Subject length lower bound = 2 10028: Starting byte set: a b 10029: 10030: /(a|bbbb\1){2}/SI 10031: Capturing subpattern count = 1 10032: Max back reference = 1 10033: No options 10034: No first char 10035: No need char 10036: Subject length lower bound = 2 10037: Starting byte set: a b 10038: 10039: /^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]/SI 10040: Capturing subpattern count = 1 10041: Options: anchored 10042: No first char 10043: Need char = ':' 10044: Subject length lower bound = 22 10045: No set of starting bytes 10046: 10047: / (?: [\040\t] | \( 10048: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10049: \) )* # optional leading comment 10050: (?: (?: 10051: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 10052: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 10053: | 10054: " (?: # opening quote... 10055: [^\\\x80-\xff\n\015"] # Anything except backslash and quote 10056: | # or 10057: \\ [^\x80-\xff] # Escaped something (something != CR) 10058: )* " # closing quote 10059: ) # initial word 10060: (?: (?: [\040\t] | \( 10061: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10062: \) )* \. (?: [\040\t] | \( 10063: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10064: \) )* (?: 10065: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 10066: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 10067: | 10068: " (?: # opening quote... 10069: [^\\\x80-\xff\n\015"] # Anything except backslash and quote 10070: | # or 10071: \\ [^\x80-\xff] # Escaped something (something != CR) 10072: )* " # closing quote 10073: ) )* # further okay, if led by a period 10074: (?: [\040\t] | \( 10075: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10076: \) )* @ (?: [\040\t] | \( 10077: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10078: \) )* (?: 10079: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 10080: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 10081: | \[ # [ 10082: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 10083: \] # ] 10084: ) # initial subdomain 10085: (?: # 10086: (?: [\040\t] | \( 10087: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10088: \) )* \. # if led by a period... 10089: (?: [\040\t] | \( 10090: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10091: \) )* (?: 10092: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 10093: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 10094: | \[ # [ 10095: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 10096: \] # ] 10097: ) # ...further okay 10098: )* 10099: # address 10100: | # or 10101: (?: 10102: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 10103: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 10104: | 10105: " (?: # opening quote... 10106: [^\\\x80-\xff\n\015"] # Anything except backslash and quote 10107: | # or 10108: \\ [^\x80-\xff] # Escaped something (something != CR) 10109: )* " # closing quote 10110: ) # one word, optionally followed by.... 10111: (?: 10112: [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] | # atom and space parts, or... 10113: \( 10114: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10115: \) | # comments, or... 10116: 10117: " (?: # opening quote... 10118: [^\\\x80-\xff\n\015"] # Anything except backslash and quote 10119: | # or 10120: \\ [^\x80-\xff] # Escaped something (something != CR) 10121: )* " # closing quote 10122: # quoted strings 10123: )* 10124: < (?: [\040\t] | \( 10125: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10126: \) )* # leading < 10127: (?: @ (?: [\040\t] | \( 10128: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10129: \) )* (?: 10130: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 10131: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 10132: | \[ # [ 10133: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 10134: \] # ] 10135: ) # initial subdomain 10136: (?: # 10137: (?: [\040\t] | \( 10138: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10139: \) )* \. # if led by a period... 10140: (?: [\040\t] | \( 10141: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10142: \) )* (?: 10143: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 10144: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 10145: | \[ # [ 10146: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 10147: \] # ] 10148: ) # ...further okay 10149: )* 10150: 10151: (?: (?: [\040\t] | \( 10152: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10153: \) )* , (?: [\040\t] | \( 10154: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10155: \) )* @ (?: [\040\t] | \( 10156: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10157: \) )* (?: 10158: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 10159: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 10160: | \[ # [ 10161: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 10162: \] # ] 10163: ) # initial subdomain 10164: (?: # 10165: (?: [\040\t] | \( 10166: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10167: \) )* \. # if led by a period... 10168: (?: [\040\t] | \( 10169: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10170: \) )* (?: 10171: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 10172: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 10173: | \[ # [ 10174: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 10175: \] # ] 10176: ) # ...further okay 10177: )* 10178: )* # further okay, if led by comma 10179: : # closing colon 10180: (?: [\040\t] | \( 10181: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10182: \) )* )? # optional route 10183: (?: 10184: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 10185: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 10186: | 10187: " (?: # opening quote... 10188: [^\\\x80-\xff\n\015"] # Anything except backslash and quote 10189: | # or 10190: \\ [^\x80-\xff] # Escaped something (something != CR) 10191: )* " # closing quote 10192: ) # initial word 10193: (?: (?: [\040\t] | \( 10194: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10195: \) )* \. (?: [\040\t] | \( 10196: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10197: \) )* (?: 10198: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 10199: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 10200: | 10201: " (?: # opening quote... 10202: [^\\\x80-\xff\n\015"] # Anything except backslash and quote 10203: | # or 10204: \\ [^\x80-\xff] # Escaped something (something != CR) 10205: )* " # closing quote 10206: ) )* # further okay, if led by a period 10207: (?: [\040\t] | \( 10208: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10209: \) )* @ (?: [\040\t] | \( 10210: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10211: \) )* (?: 10212: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 10213: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 10214: | \[ # [ 10215: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 10216: \] # ] 10217: ) # initial subdomain 10218: (?: # 10219: (?: [\040\t] | \( 10220: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10221: \) )* \. # if led by a period... 10222: (?: [\040\t] | \( 10223: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10224: \) )* (?: 10225: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 10226: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 10227: | \[ # [ 10228: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 10229: \] # ] 10230: ) # ...further okay 10231: )* 10232: # address spec 10233: (?: [\040\t] | \( 10234: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10235: \) )* > # trailing > 10236: # name and address 10237: ) (?: [\040\t] | \( 10238: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 10239: \) )* # optional trailing comment 10240: /xSI 10241: Capturing subpattern count = 0 10242: Contains explicit CR or LF match 10243: Options: extended 10244: No first char 10245: No need char 10246: Subject length lower bound = 3 10247: Starting byte set: \x09 \x20 ! " # $ % & ' ( * + - / 0 1 2 3 4 5 6 7 8 10248: 9 = ? A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ^ _ ` a b c d e 10249: f g h i j k l m n o p q r s t u v w x y z { | } ~ \x7f 10250: 10251: /<tr([\w\W\s\d][^<>]{0,})><TD([\w\W\s\d][^<>]{0,})>([\d]{0,}\.)(.*)((<BR>([\w\W\s\d][^<>]{0,})|[\s]{0,}))<\/a><\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><\/TR>/isIS 10252: Capturing subpattern count = 11 10253: Options: caseless dotall 10254: First char = '<' 10255: Need char = '>' 10256: Subject length lower bound = 47 10257: No set of starting bytes 10258: 10259: "(?>.*/)foo"SI 10260: Capturing subpattern count = 0 10261: No options 10262: First char at start or follows newline 10263: Need char = 'o' 10264: Subject length lower bound = 4 10265: No set of starting bytes 10266: 10267: /(?(?=[^a-z]+[a-z]) \d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} ) /xSI 10268: Capturing subpattern count = 0 10269: Options: extended 10270: No first char 10271: Need char = '-' 10272: Subject length lower bound = 8 10273: No set of starting bytes 10274: 10275: /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/iSI 10276: Capturing subpattern count = 1 10277: Options: caseless 10278: No first char 10279: No need char 10280: Subject length lower bound = 1 10281: Starting byte set: A B C a b c 10282: 10283: /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/SI 10284: Capturing subpattern count = 0 10285: No options 10286: No first char 10287: Need char = 'b' 10288: Subject length lower bound = 41 10289: Starting byte set: c d 10290: 10291: /<a[\s]+href[\s]*=[\s]* # find <a href= 10292: ([\"\'])? # find single or double quote 10293: (?(1) (.*?)\1 | ([^\s]+)) # if quote found, match up to next matching 10294: # quote, otherwise match up to next space 10295: /isxSI 10296: Capturing subpattern count = 3 10297: Max back reference = 1 10298: Options: caseless extended dotall 10299: First char = '<' 10300: Need char = '=' 10301: Subject length lower bound = 9 10302: No set of starting bytes 10303: 10304: /^(?!:) # colon disallowed at start 10305: (?: # start of item 10306: (?: [0-9a-f]{1,4} | # 1-4 hex digits or 10307: (?(1)0 | () ) ) # if null previously matched, fail; else null 10308: : # followed by colon 10309: ){1,7} # end item; 1-7 of them required 10310: [0-9a-f]{1,4} $ # final hex number at end of string 10311: (?(1)|.) # check that there was an empty component 10312: /xiIS 10313: Capturing subpattern count = 1 10314: Options: anchored caseless extended 10315: No first char 10316: Need char = ':' 10317: Subject length lower bound = 2 10318: No set of starting bytes 10319: 10320: /(?|(?<a>A)|(?<a>B))/I 10321: Capturing subpattern count = 1 10322: Named capturing subpatterns: 10323: a 1 10324: a 1 10325: No options 10326: No first char 10327: No need char 10328: AB\Ca 10329: 0: A 10330: 1: A 10331: C A (1) a 10332: BA\Ca 10333: 0: B 10334: 1: B 10335: C B (1) a 10336: 10337: /(?|(?<a>A)|(?<b>B))/ 10338: Failed: different names for subpatterns of the same number are not allowed at offset 15 10339: 10340: /(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) | 10341: b(?<quote> (?<apostrophe>')|(?<realquote>")) ) 10342: (?('quote')[a-z]+|[0-9]+)/JIx 10343: Capturing subpattern count = 6 10344: Named capturing subpatterns: 10345: apostrophe 2 10346: apostrophe 5 10347: quote 1 10348: quote 4 10349: realquote 3 10350: realquote 6 10351: Options: extended dupnames 10352: No first char 10353: No need char 10354: a"aaaaa 10355: 0: a"aaaaa 10356: 1: " 10357: 2: <unset> 10358: 3: " 10359: b"aaaaa 10360: 0: b"aaaaa 10361: 1: <unset> 10362: 2: <unset> 10363: 3: <unset> 10364: 4: " 10365: 5: <unset> 10366: 6: " 10367: ** Failers 10368: No match 10369: b"11111 10370: No match 10371: a"11111 10372: No match 10373: 10374: /^(?|(a)(b)(c)(?<D>d)|(?<D>e)) (?('D')X|Y)/JDZx 10375: ------------------------------------------------------------------ 10376: Bra 10377: ^ 10378: Bra 10379: CBra 1 10380: a 10381: Ket 10382: CBra 2 10383: b 10384: Ket 10385: CBra 3 10386: c 10387: Ket 10388: CBra 4 10389: d 10390: Ket 10391: Alt 10392: CBra 1 10393: e 10394: Ket 10395: Ket 10396: Cond 10397: 4 Cond nref 10398: X 10399: Alt 10400: Y 10401: Ket 10402: Ket 10403: End 10404: ------------------------------------------------------------------ 10405: Capturing subpattern count = 4 10406: Named capturing subpatterns: 10407: D 4 10408: D 1 10409: Options: anchored extended dupnames 10410: No first char 10411: No need char 10412: abcdX 10413: 0: abcdX 10414: 1: a 10415: 2: b 10416: 3: c 10417: 4: d 10418: eX 10419: 0: eX 10420: 1: e 10421: ** Failers 10422: No match 10423: abcdY 10424: No match 10425: ey 10426: No match 10427: 10428: /(?<A>a) (b)(c) (?<A>d (?(R&A)$ | (?4)) )/JDZx 10429: ------------------------------------------------------------------ 10430: Bra 10431: CBra 1 10432: a 10433: Ket 10434: CBra 2 10435: b 10436: Ket 10437: CBra 3 10438: c 10439: Ket 10440: CBra 4 10441: d 10442: Cond 10443: Cond nrecurse 1 10444: $ 10445: Alt 10446: Once 10447: Recurse 10448: Ket 10449: Ket 10450: Ket 10451: Ket 10452: End 10453: ------------------------------------------------------------------ 10454: Capturing subpattern count = 4 10455: Named capturing subpatterns: 10456: A 1 10457: A 4 10458: Options: extended dupnames 10459: First char = 'a' 10460: Need char = 'd' 10461: abcdd 10462: 0: abcdd 10463: 1: a 10464: 2: b 10465: 3: c 10466: 4: dd 10467: ** Failers 10468: No match 10469: abcdde 10470: No match 10471: 10472: /abcd*/ 10473: xxxxabcd\P 10474: 0: abcd 10475: xxxxabcd\P\P 10476: Partial match: abcd 10477: 10478: /abcd*/i 10479: xxxxabcd\P 10480: 0: abcd 10481: xxxxabcd\P\P 10482: Partial match: abcd 10483: XXXXABCD\P 10484: 0: ABCD 10485: XXXXABCD\P\P 10486: Partial match: ABCD 10487: 10488: /abc\d*/ 10489: xxxxabc1\P 10490: 0: abc1 10491: xxxxabc1\P\P 10492: Partial match: abc1 10493: 10494: /(a)bc\1*/ 10495: xxxxabca\P 10496: 0: abca 10497: 1: a 10498: xxxxabca\P\P 10499: Partial match: abca 10500: 10501: /abc[de]*/ 10502: xxxxabcde\P 10503: 0: abcde 10504: xxxxabcde\P\P 10505: Partial match: abcde 10506: 10507: /-- This is not in the Perl >= 5.10 test because Perl seems currently to be 10508: broken and not behaving as specified in that it *does* bumpalong after 10509: hitting (*COMMIT). --/ 10510: 10511: /(?1)(A(*COMMIT)|B)D/ 10512: ABD 10513: 0: ABD 10514: 1: B 10515: XABD 10516: 0: ABD 10517: 1: B 10518: BAD 10519: 0: BAD 10520: 1: A 10521: ABXABD 10522: 0: ABD 10523: 1: B 10524: ** Failers 10525: No match 10526: ABX 10527: No match 10528: BAXBAD 10529: No match 10530: 10531: /(\3)(\1)(a)/<JS> 10532: cat 10533: 0: a 10534: 1: 10535: 2: 10536: 3: a 10537: 10538: /(\3)(\1)(a)/SI<JS> 10539: Capturing subpattern count = 3 10540: Max back reference = 3 10541: Options: 10542: No first char 10543: Need char = 'a' 10544: Subject length lower bound = 1 10545: No set of starting bytes 10546: cat 10547: 0: a 10548: 1: 10549: 2: 10550: 3: a 10551: 10552: /(\3)(\1)(a)/SI 10553: Capturing subpattern count = 3 10554: Max back reference = 3 10555: No options 10556: No first char 10557: Need char = 'a' 10558: Subject length lower bound = 3 10559: No set of starting bytes 10560: cat 10561: No match 10562: 10563: /i(?(DEFINE)(?<s>a))/SI 10564: Capturing subpattern count = 1 10565: Named capturing subpatterns: 10566: s 1 10567: No options 10568: First char = 'i' 10569: No need char 10570: Subject length lower bound = 1 10571: No set of starting bytes 10572: i 10573: 0: i 10574: 10575: /()i(?(1)a)/SI 10576: Capturing subpattern count = 1 10577: No options 10578: No first char 10579: Need char = 'i' 10580: Subject length lower bound = 1 10581: Starting byte set: i 10582: ia 10583: 0: ia 10584: 1: 10585: 10586: /(?i)a(?-i)b|c/BZ 10587: ------------------------------------------------------------------ 10588: Bra 10589: NC a 10590: 00 Opt 10591: b 10592: Alt 10593: 00 Opt 10594: c 10595: Ket 10596: End 10597: ------------------------------------------------------------------ 10598: XabX 10599: 0: ab 10600: XAbX 10601: 0: Ab 10602: CcC 10603: 0: c 10604: ** Failers 10605: No match 10606: XABX 10607: No match 10608: 10609: /(?i)a(?s)b|c/BZ 10610: ------------------------------------------------------------------ 10611: Bra 10612: NC a 10613: 05 Opt 10614: NC b 10615: Alt 10616: 05 Opt 10617: NC c 10618: Ket 10619: End 10620: ------------------------------------------------------------------ 10621: 10622: /(?i)a(?s-i)b|c/BZ 10623: ------------------------------------------------------------------ 10624: Bra 10625: NC a 10626: 04 Opt 10627: b 10628: Alt 10629: 04 Opt 10630: c 10631: Ket 10632: End 10633: ------------------------------------------------------------------ 10634: 10635: /^(ab(c\1)d|x){2}$/BZ 10636: ------------------------------------------------------------------ 10637: Bra 10638: ^ 10639: Once 10640: CBra 1 10641: ab 10642: CBra 2 10643: c 10644: \1 10645: Ket 10646: d 10647: Alt 10648: x 10649: Ket 10650: Ket 10651: Once 10652: CBra 1 10653: ab 10654: CBra 2 10655: c 10656: \1 10657: Ket 10658: d 10659: Alt 10660: x 10661: Ket 10662: Ket 10663: $ 10664: Ket 10665: End 10666: ------------------------------------------------------------------ 10667: xabcxd 10668: 0: xabcxd 10669: 1: abcxd 10670: 2: cx 10671: 10672: /^(?&t)*+(?(DEFINE)(?<t>.))$/BZ 10673: ------------------------------------------------------------------ 10674: Bra 10675: ^ 10676: Once 10677: Brazero 10678: Once 10679: Recurse 10680: KetRmax 10681: Ket 10682: Cond 10683: Cond def 10684: CBra 1 10685: Any 10686: Ket 10687: Ket 10688: $ 10689: Ket 10690: End 10691: ------------------------------------------------------------------ 10692: 10693: /^(?&t)*(?(DEFINE)(?<t>.))$/BZ 10694: ------------------------------------------------------------------ 10695: Bra 10696: ^ 10697: Brazero 10698: Once 10699: Recurse 10700: KetRmax 10701: Cond 10702: Cond def 10703: CBra 1 10704: Any 10705: Ket 10706: Ket 10707: $ 10708: Ket 10709: End 10710: ------------------------------------------------------------------ 10711: 10712: / -- The first four of these are not in the Perl >= 5.10 test because Perl 10713: documents that the use of \K in assertions is "not well defined". The 10714: last is here because Perl gives the match as "b" rather than "ab". I 10715: believe this to be a Perl bug. --/ 10716: 10717: /(?=a\Kb)ab/ 10718: ab 10719: 0: b 10720: 10721: /(?!a\Kb)ac/ 10722: ac 10723: 0: ac 10724: 10725: /^abc(?<=b\Kc)d/ 10726: abcd 10727: 0: cd 10728: 10729: /^abc(?<!b\Kq)d/ 10730: abcd 10731: 0: abcd 10732: 10733: /(?>a\Kb)z|(ab)/ 10734: ab 10735: 0: ab 10736: 1: ab 10737: 10738: /----------------------/ 10739: 10740: /(?P<L1>(?P<L2>0|)|(?P>L2)(?P>L1))/ 10741: Failed: recursive call could loop indefinitely at offset 31 10742: 10743: /abc(*MARK:)pqr/ 10744: Failed: (*MARK) must have an argument at offset 10 10745: 10746: /abc(*:)pqr/ 10747: Failed: (*MARK) must have an argument at offset 6 10748: 10749: /abc(*FAIL:123)xyz/ 10750: Failed: an argument is not allowed for (*ACCEPT), (*FAIL), or (*COMMIT) at offset 13 10751: 10752: /--- This should, and does, fail. In Perl, it does not, which I think is a 10753: bug because replacing the B in the pattern by (B|D) does make it fail. ---/ 10754: 10755: /A(*COMMIT)B/+K 10756: ACABX 10757: No match 10758: 10759: /--- These should be different, but in Perl 5.11 are not, which I think 10760: is a bug in Perl. ---/ 10761: 10762: /A(*THEN)B|A(*THEN)C/K 10763: AC 10764: 0: AC 10765: 10766: /A(*PRUNE)B|A(*PRUNE)C/K 10767: AC 10768: No match 10769: 10770: /--- A whole lot of tests of verbs with arguments are here rather than in test 10771: 11 because Perl doesn't seem to follow its specification entirely 10772: correctly. ---/ 10773: 10774: /--- Perl 5.11 sets $REGERROR on the AC failure case here; PCRE does not. It is 10775: not clear how Perl defines "involved in the failure of the match". ---/ 10776: 10777: /^(A(*THEN:A)B|C(*THEN:B)D)/K 10778: AB 10779: 0: AB 10780: 1: AB 10781: CD 10782: 0: CD 10783: 1: CD 10784: ** Failers 10785: No match 10786: AC 10787: No match 10788: CB 10789: No match, mark = B 10790: 10791: /--- Check the use of names for success and failure. PCRE doesn't show these 10792: names for success, though Perl does, contrary to its spec. ---/ 10793: 10794: /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K 10795: AB 10796: 0: AB 10797: 1: AB 10798: CD 10799: 0: CD 10800: 1: CD 10801: ** Failers 10802: No match 10803: AC 10804: No match, mark = A 10805: CB 10806: No match, mark = B 10807: 10808: /--- An empty name does not pass back an empty string. It is the same as if no 10809: name were given. ---/ 10810: 10811: /^(A(*PRUNE:)B|C(*PRUNE:B)D)/K 10812: AB 10813: 0: AB 10814: 1: AB 10815: CD 10816: 0: CD 10817: 1: CD 10818: 10819: /--- PRUNE goes to next bumpalong; COMMIT does not. ---/ 10820: 10821: /A(*PRUNE:A)B/K 10822: ACAB 10823: 0: AB 10824: 10825: /(*MARK:A)(*PRUNE:B)(C|X)/K 10826: C 10827: 0: C 10828: 1: C 10829: MK: A 10830: D 10831: No match, mark = B 10832: 10833: /(*MARK:A)(*THEN:B)(C|X)/K 10834: C 10835: 0: C 10836: 1: C 10837: MK: A 10838: D 10839: No match, mark = B 10840: 10841: /--- This should fail, as the skip causes a bump to offset 3 (the skip) ---/ 10842: 10843: /A(*MARK:A)A+(*SKIP)(B|Z) | AC/xK 10844: AAAC 10845: No match 10846: 10847: /--- Same --/ 10848: 10849: /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xK 10850: AAAC 10851: No match 10852: 10853: /--- This should fail; the SKIP advances by one, but when we get to AC, the 10854: PRUNE kills it. ---/ 10855: 10856: /A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xK 10857: AAAC 10858: No match 10859: 10860: /A(*:A)A+(*SKIP)(B|Z) | AC/xK 10861: AAAC 10862: No match 10863: 10864: /--- This should fail, as a null name is the same as no name ---/ 10865: 10866: /A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xK 10867: AAAC 10868: No match 10869: 10870: /--- This fails in PCRE, and I think that is in accordance with Perl's 10871: documentation, though in Perl it succeeds. ---/ 10872: 10873: /A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xK 10874: AAAC 10875: No match 10876: 10877: /--- Mark names can be duplicated ---/ 10878: 10879: /A(*:A)B|X(*:A)Y/K 10880: AABC 10881: 0: AB 10882: MK: A 10883: XXYZ 10884: 0: XY 10885: MK: A 10886: 10887: /^A(*:A)B|^X(*:A)Y/K 10888: ** Failers 10889: No match 10890: XAQQ 10891: No match, mark = A 10892: 10893: /--- A check on what happens after hitting a mark and them bumping along to 10894: something that does not even start. Perl reports tags after the failures here, 10895: though it does not when the individual letters are made into something 10896: more complicated. ---/ 10897: 10898: /A(*:A)B|XX(*:B)Y/K 10899: AABC 10900: 0: AB 10901: MK: A 10902: XXYZ 10903: 0: XXY 10904: MK: B 10905: ** Failers 10906: No match 10907: XAQQ 10908: No match 10909: XAQQXZZ 10910: No match 10911: AXQQQ 10912: No match 10913: AXXQQQ 10914: No match 10915: 10916: /--- COMMIT at the start of a pattern should be the same as an anchor. Perl 10917: optimizations defeat this. So does the PCRE optimization unless we disable it 10918: with \Y. ---/ 10919: 10920: /(*COMMIT)ABC/ 10921: ABCDEFG 10922: 0: ABC 10923: ** Failers 10924: No match 10925: DEFGABC\Y 10926: No match 10927: 10928: /--- Repeat some tests with added studying. ---/ 10929: 10930: /A(*COMMIT)B/+KS 10931: ACABX 10932: No match 10933: 10934: /A(*THEN)B|A(*THEN)C/KS 10935: AC 10936: 0: AC 10937: 10938: /A(*PRUNE)B|A(*PRUNE)C/KS 10939: AC 10940: No match 10941: 10942: /^(A(*THEN:A)B|C(*THEN:B)D)/KS 10943: AB 10944: 0: AB 10945: 1: AB 10946: CD 10947: 0: CD 10948: 1: CD 10949: ** Failers 10950: No match 10951: AC 10952: No match 10953: CB 10954: No match, mark = B 10955: 10956: /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/KS 10957: AB 10958: 0: AB 10959: 1: AB 10960: CD 10961: 0: CD 10962: 1: CD 10963: ** Failers 10964: No match 10965: AC 10966: No match, mark = A 10967: CB 10968: No match, mark = B 10969: 10970: /^(A(*PRUNE:)B|C(*PRUNE:B)D)/KS 10971: AB 10972: 0: AB 10973: 1: AB 10974: CD 10975: 0: CD 10976: 1: CD 10977: 10978: /A(*PRUNE:A)B/KS 10979: ACAB 10980: 0: AB 10981: 10982: /(*MARK:A)(*PRUNE:B)(C|X)/KS 10983: C 10984: 0: C 10985: 1: C 10986: MK: A 10987: D 10988: No match 10989: 10990: /(*MARK:A)(*THEN:B)(C|X)/KS 10991: C 10992: 0: C 10993: 1: C 10994: MK: A 10995: D 10996: No match 10997: 10998: /A(*MARK:A)A+(*SKIP)(B|Z) | AC/xKS 10999: AAAC 11000: No match 11001: 11002: /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xKS 11003: AAAC 11004: No match 11005: 11006: /A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xKS 11007: AAAC 11008: No match 11009: 11010: /A(*:A)A+(*SKIP)(B|Z) | AC/xKS 11011: AAAC 11012: No match 11013: 11014: /A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xKS 11015: AAAC 11016: No match 11017: 11018: /A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xKS 11019: AAAC 11020: No match 11021: 11022: /A(*:A)B|XX(*:B)Y/KS 11023: AABC 11024: 0: AB 11025: MK: A 11026: XXYZ 11027: 0: XXY 11028: MK: B 11029: ** Failers 11030: No match 11031: XAQQ 11032: No match 11033: XAQQXZZ 11034: No match 11035: AXQQQ 11036: No match 11037: AXXQQQ 11038: No match 11039: 11040: /(*COMMIT)ABC/ 11041: ABCDEFG 11042: 0: ABC 11043: ** Failers 11044: No match 11045: DEFGABC\Y 11046: No match 11047: 11048: /^(ab (c+(*THEN)cd) | xyz)/x 11049: abcccd 11050: No match 11051: 11052: /^(ab (c+(*PRUNE)cd) | xyz)/x 11053: abcccd 11054: No match 11055: 11056: /^(ab (c+(*FAIL)cd) | xyz)/x 11057: abcccd 11058: No match 11059: 11060: /--- Perl 5.11 gets some of these wrong ---/ 11061: 11062: /(?>.(*ACCEPT))*?5/ 11063: abcde 11064: 0: a 11065: 11066: /(.(*ACCEPT))*?5/ 11067: abcde 11068: 0: a 11069: 1: a 11070: 11071: /(.(*ACCEPT))5/ 11072: abcde 11073: 0: a 11074: 1: a 11075: 11076: /(.(*ACCEPT))*5/ 11077: abcde 11078: 0: a 11079: 1: a 11080: 11081: /A\NB./BZ 11082: ------------------------------------------------------------------ 11083: Bra 11084: A 11085: Any 11086: B 11087: Any 11088: Ket 11089: End 11090: ------------------------------------------------------------------ 11091: ACBD 11092: 0: ACBD 11093: *** Failers 11094: No match 11095: A\nB 11096: No match 11097: ACB\n 11098: No match 11099: 11100: /A\NB./sBZ 11101: ------------------------------------------------------------------ 11102: Bra 11103: A 11104: Any 11105: B 11106: AllAny 11107: Ket 11108: End 11109: ------------------------------------------------------------------ 11110: ACBD 11111: 0: ACBD 11112: ACB\n 11113: 0: ACB\x0a 11114: *** Failers 11115: No match 11116: A\nB 11117: No match 11118: 11119: /A\NB/<crlf> 11120: A\nB 11121: 0: A\x0aB 11122: A\rB 11123: 0: A\x0dB 11124: ** Failers 11125: No match 11126: A\r\nB 11127: No match 11128: 11129: /\R+b/BZ 11130: ------------------------------------------------------------------ 11131: Bra 11132: \R++ 11133: b 11134: Ket 11135: End 11136: ------------------------------------------------------------------ 11137: 11138: /\R+\n/BZ 11139: ------------------------------------------------------------------ 11140: Bra 11141: \R+ 11142: \x0a 11143: Ket 11144: End 11145: ------------------------------------------------------------------ 11146: 11147: /\R+\d/BZ 11148: ------------------------------------------------------------------ 11149: Bra 11150: \R++ 11151: \d 11152: Ket 11153: End 11154: ------------------------------------------------------------------ 11155: 11156: /\d*\R/BZ 11157: ------------------------------------------------------------------ 11158: Bra 11159: \d*+ 11160: \R 11161: Ket 11162: End 11163: ------------------------------------------------------------------ 11164: 11165: /\s*\R/BZ 11166: ------------------------------------------------------------------ 11167: Bra 11168: \s*+ 11169: \R 11170: Ket 11171: End 11172: ------------------------------------------------------------------ 11173: 11174: /-- Perl treats this one differently, not failing the second string. I believe 11175: that is a bug in Perl. --/ 11176: 11177: /^((abc|abcx)(*THEN)y|abcd)/ 11178: abcd 11179: 0: abcd 11180: 1: abcd 11181: *** Failers 11182: No match 11183: abcxy 11184: No match 11185: 11186: /(?<=abc)def/ 11187: abc\P\P 11188: Partial match: abc 11189: 11190: /abc$/ 11191: abc 11192: 0: abc 11193: abc\P 11194: 0: abc 11195: abc\P\P 11196: Partial match: abc 11197: 11198: /abc$/m 11199: abc 11200: 0: abc 11201: abc\n 11202: 0: abc 11203: abc\P\P 11204: Partial match: abc 11205: abc\n\P\P 11206: 0: abc 11207: abc\P 11208: 0: abc 11209: abc\n\P 11210: 0: abc 11211: 11212: /abc\z/ 11213: abc 11214: 0: abc 11215: abc\P 11216: 0: abc 11217: abc\P\P 11218: Partial match: abc 11219: 11220: /abc\Z/ 11221: abc 11222: 0: abc 11223: abc\P 11224: 0: abc 11225: abc\P\P 11226: Partial match: abc 11227: 11228: /abc\b/ 11229: abc 11230: 0: abc 11231: abc\P 11232: 0: abc 11233: abc\P\P 11234: Partial match: abc 11235: 11236: /abc\B/ 11237: abc 11238: No match 11239: abc\P 11240: Partial match: abc 11241: abc\P\P 11242: Partial match: abc 11243: 11244: /.+/ 11245: abc\>0 11246: 0: abc 11247: abc\>1 11248: 0: bc 11249: abc\>2 11250: 0: c 11251: abc\>3 11252: No match 11253: abc\>4 11254: Error -24 11255: abc\>-4 11256: Error -24 11257: 11258: /^\cģ/ 11259: Failed: \c must be followed by an ASCII character at offset 3 11260: 11261: /(?P<abn>(?P=abn)xxx)/BZ 11262: ------------------------------------------------------------------ 11263: Bra 11264: Once 11265: CBra 1 11266: \1 11267: xxx 11268: Ket 11269: Ket 11270: Ket 11271: End 11272: ------------------------------------------------------------------ 11273: 11274: /(a\1z)/BZ 11275: ------------------------------------------------------------------ 11276: Bra 11277: Once 11278: CBra 1 11279: a 11280: \1 11281: z 11282: Ket 11283: Ket 11284: Ket 11285: End 11286: ------------------------------------------------------------------ 11287: 11288: /(?P<abn>(?P=abn)(?<badstufxxx)/BZ 11289: Failed: syntax error in subpattern name (missing terminator) at offset 29 11290: 11291: /(?P<abn>(?P=axn)xxx)/BZ 11292: Failed: reference to non-existent subpattern at offset 15 11293: 11294: /(?P<abn>(?P=axn)xxx)(?<axn>yy)/BZ 11295: ------------------------------------------------------------------ 11296: Bra 11297: CBra 1 11298: \2 11299: xxx 11300: Ket 11301: CBra 2 11302: yy 11303: Ket 11304: Ket 11305: End 11306: ------------------------------------------------------------------ 11307: 11308: /-- End of testinput2 --/