Return to testoutput1 CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / pcre / pcrelib / testdata |
1.1 misho 1: /-- This set of tests is for features that are compatible with all versions of 1.1.1.2 ! misho 2: Perl >= 5.10, in non-UTF-8 mode. It should run clean for both the 8-bit and ! 3: 16-bit PCRE libraries. --/ 1.1 misho 4: 5: /the quick brown fox/ 6: the quick brown fox 7: 0: the quick brown fox 8: The quick brown FOX 9: No match 10: What do you know about the quick brown fox? 11: 0: the quick brown fox 12: What do you know about THE QUICK BROWN FOX? 13: No match 14: 15: /The quick brown fox/i 16: the quick brown fox 17: 0: the quick brown fox 18: The quick brown FOX 19: 0: The quick brown FOX 20: What do you know about the quick brown fox? 21: 0: the quick brown fox 22: What do you know about THE QUICK BROWN FOX? 23: 0: THE QUICK BROWN FOX 24: 25: /abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/ 26: abcd\t\n\r\f\a\e9;\$\\?caxyz 27: 0: abcd\x09\x0a\x0d\x0c\x07\x1b9;$\?caxyz 28: 29: /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/ 30: abxyzpqrrrabbxyyyypqAzz 31: 0: abxyzpqrrrabbxyyyypqAzz 32: abxyzpqrrrabbxyyyypqAzz 33: 0: abxyzpqrrrabbxyyyypqAzz 34: aabxyzpqrrrabbxyyyypqAzz 35: 0: aabxyzpqrrrabbxyyyypqAzz 36: aaabxyzpqrrrabbxyyyypqAzz 37: 0: aaabxyzpqrrrabbxyyyypqAzz 38: aaaabxyzpqrrrabbxyyyypqAzz 39: 0: aaaabxyzpqrrrabbxyyyypqAzz 40: abcxyzpqrrrabbxyyyypqAzz 41: 0: abcxyzpqrrrabbxyyyypqAzz 42: aabcxyzpqrrrabbxyyyypqAzz 43: 0: aabcxyzpqrrrabbxyyyypqAzz 44: aaabcxyzpqrrrabbxyyyypAzz 45: 0: aaabcxyzpqrrrabbxyyyypAzz 46: aaabcxyzpqrrrabbxyyyypqAzz 47: 0: aaabcxyzpqrrrabbxyyyypqAzz 48: aaabcxyzpqrrrabbxyyyypqqAzz 49: 0: aaabcxyzpqrrrabbxyyyypqqAzz 50: aaabcxyzpqrrrabbxyyyypqqqAzz 51: 0: aaabcxyzpqrrrabbxyyyypqqqAzz 52: aaabcxyzpqrrrabbxyyyypqqqqAzz 53: 0: aaabcxyzpqrrrabbxyyyypqqqqAzz 54: aaabcxyzpqrrrabbxyyyypqqqqqAzz 55: 0: aaabcxyzpqrrrabbxyyyypqqqqqAzz 56: aaabcxyzpqrrrabbxyyyypqqqqqqAzz 57: 0: aaabcxyzpqrrrabbxyyyypqqqqqqAzz 58: aaaabcxyzpqrrrabbxyyyypqAzz 59: 0: aaaabcxyzpqrrrabbxyyyypqAzz 60: abxyzzpqrrrabbxyyyypqAzz 61: 0: abxyzzpqrrrabbxyyyypqAzz 62: aabxyzzzpqrrrabbxyyyypqAzz 63: 0: aabxyzzzpqrrrabbxyyyypqAzz 64: aaabxyzzzzpqrrrabbxyyyypqAzz 65: 0: aaabxyzzzzpqrrrabbxyyyypqAzz 66: aaaabxyzzzzpqrrrabbxyyyypqAzz 67: 0: aaaabxyzzzzpqrrrabbxyyyypqAzz 68: abcxyzzpqrrrabbxyyyypqAzz 69: 0: abcxyzzpqrrrabbxyyyypqAzz 70: aabcxyzzzpqrrrabbxyyyypqAzz 71: 0: aabcxyzzzpqrrrabbxyyyypqAzz 72: aaabcxyzzzzpqrrrabbxyyyypqAzz 73: 0: aaabcxyzzzzpqrrrabbxyyyypqAzz 74: aaaabcxyzzzzpqrrrabbxyyyypqAzz 75: 0: aaaabcxyzzzzpqrrrabbxyyyypqAzz 76: aaaabcxyzzzzpqrrrabbbxyyyypqAzz 77: 0: aaaabcxyzzzzpqrrrabbbxyyyypqAzz 78: aaaabcxyzzzzpqrrrabbbxyyyyypqAzz 79: 0: aaaabcxyzzzzpqrrrabbbxyyyyypqAzz 80: aaabcxyzpqrrrabbxyyyypABzz 81: 0: aaabcxyzpqrrrabbxyyyypABzz 82: aaabcxyzpqrrrabbxyyyypABBzz 83: 0: aaabcxyzpqrrrabbxyyyypABBzz 84: >>>aaabxyzpqrrrabbxyyyypqAzz 85: 0: aaabxyzpqrrrabbxyyyypqAzz 86: >aaaabxyzpqrrrabbxyyyypqAzz 87: 0: aaaabxyzpqrrrabbxyyyypqAzz 88: >>>>abcxyzpqrrrabbxyyyypqAzz 89: 0: abcxyzpqrrrabbxyyyypqAzz 90: *** Failers 91: No match 92: abxyzpqrrabbxyyyypqAzz 93: No match 94: abxyzpqrrrrabbxyyyypqAzz 95: No match 96: abxyzpqrrrabxyyyypqAzz 97: No match 98: aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz 99: No match 100: aaaabcxyzzzzpqrrrabbbxyyypqAzz 101: No match 102: aaabcxyzpqrrrabbxyyyypqqqqqqqAzz 103: No match 104: 105: /^(abc){1,2}zz/ 106: abczz 107: 0: abczz 108: 1: abc 109: abcabczz 110: 0: abcabczz 111: 1: abc 112: *** Failers 113: No match 114: zz 115: No match 116: abcabcabczz 117: No match 118: >>abczz 119: No match 120: 121: /^(b+?|a){1,2}?c/ 122: bc 123: 0: bc 124: 1: b 125: bbc 126: 0: bbc 127: 1: b 128: bbbc 129: 0: bbbc 130: 1: bb 131: bac 132: 0: bac 133: 1: a 134: bbac 135: 0: bbac 136: 1: a 137: aac 138: 0: aac 139: 1: a 140: abbbbbbbbbbbc 141: 0: abbbbbbbbbbbc 142: 1: bbbbbbbbbbb 143: bbbbbbbbbbbac 144: 0: bbbbbbbbbbbac 145: 1: a 146: *** Failers 147: No match 148: aaac 149: No match 150: abbbbbbbbbbbac 151: No match 152: 153: /^(b+|a){1,2}c/ 154: bc 155: 0: bc 156: 1: b 157: bbc 158: 0: bbc 159: 1: bb 160: bbbc 161: 0: bbbc 162: 1: bbb 163: bac 164: 0: bac 165: 1: a 166: bbac 167: 0: bbac 168: 1: a 169: aac 170: 0: aac 171: 1: a 172: abbbbbbbbbbbc 173: 0: abbbbbbbbbbbc 174: 1: bbbbbbbbbbb 175: bbbbbbbbbbbac 176: 0: bbbbbbbbbbbac 177: 1: a 178: *** Failers 179: No match 180: aaac 181: No match 182: abbbbbbbbbbbac 183: No match 184: 185: /^(b+|a){1,2}?bc/ 186: bbc 187: 0: bbc 188: 1: b 189: 190: /^(b*|ba){1,2}?bc/ 191: babc 192: 0: babc 193: 1: ba 194: bbabc 195: 0: bbabc 196: 1: ba 197: bababc 198: 0: bababc 199: 1: ba 200: *** Failers 201: No match 202: bababbc 203: No match 204: babababc 205: No match 206: 207: /^(ba|b*){1,2}?bc/ 208: babc 209: 0: babc 210: 1: ba 211: bbabc 212: 0: bbabc 213: 1: ba 214: bababc 215: 0: bababc 216: 1: ba 217: *** Failers 218: No match 219: bababbc 220: No match 221: babababc 222: No match 223: 224: /^\ca\cA\c[\c{\c:/ 225: \x01\x01\e;z 226: 0: \x01\x01\x1b;z 227: 228: /^[ab\]cde]/ 229: athing 230: 0: a 231: bthing 232: 0: b 233: ]thing 234: 0: ] 235: cthing 236: 0: c 237: dthing 238: 0: d 239: ething 240: 0: e 241: *** Failers 242: No match 243: fthing 244: No match 245: [thing 246: No match 247: \\thing 248: No match 249: 250: /^[]cde]/ 251: ]thing 252: 0: ] 253: cthing 254: 0: c 255: dthing 256: 0: d 257: ething 258: 0: e 259: *** Failers 260: No match 261: athing 262: No match 263: fthing 264: No match 265: 266: /^[^ab\]cde]/ 267: fthing 268: 0: f 269: [thing 270: 0: [ 271: \\thing 272: 0: \ 273: *** Failers 274: 0: * 275: athing 276: No match 277: bthing 278: No match 279: ]thing 280: No match 281: cthing 282: No match 283: dthing 284: No match 285: ething 286: No match 287: 288: /^[^]cde]/ 289: athing 290: 0: a 291: fthing 292: 0: f 293: *** Failers 294: 0: * 295: ]thing 296: No match 297: cthing 298: No match 299: dthing 300: No match 301: ething 302: No match 303: 304: /^\/ 305: 306: 0: \x81 307: 308: /^/ 309: 310: 0: \xff 311: 312: /^[0-9]+$/ 313: 0 314: 0: 0 315: 1 316: 0: 1 317: 2 318: 0: 2 319: 3 320: 0: 3 321: 4 322: 0: 4 323: 5 324: 0: 5 325: 6 326: 0: 6 327: 7 328: 0: 7 329: 8 330: 0: 8 331: 9 332: 0: 9 333: 10 334: 0: 10 335: 100 336: 0: 100 337: *** Failers 338: No match 339: abc 340: No match 341: 342: /^.*nter/ 343: enter 344: 0: enter 345: inter 346: 0: inter 347: uponter 348: 0: uponter 349: 350: /^xxx[0-9]+$/ 351: xxx0 352: 0: xxx0 353: xxx1234 354: 0: xxx1234 355: *** Failers 356: No match 357: xxx 358: No match 359: 360: /^.+[0-9][0-9][0-9]$/ 361: x123 362: 0: x123 363: xx123 364: 0: xx123 365: 123456 366: 0: 123456 367: *** Failers 368: No match 369: 123 370: No match 371: x1234 372: 0: x1234 373: 374: /^.+?[0-9][0-9][0-9]$/ 375: x123 376: 0: x123 377: xx123 378: 0: xx123 379: 123456 380: 0: 123456 381: *** Failers 382: No match 383: 123 384: No match 385: x1234 386: 0: x1234 387: 388: /^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/ 389: abc!pqr=apquxz.ixr.zzz.ac.uk 390: 0: abc!pqr=apquxz.ixr.zzz.ac.uk 391: 1: abc 392: 2: pqr 393: *** Failers 394: No match 395: !pqr=apquxz.ixr.zzz.ac.uk 396: No match 397: abc!=apquxz.ixr.zzz.ac.uk 398: No match 399: abc!pqr=apquxz:ixr.zzz.ac.uk 400: No match 401: abc!pqr=apquxz.ixr.zzz.ac.ukk 402: No match 403: 404: /:/ 405: Well, we need a colon: somewhere 406: 0: : 407: *** Fail if we don't 408: No match 409: 410: /([\da-f:]+)$/i 411: 0abc 412: 0: 0abc 413: 1: 0abc 414: abc 415: 0: abc 416: 1: abc 417: fed 418: 0: fed 419: 1: fed 420: E 421: 0: E 422: 1: E 423: :: 424: 0: :: 425: 1: :: 426: 5f03:12C0::932e 427: 0: 5f03:12C0::932e 428: 1: 5f03:12C0::932e 429: fed def 430: 0: def 431: 1: def 432: Any old stuff 433: 0: ff 434: 1: ff 435: *** Failers 436: No match 437: 0zzz 438: No match 439: gzzz 440: No match 441: fed\x20 442: No match 443: Any old rubbish 444: No match 445: 446: /^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/ 447: .1.2.3 448: 0: .1.2.3 449: 1: 1 450: 2: 2 451: 3: 3 452: A.12.123.0 453: 0: A.12.123.0 454: 1: 12 455: 2: 123 456: 3: 0 457: *** Failers 458: No match 459: .1.2.3333 460: No match 461: 1.2.3 462: No match 463: 1234.2.3 464: No match 465: 466: /^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/ 467: 1 IN SOA non-sp1 non-sp2( 468: 0: 1 IN SOA non-sp1 non-sp2( 469: 1: 1 470: 2: non-sp1 471: 3: non-sp2 472: 1 IN SOA non-sp1 non-sp2 ( 473: 0: 1 IN SOA non-sp1 non-sp2 ( 474: 1: 1 475: 2: non-sp1 476: 3: non-sp2 477: *** Failers 478: No match 479: 1IN SOA non-sp1 non-sp2( 480: No match 481: 482: /^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/ 483: a. 484: 0: a. 485: Z. 486: 0: Z. 487: 2. 488: 0: 2. 489: ab-c.pq-r. 490: 0: ab-c.pq-r. 491: 1: .pq-r 492: sxk.zzz.ac.uk. 493: 0: sxk.zzz.ac.uk. 494: 1: .uk 495: x-.y-. 496: 0: x-.y-. 497: 1: .y- 498: *** Failers 499: No match 500: -abc.peq. 501: No match 502: 503: /^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/ 504: *.a 505: 0: *.a 506: *.b0-a 507: 0: *.b0-a 508: 1: 0-a 509: *.c3-b.c 510: 0: *.c3-b.c 511: 1: 3-b 512: 2: .c 513: *.c-a.b-c 514: 0: *.c-a.b-c 515: 1: -a 516: 2: .b-c 517: 3: -c 518: *** Failers 519: No match 520: *.0 521: No match 522: *.a- 523: No match 524: *.a-b.c- 525: No match 526: *.c-a.0-c 527: No match 528: 529: /^(?=ab(de))(abd)(e)/ 530: abde 531: 0: abde 532: 1: de 533: 2: abd 534: 3: e 535: 536: /^(?!(ab)de|x)(abd)(f)/ 537: abdf 538: 0: abdf 539: 1: <unset> 540: 2: abd 541: 3: f 542: 543: /^(?=(ab(cd)))(ab)/ 544: abcd 545: 0: ab 546: 1: abcd 547: 2: cd 548: 3: ab 549: 550: /^[\da-f](\.[\da-f])*$/i 551: a.b.c.d 552: 0: a.b.c.d 553: 1: .d 554: A.B.C.D 555: 0: A.B.C.D 556: 1: .D 557: a.b.c.1.2.3.C 558: 0: a.b.c.1.2.3.C 559: 1: .C 560: 561: /^\".*\"\s*(;.*)?$/ 562: \"1234\" 563: 0: "1234" 564: \"abcd\" ; 565: 0: "abcd" ; 566: 1: ; 567: \"\" ; rhubarb 568: 0: "" ; rhubarb 569: 1: ; rhubarb 570: *** Failers 571: No match 572: \"1234\" : things 573: No match 574: 575: /^$/ 576: \ 577: 0: 578: *** Failers 579: No match 580: 581: / ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/x 582: ab c 583: 0: ab c 584: *** Failers 585: No match 586: abc 587: No match 588: ab cde 589: No match 590: 591: /(?x) ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/ 592: ab c 593: 0: ab c 594: *** Failers 595: No match 596: abc 597: No match 598: ab cde 599: No match 600: 601: /^ a\ b[c ]d $/x 602: a bcd 603: 0: a bcd 604: a b d 605: 0: a b d 606: *** Failers 607: No match 608: abcd 609: No match 610: ab d 611: No match 612: 613: /^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/ 614: abcdefhijklm 615: 0: abcdefhijklm 616: 1: abc 617: 2: bc 618: 3: c 619: 4: def 620: 5: ef 621: 6: f 622: 7: hij 623: 8: ij 624: 9: j 625: 10: klm 626: 11: lm 627: 12: m 628: 629: /^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/ 630: abcdefhijklm 631: 0: abcdefhijklm 632: 1: bc 633: 2: c 634: 3: ef 635: 4: f 636: 5: ij 637: 6: j 638: 7: lm 639: 8: m 640: 641: /^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/ 642: a+ Z0+\x08\n\x1d\x12 643: 0: a+ Z0+\x08\x0a\x1d\x12 644: 645: /^[.^$|()*+?{,}]+/ 646: .^\$(*+)|{?,?} 647: 0: .^$(*+)|{?,?} 648: 649: /^a*\w/ 650: z 651: 0: z 652: az 653: 0: az 654: aaaz 655: 0: aaaz 656: a 657: 0: a 658: aa 659: 0: aa 660: aaaa 661: 0: aaaa 662: a+ 663: 0: a 664: aa+ 665: 0: aa 666: 667: /^a*?\w/ 668: z 669: 0: z 670: az 671: 0: a 672: aaaz 673: 0: a 674: a 675: 0: a 676: aa 677: 0: a 678: aaaa 679: 0: a 680: a+ 681: 0: a 682: aa+ 683: 0: a 684: 685: /^a+\w/ 686: az 687: 0: az 688: aaaz 689: 0: aaaz 690: aa 691: 0: aa 692: aaaa 693: 0: aaaa 694: aa+ 695: 0: aa 696: 697: /^a+?\w/ 698: az 699: 0: az 700: aaaz 701: 0: aa 702: aa 703: 0: aa 704: aaaa 705: 0: aa 706: aa+ 707: 0: aa 708: 709: /^\d{8}\w{2,}/ 710: 1234567890 711: 0: 1234567890 712: 12345678ab 713: 0: 12345678ab 714: 12345678__ 715: 0: 12345678__ 716: *** Failers 717: No match 718: 1234567 719: No match 720: 721: /^[aeiou\d]{4,5}$/ 722: uoie 723: 0: uoie 724: 1234 725: 0: 1234 726: 12345 727: 0: 12345 728: aaaaa 729: 0: aaaaa 730: *** Failers 731: No match 732: 123456 733: No match 734: 735: /^[aeiou\d]{4,5}?/ 736: uoie 737: 0: uoie 738: 1234 739: 0: 1234 740: 12345 741: 0: 1234 742: aaaaa 743: 0: aaaa 744: 123456 745: 0: 1234 746: 747: /\A(abc|def)=(\1){2,3}\Z/ 748: abc=abcabc 749: 0: abc=abcabc 750: 1: abc 751: 2: abc 752: def=defdefdef 753: 0: def=defdefdef 754: 1: def 755: 2: def 756: *** Failers 757: No match 758: abc=defdef 759: No match 760: 761: /^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\11*(\3\4)\1(?#)2$/ 762: abcdefghijkcda2 763: 0: abcdefghijkcda2 764: 1: a 765: 2: b 766: 3: c 767: 4: d 768: 5: e 769: 6: f 770: 7: g 771: 8: h 772: 9: i 773: 10: j 774: 11: k 775: 12: cd 776: abcdefghijkkkkcda2 777: 0: abcdefghijkkkkcda2 778: 1: a 779: 2: b 780: 3: c 781: 4: d 782: 5: e 783: 6: f 784: 7: g 785: 8: h 786: 9: i 787: 10: j 788: 11: k 789: 12: cd 790: 791: /(cat(a(ract|tonic)|erpillar)) \1()2(3)/ 792: cataract cataract23 793: 0: cataract cataract23 794: 1: cataract 795: 2: aract 796: 3: ract 797: 4: 798: 5: 3 799: catatonic catatonic23 800: 0: catatonic catatonic23 801: 1: catatonic 802: 2: atonic 803: 3: tonic 804: 4: 805: 5: 3 806: caterpillar caterpillar23 807: 0: caterpillar caterpillar23 808: 1: caterpillar 809: 2: erpillar 810: 3: <unset> 811: 4: 812: 5: 3 813: 814: 815: /^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]/ 816: From abcd Mon Sep 01 12:33:02 1997 817: 0: From abcd Mon Sep 01 12:33 818: 1: abcd 819: 820: /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/ 821: From abcd Mon Sep 01 12:33:02 1997 822: 0: From abcd Mon Sep 01 12:33 823: 1: Sep 824: From abcd Mon Sep 1 12:33:02 1997 825: 0: From abcd Mon Sep 1 12:33 826: 1: Sep 827: *** Failers 828: No match 829: From abcd Sep 01 12:33:02 1997 830: No match 831: 832: /^12.34/s 833: 12\n34 834: 0: 12\x0a34 835: 12\r34 836: 0: 12\x0d34 837: 838: /\w+(?=\t)/ 839: the quick brown\t fox 840: 0: brown 841: 842: /foo(?!bar)(.*)/ 843: foobar is foolish see? 844: 0: foolish see? 845: 1: lish see? 846: 847: /(?:(?!foo)...|^.{0,2})bar(.*)/ 848: foobar crowbar etc 849: 0: rowbar etc 850: 1: etc 851: barrel 852: 0: barrel 853: 1: rel 854: 2barrel 855: 0: 2barrel 856: 1: rel 857: A barrel 858: 0: A barrel 859: 1: rel 860: 861: /^(\D*)(?=\d)(?!123)/ 862: abc456 863: 0: abc 864: 1: abc 865: *** Failers 866: No match 867: abc123 868: No match 869: 870: /^1234(?# test newlines 871: inside)/ 872: 1234 873: 0: 1234 874: 875: /^1234 #comment in extended re 876: /x 877: 1234 878: 0: 1234 879: 880: /#rhubarb 881: abcd/x 882: abcd 883: 0: abcd 884: 885: /^abcd#rhubarb/x 886: abcd 887: 0: abcd 888: 889: /^(a)\1{2,3}(.)/ 890: aaab 891: 0: aaab 892: 1: a 893: 2: b 894: aaaab 895: 0: aaaab 896: 1: a 897: 2: b 898: aaaaab 899: 0: aaaaa 900: 1: a 901: 2: a 902: aaaaaab 903: 0: aaaaa 904: 1: a 905: 2: a 906: 907: /(?!^)abc/ 908: the abc 909: 0: abc 910: *** Failers 911: No match 912: abc 913: No match 914: 915: /(?=^)abc/ 916: abc 917: 0: abc 918: *** Failers 919: No match 920: the abc 921: No match 922: 923: /^[ab]{1,3}(ab*|b)/ 924: aabbbbb 925: 0: aabb 926: 1: b 927: 928: /^[ab]{1,3}?(ab*|b)/ 929: aabbbbb 930: 0: aabbbbb 931: 1: abbbbb 932: 933: /^[ab]{1,3}?(ab*?|b)/ 934: aabbbbb 935: 0: aa 936: 1: a 937: 938: /^[ab]{1,3}(ab*?|b)/ 939: aabbbbb 940: 0: aabb 941: 1: b 942: 943: / (?: [\040\t] | \( 944: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 945: \) )* # optional leading comment 946: (?: (?: 947: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 948: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 949: | 950: " (?: # opening quote... 951: [^\\\x80-\xff\n\015"] # Anything except backslash and quote 952: | # or 953: \\ [^\x80-\xff] # Escaped something (something != CR) 954: )* " # closing quote 955: ) # initial word 956: (?: (?: [\040\t] | \( 957: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 958: \) )* \. (?: [\040\t] | \( 959: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 960: \) )* (?: 961: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 962: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 963: | 964: " (?: # opening quote... 965: [^\\\x80-\xff\n\015"] # Anything except backslash and quote 966: | # or 967: \\ [^\x80-\xff] # Escaped something (something != CR) 968: )* " # closing quote 969: ) )* # further okay, if led by a period 970: (?: [\040\t] | \( 971: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 972: \) )* @ (?: [\040\t] | \( 973: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 974: \) )* (?: 975: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 976: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 977: | \[ # [ 978: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 979: \] # ] 980: ) # initial subdomain 981: (?: # 982: (?: [\040\t] | \( 983: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 984: \) )* \. # if led by a period... 985: (?: [\040\t] | \( 986: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 987: \) )* (?: 988: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 989: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 990: | \[ # [ 991: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 992: \] # ] 993: ) # ...further okay 994: )* 995: # address 996: | # or 997: (?: 998: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 999: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1000: | 1001: " (?: # opening quote... 1002: [^\\\x80-\xff\n\015"] # Anything except backslash and quote 1003: | # or 1004: \\ [^\x80-\xff] # Escaped something (something != CR) 1005: )* " # closing quote 1006: ) # one word, optionally followed by.... 1007: (?: 1008: [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] | # atom and space parts, or... 1009: \( 1010: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1011: \) | # comments, or... 1012: 1013: " (?: # opening quote... 1014: [^\\\x80-\xff\n\015"] # Anything except backslash and quote 1015: | # or 1016: \\ [^\x80-\xff] # Escaped something (something != CR) 1017: )* " # closing quote 1018: # quoted strings 1019: )* 1020: < (?: [\040\t] | \( 1021: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1022: \) )* # leading < 1023: (?: @ (?: [\040\t] | \( 1024: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1025: \) )* (?: 1026: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1027: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1028: | \[ # [ 1029: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 1030: \] # ] 1031: ) # initial subdomain 1032: (?: # 1033: (?: [\040\t] | \( 1034: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1035: \) )* \. # if led by a period... 1036: (?: [\040\t] | \( 1037: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1038: \) )* (?: 1039: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1040: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1041: | \[ # [ 1042: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 1043: \] # ] 1044: ) # ...further okay 1045: )* 1046: 1047: (?: (?: [\040\t] | \( 1048: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1049: \) )* , (?: [\040\t] | \( 1050: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1051: \) )* @ (?: [\040\t] | \( 1052: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1053: \) )* (?: 1054: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1055: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1056: | \[ # [ 1057: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 1058: \] # ] 1059: ) # initial subdomain 1060: (?: # 1061: (?: [\040\t] | \( 1062: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1063: \) )* \. # if led by a period... 1064: (?: [\040\t] | \( 1065: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1066: \) )* (?: 1067: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1068: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1069: | \[ # [ 1070: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 1071: \] # ] 1072: ) # ...further okay 1073: )* 1074: )* # further okay, if led by comma 1075: : # closing colon 1076: (?: [\040\t] | \( 1077: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1078: \) )* )? # optional route 1079: (?: 1080: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1081: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1082: | 1083: " (?: # opening quote... 1084: [^\\\x80-\xff\n\015"] # Anything except backslash and quote 1085: | # or 1086: \\ [^\x80-\xff] # Escaped something (something != CR) 1087: )* " # closing quote 1088: ) # initial word 1089: (?: (?: [\040\t] | \( 1090: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1091: \) )* \. (?: [\040\t] | \( 1092: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1093: \) )* (?: 1094: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1095: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1096: | 1097: " (?: # opening quote... 1098: [^\\\x80-\xff\n\015"] # Anything except backslash and quote 1099: | # or 1100: \\ [^\x80-\xff] # Escaped something (something != CR) 1101: )* " # closing quote 1102: ) )* # further okay, if led by a period 1103: (?: [\040\t] | \( 1104: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1105: \) )* @ (?: [\040\t] | \( 1106: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1107: \) )* (?: 1108: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1109: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1110: | \[ # [ 1111: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 1112: \] # ] 1113: ) # initial subdomain 1114: (?: # 1115: (?: [\040\t] | \( 1116: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1117: \) )* \. # if led by a period... 1118: (?: [\040\t] | \( 1119: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1120: \) )* (?: 1121: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1122: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1123: | \[ # [ 1124: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 1125: \] # ] 1126: ) # ...further okay 1127: )* 1128: # address spec 1129: (?: [\040\t] | \( 1130: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1131: \) )* > # trailing > 1132: # name and address 1133: ) (?: [\040\t] | \( 1134: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 1135: \) )* # optional trailing comment 1136: /x 1137: Alan Other <user\@dom.ain> 1138: 0: Alan Other <user@dom.ain> 1139: <user\@dom.ain> 1140: 0: user@dom.ain 1141: user\@dom.ain 1142: 0: user@dom.ain 1143: \"A. Other\" <user.1234\@dom.ain> (a comment) 1144: 0: "A. Other" <user.1234@dom.ain> (a comment) 1145: A. Other <user.1234\@dom.ain> (a comment) 1146: 0: Other <user.1234@dom.ain> (a comment) 1147: \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay 1148: 0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay 1149: A missing angle <user\@some.where 1150: 0: user@some.where 1151: *** Failers 1152: No match 1153: The quick brown fox 1154: No match 1155: 1156: /[\040\t]* # Nab whitespace. 1157: (?: 1158: \( # ( 1159: [^\\\x80-\xff\n\015()] * # normal* 1160: (?: # ( 1161: (?: \\ [^\x80-\xff] | 1162: \( # ( 1163: [^\\\x80-\xff\n\015()] * # normal* 1164: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1165: \) # ) 1166: ) # special 1167: [^\\\x80-\xff\n\015()] * # normal* 1168: )* # )* 1169: \) # ) 1170: [\040\t]* )* # If comment found, allow more spaces. 1171: # optional leading comment 1172: (?: 1173: (?: 1174: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1175: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1176: # Atom 1177: | # or 1178: " # " 1179: [^\\\x80-\xff\n\015"] * # normal 1180: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* 1181: " # " 1182: # Quoted string 1183: ) 1184: [\040\t]* # Nab whitespace. 1185: (?: 1186: \( # ( 1187: [^\\\x80-\xff\n\015()] * # normal* 1188: (?: # ( 1189: (?: \\ [^\x80-\xff] | 1190: \( # ( 1191: [^\\\x80-\xff\n\015()] * # normal* 1192: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1193: \) # ) 1194: ) # special 1195: [^\\\x80-\xff\n\015()] * # normal* 1196: )* # )* 1197: \) # ) 1198: [\040\t]* )* # If comment found, allow more spaces. 1199: (?: 1200: \. 1201: [\040\t]* # Nab whitespace. 1202: (?: 1203: \( # ( 1204: [^\\\x80-\xff\n\015()] * # normal* 1205: (?: # ( 1206: (?: \\ [^\x80-\xff] | 1207: \( # ( 1208: [^\\\x80-\xff\n\015()] * # normal* 1209: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1210: \) # ) 1211: ) # special 1212: [^\\\x80-\xff\n\015()] * # normal* 1213: )* # )* 1214: \) # ) 1215: [\040\t]* )* # If comment found, allow more spaces. 1216: (?: 1217: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1218: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1219: # Atom 1220: | # or 1221: " # " 1222: [^\\\x80-\xff\n\015"] * # normal 1223: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* 1224: " # " 1225: # Quoted string 1226: ) 1227: [\040\t]* # Nab whitespace. 1228: (?: 1229: \( # ( 1230: [^\\\x80-\xff\n\015()] * # normal* 1231: (?: # ( 1232: (?: \\ [^\x80-\xff] | 1233: \( # ( 1234: [^\\\x80-\xff\n\015()] * # normal* 1235: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1236: \) # ) 1237: ) # special 1238: [^\\\x80-\xff\n\015()] * # normal* 1239: )* # )* 1240: \) # ) 1241: [\040\t]* )* # If comment found, allow more spaces. 1242: # additional words 1243: )* 1244: @ 1245: [\040\t]* # Nab whitespace. 1246: (?: 1247: \( # ( 1248: [^\\\x80-\xff\n\015()] * # normal* 1249: (?: # ( 1250: (?: \\ [^\x80-\xff] | 1251: \( # ( 1252: [^\\\x80-\xff\n\015()] * # normal* 1253: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1254: \) # ) 1255: ) # special 1256: [^\\\x80-\xff\n\015()] * # normal* 1257: )* # )* 1258: \) # ) 1259: [\040\t]* )* # If comment found, allow more spaces. 1260: (?: 1261: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1262: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1263: | 1264: \[ # [ 1265: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 1266: \] # ] 1267: ) 1268: [\040\t]* # Nab whitespace. 1269: (?: 1270: \( # ( 1271: [^\\\x80-\xff\n\015()] * # normal* 1272: (?: # ( 1273: (?: \\ [^\x80-\xff] | 1274: \( # ( 1275: [^\\\x80-\xff\n\015()] * # normal* 1276: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1277: \) # ) 1278: ) # special 1279: [^\\\x80-\xff\n\015()] * # normal* 1280: )* # )* 1281: \) # ) 1282: [\040\t]* )* # If comment found, allow more spaces. 1283: # optional trailing comments 1284: (?: 1285: \. 1286: [\040\t]* # Nab whitespace. 1287: (?: 1288: \( # ( 1289: [^\\\x80-\xff\n\015()] * # normal* 1290: (?: # ( 1291: (?: \\ [^\x80-\xff] | 1292: \( # ( 1293: [^\\\x80-\xff\n\015()] * # normal* 1294: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1295: \) # ) 1296: ) # special 1297: [^\\\x80-\xff\n\015()] * # normal* 1298: )* # )* 1299: \) # ) 1300: [\040\t]* )* # If comment found, allow more spaces. 1301: (?: 1302: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1303: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1304: | 1305: \[ # [ 1306: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 1307: \] # ] 1308: ) 1309: [\040\t]* # Nab whitespace. 1310: (?: 1311: \( # ( 1312: [^\\\x80-\xff\n\015()] * # normal* 1313: (?: # ( 1314: (?: \\ [^\x80-\xff] | 1315: \( # ( 1316: [^\\\x80-\xff\n\015()] * # normal* 1317: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1318: \) # ) 1319: ) # special 1320: [^\\\x80-\xff\n\015()] * # normal* 1321: )* # )* 1322: \) # ) 1323: [\040\t]* )* # If comment found, allow more spaces. 1324: # optional trailing comments 1325: )* 1326: # address 1327: | # or 1328: (?: 1329: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1330: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1331: # Atom 1332: | # or 1333: " # " 1334: [^\\\x80-\xff\n\015"] * # normal 1335: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* 1336: " # " 1337: # Quoted string 1338: ) 1339: # leading word 1340: [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # "normal" atoms and or spaces 1341: (?: 1342: (?: 1343: \( # ( 1344: [^\\\x80-\xff\n\015()] * # normal* 1345: (?: # ( 1346: (?: \\ [^\x80-\xff] | 1347: \( # ( 1348: [^\\\x80-\xff\n\015()] * # normal* 1349: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1350: \) # ) 1351: ) # special 1352: [^\\\x80-\xff\n\015()] * # normal* 1353: )* # )* 1354: \) # ) 1355: | 1356: " # " 1357: [^\\\x80-\xff\n\015"] * # normal 1358: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* 1359: " # " 1360: ) # "special" comment or quoted string 1361: [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # more "normal" 1362: )* 1363: < 1364: [\040\t]* # Nab whitespace. 1365: (?: 1366: \( # ( 1367: [^\\\x80-\xff\n\015()] * # normal* 1368: (?: # ( 1369: (?: \\ [^\x80-\xff] | 1370: \( # ( 1371: [^\\\x80-\xff\n\015()] * # normal* 1372: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1373: \) # ) 1374: ) # special 1375: [^\\\x80-\xff\n\015()] * # normal* 1376: )* # )* 1377: \) # ) 1378: [\040\t]* )* # If comment found, allow more spaces. 1379: # < 1380: (?: 1381: @ 1382: [\040\t]* # Nab whitespace. 1383: (?: 1384: \( # ( 1385: [^\\\x80-\xff\n\015()] * # normal* 1386: (?: # ( 1387: (?: \\ [^\x80-\xff] | 1388: \( # ( 1389: [^\\\x80-\xff\n\015()] * # normal* 1390: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1391: \) # ) 1392: ) # special 1393: [^\\\x80-\xff\n\015()] * # normal* 1394: )* # )* 1395: \) # ) 1396: [\040\t]* )* # If comment found, allow more spaces. 1397: (?: 1398: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1399: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1400: | 1401: \[ # [ 1402: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 1403: \] # ] 1404: ) 1405: [\040\t]* # Nab whitespace. 1406: (?: 1407: \( # ( 1408: [^\\\x80-\xff\n\015()] * # normal* 1409: (?: # ( 1410: (?: \\ [^\x80-\xff] | 1411: \( # ( 1412: [^\\\x80-\xff\n\015()] * # normal* 1413: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1414: \) # ) 1415: ) # special 1416: [^\\\x80-\xff\n\015()] * # normal* 1417: )* # )* 1418: \) # ) 1419: [\040\t]* )* # If comment found, allow more spaces. 1420: # optional trailing comments 1421: (?: 1422: \. 1423: [\040\t]* # Nab whitespace. 1424: (?: 1425: \( # ( 1426: [^\\\x80-\xff\n\015()] * # normal* 1427: (?: # ( 1428: (?: \\ [^\x80-\xff] | 1429: \( # ( 1430: [^\\\x80-\xff\n\015()] * # normal* 1431: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1432: \) # ) 1433: ) # special 1434: [^\\\x80-\xff\n\015()] * # normal* 1435: )* # )* 1436: \) # ) 1437: [\040\t]* )* # If comment found, allow more spaces. 1438: (?: 1439: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1440: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1441: | 1442: \[ # [ 1443: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 1444: \] # ] 1445: ) 1446: [\040\t]* # Nab whitespace. 1447: (?: 1448: \( # ( 1449: [^\\\x80-\xff\n\015()] * # normal* 1450: (?: # ( 1451: (?: \\ [^\x80-\xff] | 1452: \( # ( 1453: [^\\\x80-\xff\n\015()] * # normal* 1454: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1455: \) # ) 1456: ) # special 1457: [^\\\x80-\xff\n\015()] * # normal* 1458: )* # )* 1459: \) # ) 1460: [\040\t]* )* # If comment found, allow more spaces. 1461: # optional trailing comments 1462: )* 1463: (?: , 1464: [\040\t]* # Nab whitespace. 1465: (?: 1466: \( # ( 1467: [^\\\x80-\xff\n\015()] * # normal* 1468: (?: # ( 1469: (?: \\ [^\x80-\xff] | 1470: \( # ( 1471: [^\\\x80-\xff\n\015()] * # normal* 1472: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1473: \) # ) 1474: ) # special 1475: [^\\\x80-\xff\n\015()] * # normal* 1476: )* # )* 1477: \) # ) 1478: [\040\t]* )* # If comment found, allow more spaces. 1479: @ 1480: [\040\t]* # Nab whitespace. 1481: (?: 1482: \( # ( 1483: [^\\\x80-\xff\n\015()] * # normal* 1484: (?: # ( 1485: (?: \\ [^\x80-\xff] | 1486: \( # ( 1487: [^\\\x80-\xff\n\015()] * # normal* 1488: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1489: \) # ) 1490: ) # special 1491: [^\\\x80-\xff\n\015()] * # normal* 1492: )* # )* 1493: \) # ) 1494: [\040\t]* )* # If comment found, allow more spaces. 1495: (?: 1496: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1497: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1498: | 1499: \[ # [ 1500: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 1501: \] # ] 1502: ) 1503: [\040\t]* # Nab whitespace. 1504: (?: 1505: \( # ( 1506: [^\\\x80-\xff\n\015()] * # normal* 1507: (?: # ( 1508: (?: \\ [^\x80-\xff] | 1509: \( # ( 1510: [^\\\x80-\xff\n\015()] * # normal* 1511: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1512: \) # ) 1513: ) # special 1514: [^\\\x80-\xff\n\015()] * # normal* 1515: )* # )* 1516: \) # ) 1517: [\040\t]* )* # If comment found, allow more spaces. 1518: # optional trailing comments 1519: (?: 1520: \. 1521: [\040\t]* # Nab whitespace. 1522: (?: 1523: \( # ( 1524: [^\\\x80-\xff\n\015()] * # normal* 1525: (?: # ( 1526: (?: \\ [^\x80-\xff] | 1527: \( # ( 1528: [^\\\x80-\xff\n\015()] * # normal* 1529: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1530: \) # ) 1531: ) # special 1532: [^\\\x80-\xff\n\015()] * # normal* 1533: )* # )* 1534: \) # ) 1535: [\040\t]* )* # If comment found, allow more spaces. 1536: (?: 1537: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1538: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1539: | 1540: \[ # [ 1541: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 1542: \] # ] 1543: ) 1544: [\040\t]* # Nab whitespace. 1545: (?: 1546: \( # ( 1547: [^\\\x80-\xff\n\015()] * # normal* 1548: (?: # ( 1549: (?: \\ [^\x80-\xff] | 1550: \( # ( 1551: [^\\\x80-\xff\n\015()] * # normal* 1552: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1553: \) # ) 1554: ) # special 1555: [^\\\x80-\xff\n\015()] * # normal* 1556: )* # )* 1557: \) # ) 1558: [\040\t]* )* # If comment found, allow more spaces. 1559: # optional trailing comments 1560: )* 1561: )* # additional domains 1562: : 1563: [\040\t]* # Nab whitespace. 1564: (?: 1565: \( # ( 1566: [^\\\x80-\xff\n\015()] * # normal* 1567: (?: # ( 1568: (?: \\ [^\x80-\xff] | 1569: \( # ( 1570: [^\\\x80-\xff\n\015()] * # normal* 1571: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1572: \) # ) 1573: ) # special 1574: [^\\\x80-\xff\n\015()] * # normal* 1575: )* # )* 1576: \) # ) 1577: [\040\t]* )* # If comment found, allow more spaces. 1578: # optional trailing comments 1579: )? # optional route 1580: (?: 1581: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1582: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1583: # Atom 1584: | # or 1585: " # " 1586: [^\\\x80-\xff\n\015"] * # normal 1587: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* 1588: " # " 1589: # Quoted string 1590: ) 1591: [\040\t]* # Nab whitespace. 1592: (?: 1593: \( # ( 1594: [^\\\x80-\xff\n\015()] * # normal* 1595: (?: # ( 1596: (?: \\ [^\x80-\xff] | 1597: \( # ( 1598: [^\\\x80-\xff\n\015()] * # normal* 1599: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1600: \) # ) 1601: ) # special 1602: [^\\\x80-\xff\n\015()] * # normal* 1603: )* # )* 1604: \) # ) 1605: [\040\t]* )* # If comment found, allow more spaces. 1606: (?: 1607: \. 1608: [\040\t]* # Nab whitespace. 1609: (?: 1610: \( # ( 1611: [^\\\x80-\xff\n\015()] * # normal* 1612: (?: # ( 1613: (?: \\ [^\x80-\xff] | 1614: \( # ( 1615: [^\\\x80-\xff\n\015()] * # normal* 1616: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1617: \) # ) 1618: ) # special 1619: [^\\\x80-\xff\n\015()] * # normal* 1620: )* # )* 1621: \) # ) 1622: [\040\t]* )* # If comment found, allow more spaces. 1623: (?: 1624: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1625: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1626: # Atom 1627: | # or 1628: " # " 1629: [^\\\x80-\xff\n\015"] * # normal 1630: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* 1631: " # " 1632: # Quoted string 1633: ) 1634: [\040\t]* # Nab whitespace. 1635: (?: 1636: \( # ( 1637: [^\\\x80-\xff\n\015()] * # normal* 1638: (?: # ( 1639: (?: \\ [^\x80-\xff] | 1640: \( # ( 1641: [^\\\x80-\xff\n\015()] * # normal* 1642: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1643: \) # ) 1644: ) # special 1645: [^\\\x80-\xff\n\015()] * # normal* 1646: )* # )* 1647: \) # ) 1648: [\040\t]* )* # If comment found, allow more spaces. 1649: # additional words 1650: )* 1651: @ 1652: [\040\t]* # Nab whitespace. 1653: (?: 1654: \( # ( 1655: [^\\\x80-\xff\n\015()] * # normal* 1656: (?: # ( 1657: (?: \\ [^\x80-\xff] | 1658: \( # ( 1659: [^\\\x80-\xff\n\015()] * # normal* 1660: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1661: \) # ) 1662: ) # special 1663: [^\\\x80-\xff\n\015()] * # normal* 1664: )* # )* 1665: \) # ) 1666: [\040\t]* )* # If comment found, allow more spaces. 1667: (?: 1668: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1669: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1670: | 1671: \[ # [ 1672: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 1673: \] # ] 1674: ) 1675: [\040\t]* # Nab whitespace. 1676: (?: 1677: \( # ( 1678: [^\\\x80-\xff\n\015()] * # normal* 1679: (?: # ( 1680: (?: \\ [^\x80-\xff] | 1681: \( # ( 1682: [^\\\x80-\xff\n\015()] * # normal* 1683: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1684: \) # ) 1685: ) # special 1686: [^\\\x80-\xff\n\015()] * # normal* 1687: )* # )* 1688: \) # ) 1689: [\040\t]* )* # If comment found, allow more spaces. 1690: # optional trailing comments 1691: (?: 1692: \. 1693: [\040\t]* # Nab whitespace. 1694: (?: 1695: \( # ( 1696: [^\\\x80-\xff\n\015()] * # normal* 1697: (?: # ( 1698: (?: \\ [^\x80-\xff] | 1699: \( # ( 1700: [^\\\x80-\xff\n\015()] * # normal* 1701: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1702: \) # ) 1703: ) # special 1704: [^\\\x80-\xff\n\015()] * # normal* 1705: )* # )* 1706: \) # ) 1707: [\040\t]* )* # If comment found, allow more spaces. 1708: (?: 1709: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 1710: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 1711: | 1712: \[ # [ 1713: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 1714: \] # ] 1715: ) 1716: [\040\t]* # Nab whitespace. 1717: (?: 1718: \( # ( 1719: [^\\\x80-\xff\n\015()] * # normal* 1720: (?: # ( 1721: (?: \\ [^\x80-\xff] | 1722: \( # ( 1723: [^\\\x80-\xff\n\015()] * # normal* 1724: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* 1725: \) # ) 1726: ) # special 1727: [^\\\x80-\xff\n\015()] * # normal* 1728: )* # )* 1729: \) # ) 1730: [\040\t]* )* # If comment found, allow more spaces. 1731: # optional trailing comments 1732: )* 1733: # address spec 1734: > # > 1735: # name and address 1736: ) 1737: /x 1738: Alan Other <user\@dom.ain> 1739: 0: Alan Other <user@dom.ain> 1740: <user\@dom.ain> 1741: 0: user@dom.ain 1742: user\@dom.ain 1743: 0: user@dom.ain 1744: \"A. Other\" <user.1234\@dom.ain> (a comment) 1745: 0: "A. Other" <user.1234@dom.ain> 1746: A. Other <user.1234\@dom.ain> (a comment) 1747: 0: Other <user.1234@dom.ain> 1748: \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay 1749: 0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay 1750: A missing angle <user\@some.where 1751: 0: user@some.where 1752: *** Failers 1753: No match 1754: The quick brown fox 1755: No match 1756: 1757: /abc\0def\00pqr\000xyz\0000AB/ 1758: abc\0def\00pqr\000xyz\0000AB 1759: 0: abc\x00def\x00pqr\x00xyz\x000AB 1760: abc456 abc\0def\00pqr\000xyz\0000ABCDE 1761: 0: abc\x00def\x00pqr\x00xyz\x000AB 1762: 1763: /abc\x0def\x00pqr\x000xyz\x0000AB/ 1764: abc\x0def\x00pqr\x000xyz\x0000AB 1765: 0: abc\x0def\x00pqr\x000xyz\x0000AB 1766: abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE 1767: 0: abc\x0def\x00pqr\x000xyz\x0000AB 1768: 1769: /^[\000-\037]/ 1770: \0A 1771: 0: \x00 1772: \01B 1773: 0: \x01 1774: \037C 1775: 0: \x1f 1776: 1777: /\0*/ 1778: \0\0\0\0 1779: 0: \x00\x00\x00\x00 1780: 1781: /A\x0{2,3}Z/ 1782: The A\x0\x0Z 1783: 0: A\x00\x00Z 1784: An A\0\x0\0Z 1785: 0: A\x00\x00\x00Z 1786: *** Failers 1787: No match 1788: A\0Z 1789: No match 1790: A\0\x0\0\x0Z 1791: No match 1792: 1793: /^(cow|)\1(bell)/ 1794: cowcowbell 1795: 0: cowcowbell 1796: 1: cow 1797: 2: bell 1798: bell 1799: 0: bell 1800: 1: 1801: 2: bell 1802: *** Failers 1803: No match 1804: cowbell 1805: No match 1806: 1807: /^\s/ 1808: \040abc 1809: 0: 1810: \x0cabc 1811: 0: \x0c 1812: \nabc 1813: 0: \x0a 1814: \rabc 1815: 0: \x0d 1816: \tabc 1817: 0: \x09 1818: *** Failers 1819: No match 1820: abc 1821: No match 1822: 1823: /^a b 1824: c/x 1825: abc 1826: 0: abc 1827: 1828: /^(a|)\1*b/ 1829: ab 1830: 0: ab 1831: 1: a 1832: aaaab 1833: 0: aaaab 1834: 1: a 1835: b 1836: 0: b 1837: 1: 1838: *** Failers 1839: No match 1840: acb 1841: No match 1842: 1843: /^(a|)\1+b/ 1844: aab 1845: 0: aab 1846: 1: a 1847: aaaab 1848: 0: aaaab 1849: 1: a 1850: b 1851: 0: b 1852: 1: 1853: *** Failers 1854: No match 1855: ab 1856: No match 1857: 1858: /^(a|)\1?b/ 1859: ab 1860: 0: ab 1861: 1: a 1862: aab 1863: 0: aab 1864: 1: a 1865: b 1866: 0: b 1867: 1: 1868: *** Failers 1869: No match 1870: acb 1871: No match 1872: 1873: /^(a|)\1{2}b/ 1874: aaab 1875: 0: aaab 1876: 1: a 1877: b 1878: 0: b 1879: 1: 1880: *** Failers 1881: No match 1882: ab 1883: No match 1884: aab 1885: No match 1886: aaaab 1887: No match 1888: 1889: /^(a|)\1{2,3}b/ 1890: aaab 1891: 0: aaab 1892: 1: a 1893: aaaab 1894: 0: aaaab 1895: 1: a 1896: b 1897: 0: b 1898: 1: 1899: *** Failers 1900: No match 1901: ab 1902: No match 1903: aab 1904: No match 1905: aaaaab 1906: No match 1907: 1908: /ab{1,3}bc/ 1909: abbbbc 1910: 0: abbbbc 1911: abbbc 1912: 0: abbbc 1913: abbc 1914: 0: abbc 1915: *** Failers 1916: No match 1917: abc 1918: No match 1919: abbbbbc 1920: No match 1921: 1922: /([^.]*)\.([^:]*):[T ]+(.*)/ 1923: track1.title:TBlah blah blah 1924: 0: track1.title:TBlah blah blah 1925: 1: track1 1926: 2: title 1927: 3: Blah blah blah 1928: 1929: /([^.]*)\.([^:]*):[T ]+(.*)/i 1930: track1.title:TBlah blah blah 1931: 0: track1.title:TBlah blah blah 1932: 1: track1 1933: 2: title 1934: 3: Blah blah blah 1935: 1936: /([^.]*)\.([^:]*):[t ]+(.*)/i 1937: track1.title:TBlah blah blah 1938: 0: track1.title:TBlah blah blah 1939: 1: track1 1940: 2: title 1941: 3: Blah blah blah 1942: 1943: /^[W-c]+$/ 1944: WXY_^abc 1945: 0: WXY_^abc 1946: *** Failers 1947: No match 1948: wxy 1949: No match 1950: 1951: /^[W-c]+$/i 1952: WXY_^abc 1953: 0: WXY_^abc 1954: wxy_^ABC 1955: 0: wxy_^ABC 1956: 1957: /^[\x3f-\x5F]+$/i 1958: WXY_^abc 1959: 0: WXY_^abc 1960: wxy_^ABC 1961: 0: wxy_^ABC 1962: 1963: /^abc$/m 1964: abc 1965: 0: abc 1966: qqq\nabc 1967: 0: abc 1968: abc\nzzz 1969: 0: abc 1970: qqq\nabc\nzzz 1971: 0: abc 1972: 1973: /^abc$/ 1974: abc 1975: 0: abc 1976: *** Failers 1977: No match 1978: qqq\nabc 1979: No match 1980: abc\nzzz 1981: No match 1982: qqq\nabc\nzzz 1983: No match 1984: 1985: /\Aabc\Z/m 1986: abc 1987: 0: abc 1988: abc\n 1989: 0: abc 1990: *** Failers 1991: No match 1992: qqq\nabc 1993: No match 1994: abc\nzzz 1995: No match 1996: qqq\nabc\nzzz 1997: No match 1998: 1999: /\A(.)*\Z/s 2000: abc\ndef 2001: 0: abc\x0adef 2002: 1: f 2003: 2004: /\A(.)*\Z/m 2005: *** Failers 2006: 0: *** Failers 2007: 1: s 2008: abc\ndef 2009: No match 2010: 2011: /(?:b)|(?::+)/ 2012: b::c 2013: 0: b 2014: c::b 2015: 0: :: 2016: 2017: /[-az]+/ 2018: az- 2019: 0: az- 2020: *** Failers 2021: 0: a 2022: b 2023: No match 2024: 2025: /[az-]+/ 2026: za- 2027: 0: za- 2028: *** Failers 2029: 0: a 2030: b 2031: No match 2032: 2033: /[a\-z]+/ 2034: a-z 2035: 0: a-z 2036: *** Failers 2037: 0: a 2038: b 2039: No match 2040: 2041: /[a-z]+/ 2042: abcdxyz 2043: 0: abcdxyz 2044: 2045: /[\d-]+/ 2046: 12-34 2047: 0: 12-34 2048: *** Failers 2049: No match 2050: aaa 2051: No match 2052: 2053: /[\d-z]+/ 2054: 12-34z 2055: 0: 12-34z 2056: *** Failers 2057: No match 2058: aaa 2059: No match 2060: 2061: /\x5c/ 2062: \\ 2063: 0: \ 2064: 2065: /\x20Z/ 2066: the Zoo 2067: 0: Z 2068: *** Failers 2069: No match 2070: Zulu 2071: No match 2072: 2073: /(abc)\1/i 2074: abcabc 2075: 0: abcabc 2076: 1: abc 2077: ABCabc 2078: 0: ABCabc 2079: 1: ABC 2080: abcABC 2081: 0: abcABC 2082: 1: abc 2083: 2084: /ab{3cd/ 2085: ab{3cd 2086: 0: ab{3cd 2087: 2088: /ab{3,cd/ 2089: ab{3,cd 2090: 0: ab{3,cd 2091: 2092: /ab{3,4a}cd/ 2093: ab{3,4a}cd 2094: 0: ab{3,4a}cd 2095: 2096: /{4,5a}bc/ 2097: {4,5a}bc 2098: 0: {4,5a}bc 2099: 2100: /abc$/ 2101: abc 2102: 0: abc 2103: abc\n 2104: 0: abc 2105: *** Failers 2106: No match 2107: abc\ndef 2108: No match 2109: 2110: /(abc)\123/ 2111: abc\x53 2112: 0: abcS 2113: 1: abc 2114: 2115: /(abc)\223/ 2116: abc\x93 2117: 0: abc\x93 2118: 1: abc 2119: 2120: /(abc)\323/ 2121: abc\xd3 2122: 0: abc\xd3 2123: 1: abc 2124: 2125: /(abc)\100/ 2126: abc\x40 2127: 0: abc@ 2128: 1: abc 2129: abc\100 2130: 0: abc@ 2131: 1: abc 2132: 2133: /(abc)\1000/ 2134: abc\x400 2135: 0: abc@0 2136: 1: abc 2137: abc\x40\x30 2138: 0: abc@0 2139: 1: abc 2140: abc\1000 2141: 0: abc@0 2142: 1: abc 2143: abc\100\x30 2144: 0: abc@0 2145: 1: abc 2146: abc\100\060 2147: 0: abc@0 2148: 1: abc 2149: abc\100\60 2150: 0: abc@0 2151: 1: abc 2152: 2153: /abc\81/ 2154: abc\081 2155: 0: abc\x0081 2156: abc\0\x38\x31 2157: 0: abc\x0081 2158: 2159: /abc\91/ 2160: abc\091 2161: 0: abc\x0091 2162: abc\0\x39\x31 2163: 0: abc\x0091 2164: 2165: /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\12\123/ 2166: abcdefghijkllS 2167: 0: abcdefghijkllS 2168: 1: a 2169: 2: b 2170: 3: c 2171: 4: d 2172: 5: e 2173: 6: f 2174: 7: g 2175: 8: h 2176: 9: i 2177: 10: j 2178: 11: k 2179: 12: l 2180: 2181: /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/ 2182: abcdefghijk\12S 2183: 0: abcdefghijk\x0aS 2184: 1: a 2185: 2: b 2186: 3: c 2187: 4: d 2188: 5: e 2189: 6: f 2190: 7: g 2191: 8: h 2192: 9: i 2193: 10: j 2194: 11: k 2195: 2196: /ab\idef/ 2197: abidef 2198: 0: abidef 2199: 2200: /a{0}bc/ 2201: bc 2202: 0: bc 2203: 2204: /(a|(bc)){0,0}?xyz/ 2205: xyz 2206: 0: xyz 2207: 2208: /abc[\10]de/ 2209: abc\010de 2210: 0: abc\x08de 2211: 2212: /abc[\1]de/ 2213: abc\1de 2214: 0: abc\x01de 2215: 2216: /(abc)[\1]de/ 2217: abc\1de 2218: 0: abc\x01de 2219: 1: abc 2220: 2221: /(?s)a.b/ 2222: a\nb 2223: 0: a\x0ab 2224: 2225: /^([^a])([^\b])([^c]*)([^d]{3,4})/ 2226: baNOTccccd 2227: 0: baNOTcccc 2228: 1: b 2229: 2: a 2230: 3: NOT 2231: 4: cccc 2232: baNOTcccd 2233: 0: baNOTccc 2234: 1: b 2235: 2: a 2236: 3: NOT 2237: 4: ccc 2238: baNOTccd 2239: 0: baNOTcc 2240: 1: b 2241: 2: a 2242: 3: NO 2243: 4: Tcc 2244: bacccd 2245: 0: baccc 2246: 1: b 2247: 2: a 2248: 3: 2249: 4: ccc 2250: *** Failers 2251: 0: *** Failers 2252: 1: * 2253: 2: * 2254: 3: * Fail 2255: 4: ers 2256: anything 2257: No match 2258: b\bc 2259: No match 2260: baccd 2261: No match 2262: 2263: /[^a]/ 2264: Abc 2265: 0: A 2266: 2267: /[^a]/i 2268: Abc 2269: 0: b 2270: 2271: /[^a]+/ 2272: AAAaAbc 2273: 0: AAA 2274: 2275: /[^a]+/i 2276: AAAaAbc 2277: 0: bc 2278: 2279: /[^a]+/ 2280: bbb\nccc 2281: 0: bbb\x0accc 2282: 2283: /[^k]$/ 2284: abc 2285: 0: c 2286: *** Failers 2287: 0: s 2288: abk 2289: No match 2290: 2291: /[^k]{2,3}$/ 2292: abc 2293: 0: abc 2294: kbc 2295: 0: bc 2296: kabc 2297: 0: abc 2298: *** Failers 2299: 0: ers 2300: abk 2301: No match 2302: akb 2303: No match 2304: akk 2305: No match 2306: 2307: /^\d{8,}\@.+[^k]$/ 2308: 12345678\@a.b.c.d 2309: 0: 12345678@a.b.c.d 2310: 123456789\@x.y.z 2311: 0: 123456789@x.y.z 2312: *** Failers 2313: No match 2314: 12345678\@x.y.uk 2315: No match 2316: 1234567\@a.b.c.d 2317: No match 2318: 2319: /(a)\1{8,}/ 2320: aaaaaaaaa 2321: 0: aaaaaaaaa 2322: 1: a 2323: aaaaaaaaaa 2324: 0: aaaaaaaaaa 2325: 1: a 2326: *** Failers 2327: No match 2328: aaaaaaa 2329: No match 2330: 2331: /[^a]/ 2332: aaaabcd 2333: 0: b 2334: aaAabcd 2335: 0: A 2336: 2337: /[^a]/i 2338: aaaabcd 2339: 0: b 2340: aaAabcd 2341: 0: b 2342: 2343: /[^az]/ 2344: aaaabcd 2345: 0: b 2346: aaAabcd 2347: 0: A 2348: 2349: /[^az]/i 2350: aaaabcd 2351: 0: b 2352: aaAabcd 2353: 0: b 2354: 2355: /\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377/ 2356: \000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377 2357: 0: \x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff 2358: 2359: /P[^*]TAIRE[^*]{1,6}?LL/ 2360: xxxxxxxxxxxPSTAIREISLLxxxxxxxxx 2361: 0: PSTAIREISLL 2362: 2363: /P[^*]TAIRE[^*]{1,}?LL/ 2364: xxxxxxxxxxxPSTAIREISLLxxxxxxxxx 2365: 0: PSTAIREISLL 2366: 2367: /(\.\d\d[1-9]?)\d+/ 2368: 1.230003938 2369: 0: .230003938 2370: 1: .23 2371: 1.875000282 2372: 0: .875000282 2373: 1: .875 2374: 1.235 2375: 0: .235 2376: 1: .23 2377: 2378: /(\.\d\d((?=0)|\d(?=\d)))/ 2379: 1.230003938 2380: 0: .23 2381: 1: .23 2382: 2: 2383: 1.875000282 2384: 0: .875 2385: 1: .875 2386: 2: 5 2387: *** Failers 2388: No match 2389: 1.235 2390: No match 2391: 2392: /a(?)b/ 2393: ab 2394: 0: ab 2395: 2396: /\b(foo)\s+(\w+)/i 2397: Food is on the foo table 2398: 0: foo table 2399: 1: foo 2400: 2: table 2401: 2402: /foo(.*)bar/ 2403: The food is under the bar in the barn. 2404: 0: food is under the bar in the bar 2405: 1: d is under the bar in the 2406: 2407: /foo(.*?)bar/ 2408: The food is under the bar in the barn. 2409: 0: food is under the bar 2410: 1: d is under the 2411: 2412: /(.*)(\d*)/ 2413: I have 2 numbers: 53147 2414: 0: I have 2 numbers: 53147 2415: 1: I have 2 numbers: 53147 2416: 2: 2417: 2418: /(.*)(\d+)/ 2419: I have 2 numbers: 53147 2420: 0: I have 2 numbers: 53147 2421: 1: I have 2 numbers: 5314 2422: 2: 7 2423: 2424: /(.*?)(\d*)/ 2425: I have 2 numbers: 53147 2426: 0: 2427: 1: 2428: 2: 2429: 2430: /(.*?)(\d+)/ 2431: I have 2 numbers: 53147 2432: 0: I have 2 2433: 1: I have 2434: 2: 2 2435: 2436: /(.*)(\d+)$/ 2437: I have 2 numbers: 53147 2438: 0: I have 2 numbers: 53147 2439: 1: I have 2 numbers: 5314 2440: 2: 7 2441: 2442: /(.*?)(\d+)$/ 2443: I have 2 numbers: 53147 2444: 0: I have 2 numbers: 53147 2445: 1: I have 2 numbers: 2446: 2: 53147 2447: 2448: /(.*)\b(\d+)$/ 2449: I have 2 numbers: 53147 2450: 0: I have 2 numbers: 53147 2451: 1: I have 2 numbers: 2452: 2: 53147 2453: 2454: /(.*\D)(\d+)$/ 2455: I have 2 numbers: 53147 2456: 0: I have 2 numbers: 53147 2457: 1: I have 2 numbers: 2458: 2: 53147 2459: 2460: /^\D*(?!123)/ 2461: ABC123 2462: 0: AB 2463: 2464: /^(\D*)(?=\d)(?!123)/ 2465: ABC445 2466: 0: ABC 2467: 1: ABC 2468: *** Failers 2469: No match 2470: ABC123 2471: No match 2472: 2473: /^[W-]46]/ 2474: W46]789 2475: 0: W46] 2476: -46]789 2477: 0: -46] 2478: *** Failers 2479: No match 2480: Wall 2481: No match 2482: Zebra 2483: No match 2484: 42 2485: No match 2486: [abcd] 2487: No match 2488: ]abcd[ 2489: No match 2490: 2491: /^[W-\]46]/ 2492: W46]789 2493: 0: W 2494: Wall 2495: 0: W 2496: Zebra 2497: 0: Z 2498: Xylophone 2499: 0: X 2500: 42 2501: 0: 4 2502: [abcd] 2503: 0: [ 2504: ]abcd[ 2505: 0: ] 2506: \\backslash 2507: 0: \ 2508: *** Failers 2509: No match 2510: -46]789 2511: No match 2512: well 2513: No match 2514: 2515: /\d\d\/\d\d\/\d\d\d\d/ 2516: 01/01/2000 2517: 0: 01/01/2000 2518: 2519: /word (?:[a-zA-Z0-9]+ ){0,10}otherword/ 2520: word cat dog elephant mussel cow horse canary baboon snake shark otherword 2521: 0: word cat dog elephant mussel cow horse canary baboon snake shark otherword 2522: word cat dog elephant mussel cow horse canary baboon snake shark 2523: No match 2524: 2525: /word (?:[a-zA-Z0-9]+ ){0,300}otherword/ 2526: word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope 2527: No match 2528: 2529: /^(a){0,0}/ 2530: bcd 2531: 0: 2532: abc 2533: 0: 2534: aab 2535: 0: 2536: 2537: /^(a){0,1}/ 2538: bcd 2539: 0: 2540: abc 2541: 0: a 2542: 1: a 2543: aab 2544: 0: a 2545: 1: a 2546: 2547: /^(a){0,2}/ 2548: bcd 2549: 0: 2550: abc 2551: 0: a 2552: 1: a 2553: aab 2554: 0: aa 2555: 1: a 2556: 2557: /^(a){0,3}/ 2558: bcd 2559: 0: 2560: abc 2561: 0: a 2562: 1: a 2563: aab 2564: 0: aa 2565: 1: a 2566: aaa 2567: 0: aaa 2568: 1: a 2569: 2570: /^(a){0,}/ 2571: bcd 2572: 0: 2573: abc 2574: 0: a 2575: 1: a 2576: aab 2577: 0: aa 2578: 1: a 2579: aaa 2580: 0: aaa 2581: 1: a 2582: aaaaaaaa 2583: 0: aaaaaaaa 2584: 1: a 2585: 2586: /^(a){1,1}/ 2587: bcd 2588: No match 2589: abc 2590: 0: a 2591: 1: a 2592: aab 2593: 0: a 2594: 1: a 2595: 2596: /^(a){1,2}/ 2597: bcd 2598: No match 2599: abc 2600: 0: a 2601: 1: a 2602: aab 2603: 0: aa 2604: 1: a 2605: 2606: /^(a){1,3}/ 2607: bcd 2608: No match 2609: abc 2610: 0: a 2611: 1: a 2612: aab 2613: 0: aa 2614: 1: a 2615: aaa 2616: 0: aaa 2617: 1: a 2618: 2619: /^(a){1,}/ 2620: bcd 2621: No match 2622: abc 2623: 0: a 2624: 1: a 2625: aab 2626: 0: aa 2627: 1: a 2628: aaa 2629: 0: aaa 2630: 1: a 2631: aaaaaaaa 2632: 0: aaaaaaaa 2633: 1: a 2634: 2635: /.*\.gif/ 2636: borfle\nbib.gif\nno 2637: 0: bib.gif 2638: 2639: /.{0,}\.gif/ 2640: borfle\nbib.gif\nno 2641: 0: bib.gif 2642: 2643: /.*\.gif/m 2644: borfle\nbib.gif\nno 2645: 0: bib.gif 2646: 2647: /.*\.gif/s 2648: borfle\nbib.gif\nno 2649: 0: borfle\x0abib.gif 2650: 2651: /.*\.gif/ms 2652: borfle\nbib.gif\nno 2653: 0: borfle\x0abib.gif 2654: 2655: /.*$/ 2656: borfle\nbib.gif\nno 2657: 0: no 2658: 2659: /.*$/m 2660: borfle\nbib.gif\nno 2661: 0: borfle 2662: 2663: /.*$/s 2664: borfle\nbib.gif\nno 2665: 0: borfle\x0abib.gif\x0ano 2666: 2667: /.*$/ms 2668: borfle\nbib.gif\nno 2669: 0: borfle\x0abib.gif\x0ano 2670: 2671: /.*$/ 2672: borfle\nbib.gif\nno\n 2673: 0: no 2674: 2675: /.*$/m 2676: borfle\nbib.gif\nno\n 2677: 0: borfle 2678: 2679: /.*$/s 2680: borfle\nbib.gif\nno\n 2681: 0: borfle\x0abib.gif\x0ano\x0a 2682: 2683: /.*$/ms 2684: borfle\nbib.gif\nno\n 2685: 0: borfle\x0abib.gif\x0ano\x0a 2686: 2687: /(.*X|^B)/ 2688: abcde\n1234Xyz 2689: 0: 1234X 2690: 1: 1234X 2691: BarFoo 2692: 0: B 2693: 1: B 2694: *** Failers 2695: No match 2696: abcde\nBar 2697: No match 2698: 2699: /(.*X|^B)/m 2700: abcde\n1234Xyz 2701: 0: 1234X 2702: 1: 1234X 2703: BarFoo 2704: 0: B 2705: 1: B 2706: abcde\nBar 2707: 0: B 2708: 1: B 2709: 2710: /(.*X|^B)/s 2711: abcde\n1234Xyz 2712: 0: abcde\x0a1234X 2713: 1: abcde\x0a1234X 2714: BarFoo 2715: 0: B 2716: 1: B 2717: *** Failers 2718: No match 2719: abcde\nBar 2720: No match 2721: 2722: /(.*X|^B)/ms 2723: abcde\n1234Xyz 2724: 0: abcde\x0a1234X 2725: 1: abcde\x0a1234X 2726: BarFoo 2727: 0: B 2728: 1: B 2729: abcde\nBar 2730: 0: B 2731: 1: B 2732: 2733: /(?s)(.*X|^B)/ 2734: abcde\n1234Xyz 2735: 0: abcde\x0a1234X 2736: 1: abcde\x0a1234X 2737: BarFoo 2738: 0: B 2739: 1: B 2740: *** Failers 2741: No match 2742: abcde\nBar 2743: No match 2744: 2745: /(?s:.*X|^B)/ 2746: abcde\n1234Xyz 2747: 0: abcde\x0a1234X 2748: BarFoo 2749: 0: B 2750: *** Failers 2751: No match 2752: abcde\nBar 2753: No match 2754: 2755: /^.*B/ 2756: **** Failers 2757: No match 2758: abc\nB 2759: No match 2760: 2761: /(?s)^.*B/ 2762: abc\nB 2763: 0: abc\x0aB 2764: 2765: /(?m)^.*B/ 2766: abc\nB 2767: 0: B 2768: 2769: /(?ms)^.*B/ 2770: abc\nB 2771: 0: abc\x0aB 2772: 2773: /(?ms)^B/ 2774: abc\nB 2775: 0: B 2776: 2777: /(?s)B$/ 2778: B\n 2779: 0: B 2780: 2781: /^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/ 2782: 123456654321 2783: 0: 123456654321 2784: 2785: /^\d\d\d\d\d\d\d\d\d\d\d\d/ 2786: 123456654321 2787: 0: 123456654321 2788: 2789: /^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/ 2790: 123456654321 2791: 0: 123456654321 2792: 2793: /^[abc]{12}/ 2794: abcabcabcabc 2795: 0: abcabcabcabc 2796: 2797: /^[a-c]{12}/ 2798: abcabcabcabc 2799: 0: abcabcabcabc 2800: 2801: /^(a|b|c){12}/ 2802: abcabcabcabc 2803: 0: abcabcabcabc 2804: 1: c 2805: 2806: /^[abcdefghijklmnopqrstuvwxy0123456789]/ 2807: n 2808: 0: n 2809: *** Failers 2810: No match 2811: z 2812: No match 2813: 2814: /abcde{0,0}/ 2815: abcd 2816: 0: abcd 2817: *** Failers 2818: No match 2819: abce 2820: No match 2821: 2822: /ab[cd]{0,0}e/ 2823: abe 2824: 0: abe 2825: *** Failers 2826: No match 2827: abcde 2828: No match 2829: 2830: /ab(c){0,0}d/ 2831: abd 2832: 0: abd 2833: *** Failers 2834: No match 2835: abcd 2836: No match 2837: 2838: /a(b*)/ 2839: a 2840: 0: a 2841: 1: 2842: ab 2843: 0: ab 2844: 1: b 2845: abbbb 2846: 0: abbbb 2847: 1: bbbb 2848: *** Failers 2849: 0: a 2850: 1: 2851: bbbbb 2852: No match 2853: 2854: /ab\d{0}e/ 2855: abe 2856: 0: abe 2857: *** Failers 2858: No match 2859: ab1e 2860: No match 2861: 2862: /"([^\\"]+|\\.)*"/ 2863: the \"quick\" brown fox 2864: 0: "quick" 2865: 1: quick 2866: \"the \\\"quick\\\" brown fox\" 2867: 0: "the \"quick\" brown fox" 2868: 1: brown fox 2869: 2870: /.*?/g+ 2871: abc 2872: 0: 2873: 0+ abc 2874: 0: a 2875: 0+ bc 2876: 0: 2877: 0+ bc 2878: 0: b 2879: 0+ c 2880: 0: 2881: 0+ c 2882: 0: c 2883: 0+ 2884: 0: 2885: 0+ 2886: 2887: /\b/g+ 2888: abc 2889: 0: 2890: 0+ abc 2891: 0: 2892: 0+ 2893: 2894: /\b/+g 2895: abc 2896: 0: 2897: 0+ abc 2898: 0: 2899: 0+ 2900: 2901: //g 2902: abc 2903: 0: 2904: 0: 2905: 0: 2906: 0: 2907: 2908: /<tr([\w\W\s\d][^<>]{0,})><TD([\w\W\s\d][^<>]{0,})>([\d]{0,}\.)(.*)((<BR>([\w\W\s\d][^<>]{0,})|[\s]{0,}))<\/a><\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><\/TR>/is 2909: <TR BGCOLOR='#DBE9E9'><TD align=left valign=top>43.<a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)</a></TD><TD align=left valign=top>Lega lstaff.com</TD><TD align=left valign=top>CA - Statewide</TD></TR> 2910: 0: <TR BGCOLOR='#DBE9E9'><TD align=left valign=top>43.<a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)</a></TD><TD align=left valign=top>Lega lstaff.com</TD><TD align=left valign=top>CA - Statewide</TD></TR> 2911: 1: BGCOLOR='#DBE9E9' 2912: 2: align=left valign=top 2913: 3: 43. 2914: 4: <a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286) 2915: 5: 2916: 6: 2917: 7: <unset> 2918: 8: align=left valign=top 2919: 9: Lega lstaff.com 2920: 10: align=left valign=top 2921: 11: CA - Statewide 2922: 2923: /a[^a]b/ 2924: acb 2925: 0: acb 2926: a\nb 2927: 0: a\x0ab 2928: 2929: /a.b/ 2930: acb 2931: 0: acb 2932: *** Failers 2933: No match 2934: a\nb 2935: No match 2936: 2937: /a[^a]b/s 2938: acb 2939: 0: acb 2940: a\nb 2941: 0: a\x0ab 2942: 2943: /a.b/s 2944: acb 2945: 0: acb 2946: a\nb 2947: 0: a\x0ab 2948: 2949: /^(b+?|a){1,2}?c/ 2950: bac 2951: 0: bac 2952: 1: a 2953: bbac 2954: 0: bbac 2955: 1: a 2956: bbbac 2957: 0: bbbac 2958: 1: a 2959: bbbbac 2960: 0: bbbbac 2961: 1: a 2962: bbbbbac 2963: 0: bbbbbac 2964: 1: a 2965: 2966: /^(b+|a){1,2}?c/ 2967: bac 2968: 0: bac 2969: 1: a 2970: bbac 2971: 0: bbac 2972: 1: a 2973: bbbac 2974: 0: bbbac 2975: 1: a 2976: bbbbac 2977: 0: bbbbac 2978: 1: a 2979: bbbbbac 2980: 0: bbbbbac 2981: 1: a 2982: 2983: /(?!\A)x/m 2984: x\nb\n 2985: No match 2986: a\bx\n 2987: 0: x 2988: 2989: /\x0{ab}/ 2990: \0{ab} 2991: 0: \x00{ab} 2992: 2993: /(A|B)*?CD/ 2994: CD 2995: 0: CD 2996: 2997: /(A|B)*CD/ 2998: CD 2999: 0: CD 3000: 3001: /(AB)*?\1/ 3002: ABABAB 3003: 0: ABAB 3004: 1: AB 3005: 3006: /(AB)*\1/ 3007: ABABAB 3008: 0: ABABAB 3009: 1: AB 3010: 3011: /(?<!bar)foo/ 3012: foo 3013: 0: foo 3014: catfood 3015: 0: foo 3016: arfootle 3017: 0: foo 3018: rfoosh 3019: 0: foo 3020: *** Failers 3021: No match 3022: barfoo 3023: No match 3024: towbarfoo 3025: No match 3026: 3027: /\w{3}(?<!bar)foo/ 3028: catfood 3029: 0: catfoo 3030: *** Failers 3031: No match 3032: foo 3033: No match 3034: barfoo 3035: No match 3036: towbarfoo 3037: No match 3038: 3039: /(?<=(foo)a)bar/ 3040: fooabar 3041: 0: bar 3042: 1: foo 3043: *** Failers 3044: No match 3045: bar 3046: No match 3047: foobbar 3048: No match 3049: 3050: /\Aabc\z/m 3051: abc 3052: 0: abc 3053: *** Failers 3054: No match 3055: abc\n 3056: No match 3057: qqq\nabc 3058: No match 3059: abc\nzzz 3060: No match 3061: qqq\nabc\nzzz 3062: No match 3063: 3064: "(?>.*/)foo" 3065: /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/ 3066: No match 3067: 3068: "(?>.*/)foo" 3069: /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo 3070: 0: /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo 3071: 3072: /(?>(\.\d\d[1-9]?))\d+/ 3073: 1.230003938 3074: 0: .230003938 3075: 1: .23 3076: 1.875000282 3077: 0: .875000282 3078: 1: .875 3079: *** Failers 3080: No match 3081: 1.235 3082: No match 3083: 3084: /^((?>\w+)|(?>\s+))*$/ 3085: now is the time for all good men to come to the aid of the party 3086: 0: now is the time for all good men to come to the aid of the party 3087: 1: party 3088: *** Failers 3089: No match 3090: this is not a line with only words and spaces! 3091: No match 3092: 3093: /(\d+)(\w)/ 3094: 12345a 3095: 0: 12345a 3096: 1: 12345 3097: 2: a 3098: 12345+ 3099: 0: 12345 3100: 1: 1234 3101: 2: 5 3102: 3103: /((?>\d+))(\w)/ 3104: 12345a 3105: 0: 12345a 3106: 1: 12345 3107: 2: a 3108: *** Failers 3109: No match 3110: 12345+ 3111: No match 3112: 3113: /(?>a+)b/ 3114: aaab 3115: 0: aaab 3116: 3117: /((?>a+)b)/ 3118: aaab 3119: 0: aaab 3120: 1: aaab 3121: 3122: /(?>(a+))b/ 3123: aaab 3124: 0: aaab 3125: 1: aaa 3126: 3127: /(?>b)+/ 3128: aaabbbccc 3129: 0: bbb 3130: 3131: /(?>a+|b+|c+)*c/ 3132: aaabbbbccccd 3133: 0: aaabbbbc 3134: 3135: /((?>[^()]+)|\([^()]*\))+/ 3136: ((abc(ade)ufh()()x 3137: 0: abc(ade)ufh()()x 3138: 1: x 3139: 3140: /\(((?>[^()]+)|\([^()]+\))+\)/ 3141: (abc) 3142: 0: (abc) 3143: 1: abc 3144: (abc(def)xyz) 3145: 0: (abc(def)xyz) 3146: 1: xyz 3147: *** Failers 3148: No match 3149: ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3150: No match 3151: 3152: /a(?-i)b/i 3153: ab 3154: 0: ab 3155: Ab 3156: 0: Ab 3157: *** Failers 3158: No match 3159: aB 3160: No match 3161: AB 3162: No match 3163: 3164: /(a (?x)b c)d e/ 3165: a bcd e 3166: 0: a bcd e 3167: 1: a bc 3168: *** Failers 3169: No match 3170: a b cd e 3171: No match 3172: abcd e 3173: No match 3174: a bcde 3175: No match 3176: 3177: /(a b(?x)c d (?-x)e f)/ 3178: a bcde f 3179: 0: a bcde f 3180: 1: a bcde f 3181: *** Failers 3182: No match 3183: abcdef 3184: No match 3185: 3186: /(a(?i)b)c/ 3187: abc 3188: 0: abc 3189: 1: ab 3190: aBc 3191: 0: aBc 3192: 1: aB 3193: *** Failers 3194: No match 3195: abC 3196: No match 3197: aBC 3198: No match 3199: Abc 3200: No match 3201: ABc 3202: No match 3203: ABC 3204: No match 3205: AbC 3206: No match 3207: 3208: /a(?i:b)c/ 3209: abc 3210: 0: abc 3211: aBc 3212: 0: aBc 3213: *** Failers 3214: No match 3215: ABC 3216: No match 3217: abC 3218: No match 3219: aBC 3220: No match 3221: 3222: /a(?i:b)*c/ 3223: aBc 3224: 0: aBc 3225: aBBc 3226: 0: aBBc 3227: *** Failers 3228: No match 3229: aBC 3230: No match 3231: aBBC 3232: No match 3233: 3234: /a(?=b(?i)c)\w\wd/ 3235: abcd 3236: 0: abcd 3237: abCd 3238: 0: abCd 3239: *** Failers 3240: No match 3241: aBCd 3242: No match 3243: abcD 3244: No match 3245: 3246: /(?s-i:more.*than).*million/i 3247: more than million 3248: 0: more than million 3249: more than MILLION 3250: 0: more than MILLION 3251: more \n than Million 3252: 0: more \x0a than Million 3253: *** Failers 3254: No match 3255: MORE THAN MILLION 3256: No match 3257: more \n than \n million 3258: No match 3259: 3260: /(?:(?s-i)more.*than).*million/i 3261: more than million 3262: 0: more than million 3263: more than MILLION 3264: 0: more than MILLION 3265: more \n than Million 3266: 0: more \x0a than Million 3267: *** Failers 3268: No match 3269: MORE THAN MILLION 3270: No match 3271: more \n than \n million 3272: No match 3273: 3274: /(?>a(?i)b+)+c/ 3275: abc 3276: 0: abc 3277: aBbc 3278: 0: aBbc 3279: aBBc 3280: 0: aBBc 3281: *** Failers 3282: No match 3283: Abc 3284: No match 3285: abAb 3286: No match 3287: abbC 3288: No match 3289: 3290: /(?=a(?i)b)\w\wc/ 3291: abc 3292: 0: abc 3293: aBc 3294: 0: aBc 3295: *** Failers 3296: No match 3297: Ab 3298: No match 3299: abC 3300: No match 3301: aBC 3302: No match 3303: 3304: /(?<=a(?i)b)(\w\w)c/ 3305: abxxc 3306: 0: xxc 3307: 1: xx 3308: aBxxc 3309: 0: xxc 3310: 1: xx 3311: *** Failers 3312: No match 3313: Abxxc 3314: No match 3315: ABxxc 3316: No match 3317: abxxC 3318: No match 3319: 3320: /(?:(a)|b)(?(1)A|B)/ 3321: aA 3322: 0: aA 3323: 1: a 3324: bB 3325: 0: bB 3326: *** Failers 3327: No match 3328: aB 3329: No match 3330: bA 3331: No match 3332: 3333: /^(a)?(?(1)a|b)+$/ 3334: aa 3335: 0: aa 3336: 1: a 3337: b 3338: 0: b 3339: bb 3340: 0: bb 3341: *** Failers 3342: No match 3343: ab 3344: No match 3345: 3346: /^(?(?=abc)\w{3}:|\d\d)$/ 3347: abc: 3348: 0: abc: 3349: 12 3350: 0: 12 3351: *** Failers 3352: No match 3353: 123 3354: No match 3355: xyz 3356: No match 3357: 3358: /^(?(?!abc)\d\d|\w{3}:)$/ 3359: abc: 3360: 0: abc: 3361: 12 3362: 0: 12 3363: *** Failers 3364: No match 3365: 123 3366: No match 3367: xyz 3368: No match 3369: 3370: /(?(?<=foo)bar|cat)/ 3371: foobar 3372: 0: bar 3373: cat 3374: 0: cat 3375: fcat 3376: 0: cat 3377: focat 3378: 0: cat 3379: *** Failers 3380: No match 3381: foocat 3382: No match 3383: 3384: /(?(?<!foo)cat|bar)/ 3385: foobar 3386: 0: bar 3387: cat 3388: 0: cat 3389: fcat 3390: 0: cat 3391: focat 3392: 0: cat 3393: *** Failers 3394: No match 3395: foocat 3396: No match 3397: 3398: /( \( )? [^()]+ (?(1) \) |) /x 3399: abcd 3400: 0: abcd 3401: (abcd) 3402: 0: (abcd) 3403: 1: ( 3404: the quick (abcd) fox 3405: 0: the quick 3406: (abcd 3407: 0: abcd 3408: 3409: /( \( )? [^()]+ (?(1) \) ) /x 3410: abcd 3411: 0: abcd 3412: (abcd) 3413: 0: (abcd) 3414: 1: ( 3415: the quick (abcd) fox 3416: 0: the quick 3417: (abcd 3418: 0: abcd 3419: 3420: /^(?(2)a|(1)(2))+$/ 3421: 12 3422: 0: 12 3423: 1: 1 3424: 2: 2 3425: 12a 3426: 0: 12a 3427: 1: 1 3428: 2: 2 3429: 12aa 3430: 0: 12aa 3431: 1: 1 3432: 2: 2 3433: *** Failers 3434: No match 3435: 1234 3436: No match 3437: 3438: /((?i)blah)\s+\1/ 3439: blah blah 3440: 0: blah blah 3441: 1: blah 3442: BLAH BLAH 3443: 0: BLAH BLAH 3444: 1: BLAH 3445: Blah Blah 3446: 0: Blah Blah 3447: 1: Blah 3448: blaH blaH 3449: 0: blaH blaH 3450: 1: blaH 3451: *** Failers 3452: No match 3453: blah BLAH 3454: No match 3455: Blah blah 3456: No match 3457: blaH blah 3458: No match 3459: 3460: /((?i)blah)\s+(?i:\1)/ 3461: blah blah 3462: 0: blah blah 3463: 1: blah 3464: BLAH BLAH 3465: 0: BLAH BLAH 3466: 1: BLAH 3467: Blah Blah 3468: 0: Blah Blah 3469: 1: Blah 3470: blaH blaH 3471: 0: blaH blaH 3472: 1: blaH 3473: blah BLAH 3474: 0: blah BLAH 3475: 1: blah 3476: Blah blah 3477: 0: Blah blah 3478: 1: Blah 3479: blaH blah 3480: 0: blaH blah 3481: 1: blaH 3482: 3483: /(?>a*)*/ 3484: a 3485: 0: a 3486: aa 3487: 0: aa 3488: aaaa 3489: 0: aaaa 3490: 3491: /(abc|)+/ 3492: abc 3493: 0: abc 3494: 1: 3495: abcabc 3496: 0: abcabc 3497: 1: 3498: abcabcabc 3499: 0: abcabcabc 3500: 1: 3501: xyz 3502: 0: 3503: 1: 3504: 3505: /([a]*)*/ 3506: a 3507: 0: a 3508: 1: 3509: aaaaa 3510: 0: aaaaa 3511: 1: 3512: 3513: /([ab]*)*/ 3514: a 3515: 0: a 3516: 1: 3517: b 3518: 0: b 3519: 1: 3520: ababab 3521: 0: ababab 3522: 1: 3523: aaaabcde 3524: 0: aaaab 3525: 1: 3526: bbbb 3527: 0: bbbb 3528: 1: 3529: 3530: /([^a]*)*/ 3531: b 3532: 0: b 3533: 1: 3534: bbbb 3535: 0: bbbb 3536: 1: 3537: aaa 3538: 0: 3539: 1: 3540: 3541: /([^ab]*)*/ 3542: cccc 3543: 0: cccc 3544: 1: 3545: abab 3546: 0: 3547: 1: 3548: 3549: /([a]*?)*/ 3550: a 3551: 0: 3552: 1: 3553: aaaa 3554: 0: 3555: 1: 3556: 3557: /([ab]*?)*/ 3558: a 3559: 0: 3560: 1: 3561: b 3562: 0: 3563: 1: 3564: abab 3565: 0: 3566: 1: 3567: baba 3568: 0: 3569: 1: 3570: 3571: /([^a]*?)*/ 3572: b 3573: 0: 3574: 1: 3575: bbbb 3576: 0: 3577: 1: 3578: aaa 3579: 0: 3580: 1: 3581: 3582: /([^ab]*?)*/ 3583: c 3584: 0: 3585: 1: 3586: cccc 3587: 0: 3588: 1: 3589: baba 3590: 0: 3591: 1: 3592: 3593: /(?>a*)*/ 3594: a 3595: 0: a 3596: aaabcde 3597: 0: aaa 3598: 3599: /((?>a*))*/ 3600: aaaaa 3601: 0: aaaaa 3602: 1: 3603: aabbaa 3604: 0: aa 3605: 1: 3606: 3607: /((?>a*?))*/ 3608: aaaaa 3609: 0: 3610: 1: 3611: aabbaa 3612: 0: 3613: 1: 3614: 3615: /(?(?=[^a-z]+[a-z]) \d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} ) /x 3616: 12-sep-98 3617: 0: 12-sep-98 3618: 12-09-98 3619: 0: 12-09-98 3620: *** Failers 3621: No match 3622: sep-12-98 3623: No match 3624: 3625: /(?<=(foo))bar\1/ 3626: foobarfoo 3627: 0: barfoo 3628: 1: foo 3629: foobarfootling 3630: 0: barfoo 3631: 1: foo 3632: *** Failers 3633: No match 3634: foobar 3635: No match 3636: barfoo 3637: No match 3638: 3639: /(?i:saturday|sunday)/ 3640: saturday 3641: 0: saturday 3642: sunday 3643: 0: sunday 3644: Saturday 3645: 0: Saturday 3646: Sunday 3647: 0: Sunday 3648: SATURDAY 3649: 0: SATURDAY 3650: SUNDAY 3651: 0: SUNDAY 3652: SunDay 3653: 0: SunDay 3654: 3655: /(a(?i)bc|BB)x/ 3656: abcx 3657: 0: abcx 3658: 1: abc 3659: aBCx 3660: 0: aBCx 3661: 1: aBC 3662: bbx 3663: 0: bbx 3664: 1: bb 3665: BBx 3666: 0: BBx 3667: 1: BB 3668: *** Failers 3669: No match 3670: abcX 3671: No match 3672: aBCX 3673: No match 3674: bbX 3675: No match 3676: BBX 3677: No match 3678: 3679: /^([ab](?i)[cd]|[ef])/ 3680: ac 3681: 0: ac 3682: 1: ac 3683: aC 3684: 0: aC 3685: 1: aC 3686: bD 3687: 0: bD 3688: 1: bD 3689: elephant 3690: 0: e 3691: 1: e 3692: Europe 3693: 0: E 3694: 1: E 3695: frog 3696: 0: f 3697: 1: f 3698: France 3699: 0: F 3700: 1: F 3701: *** Failers 3702: No match 3703: Africa 3704: No match 3705: 3706: /^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/ 3707: ab 3708: 0: ab 3709: 1: ab 3710: aBd 3711: 0: aBd 3712: 1: aBd 3713: xy 3714: 0: xy 3715: 1: xy 3716: xY 3717: 0: xY 3718: 1: xY 3719: zebra 3720: 0: z 3721: 1: z 3722: Zambesi 3723: 0: Z 3724: 1: Z 3725: *** Failers 3726: No match 3727: aCD 3728: No match 3729: XY 3730: No match 3731: 3732: /(?<=foo\n)^bar/m 3733: foo\nbar 3734: 0: bar 3735: *** Failers 3736: No match 3737: bar 3738: No match 3739: baz\nbar 3740: No match 3741: 3742: /(?<=(?<!foo)bar)baz/ 3743: barbaz 3744: 0: baz 3745: barbarbaz 3746: 0: baz 3747: koobarbaz 3748: 0: baz 3749: *** Failers 3750: No match 3751: baz 3752: No match 3753: foobarbaz 3754: No match 3755: 3756: /The cases of aaaa and aaaaaa are missed out below because Perl does things/ 3757: /differently. We know that odd, and maybe incorrect, things happen with/ 3758: No match 3759: /recursive references in Perl, as far as 5.11.3 - see some stuff in test #2./ 3760: No match 3761: 3762: /^(a\1?){4}$/ 3763: a 3764: No match 3765: aa 3766: No match 3767: aaa 3768: No match 3769: aaaaa 3770: 0: aaaaa 3771: 1: a 3772: aaaaaaa 3773: 0: aaaaaaa 3774: 1: a 3775: aaaaaaaa 3776: No match 3777: aaaaaaaaa 3778: No match 3779: aaaaaaaaaa 3780: 0: aaaaaaaaaa 3781: 1: aaaa 3782: aaaaaaaaaaa 3783: No match 3784: aaaaaaaaaaaa 3785: No match 3786: aaaaaaaaaaaaa 3787: No match 3788: aaaaaaaaaaaaaa 3789: No match 3790: aaaaaaaaaaaaaaa 3791: No match 3792: aaaaaaaaaaaaaaaa 3793: No match 3794: 3795: /^(a\1?)(a\1?)(a\2?)(a\3?)$/ 3796: a 3797: No match 3798: aa 3799: No match 3800: aaa 3801: No match 3802: aaaa 3803: 0: aaaa 3804: 1: a 3805: 2: a 3806: 3: a 3807: 4: a 3808: aaaaa 3809: 0: aaaaa 3810: 1: a 3811: 2: aa 3812: 3: a 3813: 4: a 3814: aaaaaa 3815: 0: aaaaaa 3816: 1: a 3817: 2: aa 3818: 3: a 3819: 4: aa 3820: aaaaaaa 3821: 0: aaaaaaa 3822: 1: a 3823: 2: aa 3824: 3: aaa 3825: 4: a 3826: aaaaaaaa 3827: No match 3828: aaaaaaaaa 3829: No match 3830: aaaaaaaaaa 3831: 0: aaaaaaaaaa 3832: 1: a 3833: 2: aa 3834: 3: aaa 3835: 4: aaaa 3836: aaaaaaaaaaa 3837: No match 3838: aaaaaaaaaaaa 3839: No match 3840: aaaaaaaaaaaaa 3841: No match 3842: aaaaaaaaaaaaaa 3843: No match 3844: aaaaaaaaaaaaaaa 3845: No match 3846: aaaaaaaaaaaaaaaa 3847: No match 3848: 3849: /The following tests are taken from the Perl 5.005 test suite; some of them/ 3850: /are compatible with 5.004, but I'd rather not have to sort them out./ 3851: No match 3852: 3853: /abc/ 3854: abc 3855: 0: abc 3856: xabcy 3857: 0: abc 3858: ababc 3859: 0: abc 3860: *** Failers 3861: No match 3862: xbc 3863: No match 3864: axc 3865: No match 3866: abx 3867: No match 3868: 3869: /ab*c/ 3870: abc 3871: 0: abc 3872: 3873: /ab*bc/ 3874: abc 3875: 0: abc 3876: abbc 3877: 0: abbc 3878: abbbbc 3879: 0: abbbbc 3880: 3881: /.{1}/ 3882: abbbbc 3883: 0: a 3884: 3885: /.{3,4}/ 3886: abbbbc 3887: 0: abbb 3888: 3889: /ab{0,}bc/ 3890: abbbbc 3891: 0: abbbbc 3892: 3893: /ab+bc/ 3894: abbc 3895: 0: abbc 3896: *** Failers 3897: No match 3898: abc 3899: No match 3900: abq 3901: No match 3902: 3903: /ab{1,}bc/ 3904: 3905: /ab+bc/ 3906: abbbbc 3907: 0: abbbbc 3908: 3909: /ab{1,}bc/ 3910: abbbbc 3911: 0: abbbbc 3912: 3913: /ab{1,3}bc/ 3914: abbbbc 3915: 0: abbbbc 3916: 3917: /ab{3,4}bc/ 3918: abbbbc 3919: 0: abbbbc 3920: 3921: /ab{4,5}bc/ 3922: *** Failers 3923: No match 3924: abq 3925: No match 3926: abbbbc 3927: No match 3928: 3929: /ab?bc/ 3930: abbc 3931: 0: abbc 3932: abc 3933: 0: abc 3934: 3935: /ab{0,1}bc/ 3936: abc 3937: 0: abc 3938: 3939: /ab?bc/ 3940: 3941: /ab?c/ 3942: abc 3943: 0: abc 3944: 3945: /ab{0,1}c/ 3946: abc 3947: 0: abc 3948: 3949: /^abc$/ 3950: abc 3951: 0: abc 3952: *** Failers 3953: No match 3954: abbbbc 3955: No match 3956: abcc 3957: No match 3958: 3959: /^abc/ 3960: abcc 3961: 0: abc 3962: 3963: /^abc$/ 3964: 3965: /abc$/ 3966: aabc 3967: 0: abc 3968: *** Failers 3969: No match 3970: aabc 3971: 0: abc 3972: aabcd 3973: No match 3974: 3975: /^/ 3976: abc 3977: 0: 3978: 3979: /$/ 3980: abc 3981: 0: 3982: 3983: /a.c/ 3984: abc 3985: 0: abc 3986: axc 3987: 0: axc 3988: 3989: /a.*c/ 3990: axyzc 3991: 0: axyzc 3992: 3993: /a[bc]d/ 3994: abd 3995: 0: abd 3996: *** Failers 3997: No match 3998: axyzd 3999: No match 4000: abc 4001: No match 4002: 4003: /a[b-d]e/ 4004: ace 4005: 0: ace 4006: 4007: /a[b-d]/ 4008: aac 4009: 0: ac 4010: 4011: /a[-b]/ 4012: a- 4013: 0: a- 4014: 4015: /a[b-]/ 4016: a- 4017: 0: a- 4018: 4019: /a]/ 4020: a] 4021: 0: a] 4022: 4023: /a[]]b/ 4024: a]b 4025: 0: a]b 4026: 4027: /a[^bc]d/ 4028: aed 4029: 0: aed 4030: *** Failers 4031: No match 4032: abd 4033: No match 4034: abd 4035: No match 4036: 4037: /a[^-b]c/ 4038: adc 4039: 0: adc 4040: 4041: /a[^]b]c/ 4042: adc 4043: 0: adc 4044: *** Failers 4045: No match 4046: a-c 4047: 0: a-c 4048: a]c 4049: No match 4050: 4051: /\ba\b/ 4052: a- 4053: 0: a 4054: -a 4055: 0: a 4056: -a- 4057: 0: a 4058: 4059: /\by\b/ 4060: *** Failers 4061: No match 4062: xy 4063: No match 4064: yz 4065: No match 4066: xyz 4067: No match 4068: 4069: /\Ba\B/ 4070: *** Failers 4071: 0: a 4072: a- 4073: No match 4074: -a 4075: No match 4076: -a- 4077: No match 4078: 4079: /\By\b/ 4080: xy 4081: 0: y 4082: 4083: /\by\B/ 4084: yz 4085: 0: y 4086: 4087: /\By\B/ 4088: xyz 4089: 0: y 4090: 4091: /\w/ 4092: a 4093: 0: a 4094: 4095: /\W/ 4096: - 4097: 0: - 4098: *** Failers 4099: 0: * 4100: - 4101: 0: - 4102: a 4103: No match 4104: 4105: /a\sb/ 4106: a b 4107: 0: a b 4108: 4109: /a\Sb/ 4110: a-b 4111: 0: a-b 4112: *** Failers 4113: No match 4114: a-b 4115: 0: a-b 4116: a b 4117: No match 4118: 4119: /\d/ 4120: 1 4121: 0: 1 4122: 4123: /\D/ 4124: - 4125: 0: - 4126: *** Failers 4127: 0: * 4128: - 4129: 0: - 4130: 1 4131: No match 4132: 4133: /[\w]/ 4134: a 4135: 0: a 4136: 4137: /[\W]/ 4138: - 4139: 0: - 4140: *** Failers 4141: 0: * 4142: - 4143: 0: - 4144: a 4145: No match 4146: 4147: /a[\s]b/ 4148: a b 4149: 0: a b 4150: 4151: /a[\S]b/ 4152: a-b 4153: 0: a-b 4154: *** Failers 4155: No match 4156: a-b 4157: 0: a-b 4158: a b 4159: No match 4160: 4161: /[\d]/ 4162: 1 4163: 0: 1 4164: 4165: /[\D]/ 4166: - 4167: 0: - 4168: *** Failers 4169: 0: * 4170: - 4171: 0: - 4172: 1 4173: No match 4174: 4175: /ab|cd/ 4176: abc 4177: 0: ab 4178: abcd 4179: 0: ab 4180: 4181: /()ef/ 4182: def 4183: 0: ef 4184: 1: 4185: 4186: /$b/ 4187: 4188: /a\(b/ 4189: a(b 4190: 0: a(b 4191: 4192: /a\(*b/ 4193: ab 4194: 0: ab 4195: a((b 4196: 0: a((b 4197: 4198: /a\\b/ 4199: a\b 4200: No match 4201: 4202: /((a))/ 4203: abc 4204: 0: a 4205: 1: a 4206: 2: a 4207: 4208: /(a)b(c)/ 4209: abc 4210: 0: abc 4211: 1: a 4212: 2: c 4213: 4214: /a+b+c/ 4215: aabbabc 4216: 0: abc 4217: 4218: /a{1,}b{1,}c/ 4219: aabbabc 4220: 0: abc 4221: 4222: /a.+?c/ 4223: abcabc 4224: 0: abc 4225: 4226: /(a+|b)*/ 4227: ab 4228: 0: ab 4229: 1: b 4230: 4231: /(a+|b){0,}/ 4232: ab 4233: 0: ab 4234: 1: b 4235: 4236: /(a+|b)+/ 4237: ab 4238: 0: ab 4239: 1: b 4240: 4241: /(a+|b){1,}/ 4242: ab 4243: 0: ab 4244: 1: b 4245: 4246: /(a+|b)?/ 4247: ab 4248: 0: a 4249: 1: a 4250: 4251: /(a+|b){0,1}/ 4252: ab 4253: 0: a 4254: 1: a 4255: 4256: /[^ab]*/ 4257: cde 4258: 0: cde 4259: 4260: /abc/ 4261: *** Failers 4262: No match 4263: b 4264: No match 4265: 4266: 4267: /a*/ 4268: 4269: 4270: /([abc])*d/ 4271: abbbcd 4272: 0: abbbcd 4273: 1: c 4274: 4275: /([abc])*bcd/ 4276: abcd 4277: 0: abcd 4278: 1: a 4279: 4280: /a|b|c|d|e/ 4281: e 4282: 0: e 4283: 4284: /(a|b|c|d|e)f/ 4285: ef 4286: 0: ef 4287: 1: e 4288: 4289: /abcd*efg/ 4290: abcdefg 4291: 0: abcdefg 4292: 4293: /ab*/ 4294: xabyabbbz 4295: 0: ab 4296: xayabbbz 4297: 0: a 4298: 4299: /(ab|cd)e/ 4300: abcde 4301: 0: cde 4302: 1: cd 4303: 4304: /[abhgefdc]ij/ 4305: hij 4306: 0: hij 4307: 4308: /^(ab|cd)e/ 4309: 4310: /(abc|)ef/ 4311: abcdef 4312: 0: ef 4313: 1: 4314: 4315: /(a|b)c*d/ 4316: abcd 4317: 0: bcd 4318: 1: b 4319: 4320: /(ab|ab*)bc/ 4321: abc 4322: 0: abc 4323: 1: a 4324: 4325: /a([bc]*)c*/ 4326: abc 4327: 0: abc 4328: 1: bc 4329: 4330: /a([bc]*)(c*d)/ 4331: abcd 4332: 0: abcd 4333: 1: bc 4334: 2: d 4335: 4336: /a([bc]+)(c*d)/ 4337: abcd 4338: 0: abcd 4339: 1: bc 4340: 2: d 4341: 4342: /a([bc]*)(c+d)/ 4343: abcd 4344: 0: abcd 4345: 1: b 4346: 2: cd 4347: 4348: /a[bcd]*dcdcde/ 4349: adcdcde 4350: 0: adcdcde 4351: 4352: /a[bcd]+dcdcde/ 4353: *** Failers 4354: No match 4355: abcde 4356: No match 4357: adcdcde 4358: No match 4359: 4360: /(ab|a)b*c/ 4361: abc 4362: 0: abc 4363: 1: ab 4364: 4365: /((a)(b)c)(d)/ 4366: abcd 4367: 0: abcd 4368: 1: abc 4369: 2: a 4370: 3: b 4371: 4: d 4372: 4373: /[a-zA-Z_][a-zA-Z0-9_]*/ 4374: alpha 4375: 0: alpha 4376: 4377: /^a(bc+|b[eh])g|.h$/ 4378: abh 4379: 0: bh 4380: 4381: /(bc+d$|ef*g.|h?i(j|k))/ 4382: effgz 4383: 0: effgz 4384: 1: effgz 4385: ij 4386: 0: ij 4387: 1: ij 4388: 2: j 4389: reffgz 4390: 0: effgz 4391: 1: effgz 4392: *** Failers 4393: No match 4394: effg 4395: No match 4396: bcdd 4397: No match 4398: 4399: /((((((((((a))))))))))/ 4400: a 4401: 0: a 4402: 1: a 4403: 2: a 4404: 3: a 4405: 4: a 4406: 5: a 4407: 6: a 4408: 7: a 4409: 8: a 4410: 9: a 4411: 10: a 4412: 4413: /((((((((((a))))))))))\10/ 4414: aa 4415: 0: aa 4416: 1: a 4417: 2: a 4418: 3: a 4419: 4: a 4420: 5: a 4421: 6: a 4422: 7: a 4423: 8: a 4424: 9: a 4425: 10: a 4426: 4427: /(((((((((a)))))))))/ 4428: a 4429: 0: a 4430: 1: a 4431: 2: a 4432: 3: a 4433: 4: a 4434: 5: a 4435: 6: a 4436: 7: a 4437: 8: a 4438: 9: a 4439: 4440: /multiple words of text/ 4441: *** Failers 4442: No match 4443: aa 4444: No match 4445: uh-uh 4446: No match 4447: 4448: /multiple words/ 4449: multiple words, yeah 4450: 0: multiple words 4451: 4452: /(.*)c(.*)/ 4453: abcde 4454: 0: abcde 4455: 1: ab 4456: 2: de 4457: 4458: /\((.*), (.*)\)/ 4459: (a, b) 4460: 0: (a, b) 4461: 1: a 4462: 2: b 4463: 4464: /[k]/ 4465: 4466: /abcd/ 4467: abcd 4468: 0: abcd 4469: 4470: /a(bc)d/ 4471: abcd 4472: 0: abcd 4473: 1: bc 4474: 4475: /a[-]?c/ 4476: ac 4477: 0: ac 4478: 4479: /(abc)\1/ 4480: abcabc 4481: 0: abcabc 4482: 1: abc 4483: 4484: /([a-c]*)\1/ 4485: abcabc 4486: 0: abcabc 4487: 1: abc 4488: 4489: /(a)|\1/ 4490: a 4491: 0: a 4492: 1: a 4493: *** Failers 4494: 0: a 4495: 1: a 4496: ab 4497: 0: a 4498: 1: a 4499: x 4500: No match 4501: 4502: /(([a-c])b*?\2)*/ 4503: ababbbcbc 4504: 0: ababb 4505: 1: bb 4506: 2: b 4507: 4508: /(([a-c])b*?\2){3}/ 4509: ababbbcbc 4510: 0: ababbbcbc 4511: 1: cbc 4512: 2: c 4513: 4514: /((\3|b)\2(a)x)+/ 4515: aaaxabaxbaaxbbax 4516: 0: bbax 4517: 1: bbax 4518: 2: b 4519: 3: a 4520: 4521: /((\3|b)\2(a)){2,}/ 4522: bbaababbabaaaaabbaaaabba 4523: 0: bbaaaabba 4524: 1: bba 4525: 2: b 4526: 3: a 4527: 4528: /abc/i 4529: ABC 4530: 0: ABC 4531: XABCY 4532: 0: ABC 4533: ABABC 4534: 0: ABC 4535: *** Failers 4536: No match 4537: aaxabxbaxbbx 4538: No match 4539: XBC 4540: No match 4541: AXC 4542: No match 4543: ABX 4544: No match 4545: 4546: /ab*c/i 4547: ABC 4548: 0: ABC 4549: 4550: /ab*bc/i 4551: ABC 4552: 0: ABC 4553: ABBC 4554: 0: ABBC 4555: 4556: /ab*?bc/i 4557: ABBBBC 4558: 0: ABBBBC 4559: 4560: /ab{0,}?bc/i 4561: ABBBBC 4562: 0: ABBBBC 4563: 4564: /ab+?bc/i 4565: ABBC 4566: 0: ABBC 4567: 4568: /ab+bc/i 4569: *** Failers 4570: No match 4571: ABC 4572: No match 4573: ABQ 4574: No match 4575: 4576: /ab{1,}bc/i 4577: 4578: /ab+bc/i 4579: ABBBBC 4580: 0: ABBBBC 4581: 4582: /ab{1,}?bc/i 4583: ABBBBC 4584: 0: ABBBBC 4585: 4586: /ab{1,3}?bc/i 4587: ABBBBC 4588: 0: ABBBBC 4589: 4590: /ab{3,4}?bc/i 4591: ABBBBC 4592: 0: ABBBBC 4593: 4594: /ab{4,5}?bc/i 4595: *** Failers 4596: No match 4597: ABQ 4598: No match 4599: ABBBBC 4600: No match 4601: 4602: /ab??bc/i 4603: ABBC 4604: 0: ABBC 4605: ABC 4606: 0: ABC 4607: 4608: /ab{0,1}?bc/i 4609: ABC 4610: 0: ABC 4611: 4612: /ab??bc/i 4613: 4614: /ab??c/i 4615: ABC 4616: 0: ABC 4617: 4618: /ab{0,1}?c/i 4619: ABC 4620: 0: ABC 4621: 4622: /^abc$/i 4623: ABC 4624: 0: ABC 4625: *** Failers 4626: No match 4627: ABBBBC 4628: No match 4629: ABCC 4630: No match 4631: 4632: /^abc/i 4633: ABCC 4634: 0: ABC 4635: 4636: /^abc$/i 4637: 4638: /abc$/i 4639: AABC 4640: 0: ABC 4641: 4642: /^/i 4643: ABC 4644: 0: 4645: 4646: /$/i 4647: ABC 4648: 0: 4649: 4650: /a.c/i 4651: ABC 4652: 0: ABC 4653: AXC 4654: 0: AXC 4655: 4656: /a.*?c/i 4657: AXYZC 4658: 0: AXYZC 4659: 4660: /a.*c/i 4661: *** Failers 4662: No match 4663: AABC 4664: 0: AABC 4665: AXYZD 4666: No match 4667: 4668: /a[bc]d/i 4669: ABD 4670: 0: ABD 4671: 4672: /a[b-d]e/i 4673: ACE 4674: 0: ACE 4675: *** Failers 4676: No match 4677: ABC 4678: No match 4679: ABD 4680: No match 4681: 4682: /a[b-d]/i 4683: AAC 4684: 0: AC 4685: 4686: /a[-b]/i 4687: A- 4688: 0: A- 4689: 4690: /a[b-]/i 4691: A- 4692: 0: A- 4693: 4694: /a]/i 4695: A] 4696: 0: A] 4697: 4698: /a[]]b/i 4699: A]B 4700: 0: A]B 4701: 4702: /a[^bc]d/i 4703: AED 4704: 0: AED 4705: 4706: /a[^-b]c/i 4707: ADC 4708: 0: ADC 4709: *** Failers 4710: No match 4711: ABD 4712: No match 4713: A-C 4714: No match 4715: 4716: /a[^]b]c/i 4717: ADC 4718: 0: ADC 4719: 4720: /ab|cd/i 4721: ABC 4722: 0: AB 4723: ABCD 4724: 0: AB 4725: 4726: /()ef/i 4727: DEF 4728: 0: EF 4729: 1: 4730: 4731: /$b/i 4732: *** Failers 4733: No match 4734: A]C 4735: No match 4736: B 4737: No match 4738: 4739: /a\(b/i 4740: A(B 4741: 0: A(B 4742: 4743: /a\(*b/i 4744: AB 4745: 0: AB 4746: A((B 4747: 0: A((B 4748: 4749: /a\\b/i 4750: A\B 4751: No match 4752: 4753: /((a))/i 4754: ABC 4755: 0: A 4756: 1: A 4757: 2: A 4758: 4759: /(a)b(c)/i 4760: ABC 4761: 0: ABC 4762: 1: A 4763: 2: C 4764: 4765: /a+b+c/i 4766: AABBABC 4767: 0: ABC 4768: 4769: /a{1,}b{1,}c/i 4770: AABBABC 4771: 0: ABC 4772: 4773: /a.+?c/i 4774: ABCABC 4775: 0: ABC 4776: 4777: /a.*?c/i 4778: ABCABC 4779: 0: ABC 4780: 4781: /a.{0,5}?c/i 4782: ABCABC 4783: 0: ABC 4784: 4785: /(a+|b)*/i 4786: AB 4787: 0: AB 4788: 1: B 4789: 4790: /(a+|b){0,}/i 4791: AB 4792: 0: AB 4793: 1: B 4794: 4795: /(a+|b)+/i 4796: AB 4797: 0: AB 4798: 1: B 4799: 4800: /(a+|b){1,}/i 4801: AB 4802: 0: AB 4803: 1: B 4804: 4805: /(a+|b)?/i 4806: AB 4807: 0: A 4808: 1: A 4809: 4810: /(a+|b){0,1}/i 4811: AB 4812: 0: A 4813: 1: A 4814: 4815: /(a+|b){0,1}?/i 4816: AB 4817: 0: 4818: 4819: /[^ab]*/i 4820: CDE 4821: 0: CDE 4822: 4823: /abc/i 4824: 4825: /a*/i 4826: 4827: 4828: /([abc])*d/i 4829: ABBBCD 4830: 0: ABBBCD 4831: 1: C 4832: 4833: /([abc])*bcd/i 4834: ABCD 4835: 0: ABCD 4836: 1: A 4837: 4838: /a|b|c|d|e/i 4839: E 4840: 0: E 4841: 4842: /(a|b|c|d|e)f/i 4843: EF 4844: 0: EF 4845: 1: E 4846: 4847: /abcd*efg/i 4848: ABCDEFG 4849: 0: ABCDEFG 4850: 4851: /ab*/i 4852: XABYABBBZ 4853: 0: AB 4854: XAYABBBZ 4855: 0: A 4856: 4857: /(ab|cd)e/i 4858: ABCDE 4859: 0: CDE 4860: 1: CD 4861: 4862: /[abhgefdc]ij/i 4863: HIJ 4864: 0: HIJ 4865: 4866: /^(ab|cd)e/i 4867: ABCDE 4868: No match 4869: 4870: /(abc|)ef/i 4871: ABCDEF 4872: 0: EF 4873: 1: 4874: 4875: /(a|b)c*d/i 4876: ABCD 4877: 0: BCD 4878: 1: B 4879: 4880: /(ab|ab*)bc/i 4881: ABC 4882: 0: ABC 4883: 1: A 4884: 4885: /a([bc]*)c*/i 4886: ABC 4887: 0: ABC 4888: 1: BC 4889: 4890: /a([bc]*)(c*d)/i 4891: ABCD 4892: 0: ABCD 4893: 1: BC 4894: 2: D 4895: 4896: /a([bc]+)(c*d)/i 4897: ABCD 4898: 0: ABCD 4899: 1: BC 4900: 2: D 4901: 4902: /a([bc]*)(c+d)/i 4903: ABCD 4904: 0: ABCD 4905: 1: B 4906: 2: CD 4907: 4908: /a[bcd]*dcdcde/i 4909: ADCDCDE 4910: 0: ADCDCDE 4911: 4912: /a[bcd]+dcdcde/i 4913: 4914: /(ab|a)b*c/i 4915: ABC 4916: 0: ABC 4917: 1: AB 4918: 4919: /((a)(b)c)(d)/i 4920: ABCD 4921: 0: ABCD 4922: 1: ABC 4923: 2: A 4924: 3: B 4925: 4: D 4926: 4927: /[a-zA-Z_][a-zA-Z0-9_]*/i 4928: ALPHA 4929: 0: ALPHA 4930: 4931: /^a(bc+|b[eh])g|.h$/i 4932: ABH 4933: 0: BH 4934: 4935: /(bc+d$|ef*g.|h?i(j|k))/i 4936: EFFGZ 4937: 0: EFFGZ 4938: 1: EFFGZ 4939: IJ 4940: 0: IJ 4941: 1: IJ 4942: 2: J 4943: REFFGZ 4944: 0: EFFGZ 4945: 1: EFFGZ 4946: *** Failers 4947: No match 4948: ADCDCDE 4949: No match 4950: EFFG 4951: No match 4952: BCDD 4953: No match 4954: 4955: /((((((((((a))))))))))/i 4956: A 4957: 0: A 4958: 1: A 4959: 2: A 4960: 3: A 4961: 4: A 4962: 5: A 4963: 6: A 4964: 7: A 4965: 8: A 4966: 9: A 4967: 10: A 4968: 4969: /((((((((((a))))))))))\10/i 4970: AA 4971: 0: AA 4972: 1: A 4973: 2: A 4974: 3: A 4975: 4: A 4976: 5: A 4977: 6: A 4978: 7: A 4979: 8: A 4980: 9: A 4981: 10: A 4982: 4983: /(((((((((a)))))))))/i 4984: A 4985: 0: A 4986: 1: A 4987: 2: A 4988: 3: A 4989: 4: A 4990: 5: A 4991: 6: A 4992: 7: A 4993: 8: A 4994: 9: A 4995: 4996: /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i 4997: A 4998: 0: A 4999: 1: A 5000: 5001: /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i 5002: C 5003: 0: C 5004: 1: C 5005: 5006: /multiple words of text/i 5007: *** Failers 5008: No match 5009: AA 5010: No match 5011: UH-UH 5012: No match 5013: 5014: /multiple words/i 5015: MULTIPLE WORDS, YEAH 5016: 0: MULTIPLE WORDS 5017: 5018: /(.*)c(.*)/i 5019: ABCDE 5020: 0: ABCDE 5021: 1: AB 5022: 2: DE 5023: 5024: /\((.*), (.*)\)/i 5025: (A, B) 5026: 0: (A, B) 5027: 1: A 5028: 2: B 5029: 5030: /[k]/i 5031: 5032: /abcd/i 5033: ABCD 5034: 0: ABCD 5035: 5036: /a(bc)d/i 5037: ABCD 5038: 0: ABCD 5039: 1: BC 5040: 5041: /a[-]?c/i 5042: AC 5043: 0: AC 5044: 5045: /(abc)\1/i 5046: ABCABC 5047: 0: ABCABC 5048: 1: ABC 5049: 5050: /([a-c]*)\1/i 5051: ABCABC 5052: 0: ABCABC 5053: 1: ABC 5054: 5055: /a(?!b)./ 5056: abad 5057: 0: ad 5058: 5059: /a(?=d)./ 5060: abad 5061: 0: ad 5062: 5063: /a(?=c|d)./ 5064: abad 5065: 0: ad 5066: 5067: /a(?:b|c|d)(.)/ 5068: ace 5069: 0: ace 5070: 1: e 5071: 5072: /a(?:b|c|d)*(.)/ 5073: ace 5074: 0: ace 5075: 1: e 5076: 5077: /a(?:b|c|d)+?(.)/ 5078: ace 5079: 0: ace 5080: 1: e 5081: acdbcdbe 5082: 0: acd 5083: 1: d 5084: 5085: /a(?:b|c|d)+(.)/ 5086: acdbcdbe 5087: 0: acdbcdbe 5088: 1: e 5089: 5090: /a(?:b|c|d){2}(.)/ 5091: acdbcdbe 5092: 0: acdb 5093: 1: b 5094: 5095: /a(?:b|c|d){4,5}(.)/ 5096: acdbcdbe 5097: 0: acdbcdb 5098: 1: b 5099: 5100: /a(?:b|c|d){4,5}?(.)/ 5101: acdbcdbe 5102: 0: acdbcd 5103: 1: d 5104: 5105: /((foo)|(bar))*/ 5106: foobar 5107: 0: foobar 5108: 1: bar 5109: 2: foo 5110: 3: bar 5111: 5112: /a(?:b|c|d){6,7}(.)/ 5113: acdbcdbe 5114: 0: acdbcdbe 5115: 1: e 5116: 5117: /a(?:b|c|d){6,7}?(.)/ 5118: acdbcdbe 5119: 0: acdbcdbe 5120: 1: e 5121: 5122: /a(?:b|c|d){5,6}(.)/ 5123: acdbcdbe 5124: 0: acdbcdbe 5125: 1: e 5126: 5127: /a(?:b|c|d){5,6}?(.)/ 5128: acdbcdbe 5129: 0: acdbcdb 5130: 1: b 5131: 5132: /a(?:b|c|d){5,7}(.)/ 5133: acdbcdbe 5134: 0: acdbcdbe 5135: 1: e 5136: 5137: /a(?:b|c|d){5,7}?(.)/ 5138: acdbcdbe 5139: 0: acdbcdb 5140: 1: b 5141: 5142: /a(?:b|(c|e){1,2}?|d)+?(.)/ 5143: ace 5144: 0: ace 5145: 1: c 5146: 2: e 5147: 5148: /^(.+)?B/ 5149: AB 5150: 0: AB 5151: 1: A 5152: 5153: /^([^a-z])|(\^)$/ 5154: . 5155: 0: . 5156: 1: . 5157: 5158: /^[<>]&/ 5159: <&OUT 5160: 0: <& 5161: 5162: /^(a\1?){4}$/ 5163: aaaaaaaaaa 5164: 0: aaaaaaaaaa 5165: 1: aaaa 5166: *** Failers 5167: No match 5168: AB 5169: No match 5170: aaaaaaaaa 5171: No match 5172: aaaaaaaaaaa 5173: No match 5174: 5175: /^(a(?(1)\1)){4}$/ 5176: aaaaaaaaaa 5177: 0: aaaaaaaaaa 5178: 1: aaaa 5179: *** Failers 5180: No match 5181: aaaaaaaaa 5182: No match 5183: aaaaaaaaaaa 5184: No match 5185: 5186: /(?:(f)(o)(o)|(b)(a)(r))*/ 5187: foobar 5188: 0: foobar 5189: 1: f 5190: 2: o 5191: 3: o 5192: 4: b 5193: 5: a 5194: 6: r 5195: 5196: /(?<=a)b/ 5197: ab 5198: 0: b 5199: *** Failers 5200: No match 5201: cb 5202: No match 5203: b 5204: No match 5205: 5206: /(?<!c)b/ 5207: ab 5208: 0: b 5209: b 5210: 0: b 5211: b 5212: 0: b 5213: 5214: /(?:..)*a/ 5215: aba 5216: 0: aba 5217: 5218: /(?:..)*?a/ 5219: aba 5220: 0: a 5221: 5222: /^(?:b|a(?=(.)))*\1/ 5223: abc 5224: 0: ab 5225: 1: b 5226: 5227: /^(){3,5}/ 5228: abc 5229: 0: 5230: 1: 5231: 5232: /^(a+)*ax/ 5233: aax 5234: 0: aax 5235: 1: a 5236: 5237: /^((a|b)+)*ax/ 5238: aax 5239: 0: aax 5240: 1: a 5241: 2: a 5242: 5243: /^((a|bc)+)*ax/ 5244: aax 5245: 0: aax 5246: 1: a 5247: 2: a 5248: 5249: /(a|x)*ab/ 5250: cab 5251: 0: ab 5252: 5253: /(a)*ab/ 5254: cab 5255: 0: ab 5256: 5257: /(?:(?i)a)b/ 5258: ab 5259: 0: ab 5260: 5261: /((?i)a)b/ 5262: ab 5263: 0: ab 5264: 1: a 5265: 5266: /(?:(?i)a)b/ 5267: Ab 5268: 0: Ab 5269: 5270: /((?i)a)b/ 5271: Ab 5272: 0: Ab 5273: 1: A 5274: 5275: /(?:(?i)a)b/ 5276: *** Failers 5277: No match 5278: cb 5279: No match 5280: aB 5281: No match 5282: 5283: /((?i)a)b/ 5284: 5285: /(?i:a)b/ 5286: ab 5287: 0: ab 5288: 5289: /((?i:a))b/ 5290: ab 5291: 0: ab 5292: 1: a 5293: 5294: /(?i:a)b/ 5295: Ab 5296: 0: Ab 5297: 5298: /((?i:a))b/ 5299: Ab 5300: 0: Ab 5301: 1: A 5302: 5303: /(?i:a)b/ 5304: *** Failers 5305: No match 5306: aB 5307: No match 5308: aB 5309: No match 5310: 5311: /((?i:a))b/ 5312: 5313: /(?:(?-i)a)b/i 5314: ab 5315: 0: ab 5316: 5317: /((?-i)a)b/i 5318: ab 5319: 0: ab 5320: 1: a 5321: 5322: /(?:(?-i)a)b/i 5323: aB 5324: 0: aB 5325: 5326: /((?-i)a)b/i 5327: aB 5328: 0: aB 5329: 1: a 5330: 5331: /(?:(?-i)a)b/i 5332: *** Failers 5333: No match 5334: aB 5335: 0: aB 5336: Ab 5337: No match 5338: 5339: /((?-i)a)b/i 5340: 5341: /(?:(?-i)a)b/i 5342: aB 5343: 0: aB 5344: 5345: /((?-i)a)b/i 5346: aB 5347: 0: aB 5348: 1: a 5349: 5350: /(?:(?-i)a)b/i 5351: *** Failers 5352: No match 5353: Ab 5354: No match 5355: AB 5356: No match 5357: 5358: /((?-i)a)b/i 5359: 5360: /(?-i:a)b/i 5361: ab 5362: 0: ab 5363: 5364: /((?-i:a))b/i 5365: ab 5366: 0: ab 5367: 1: a 5368: 5369: /(?-i:a)b/i 5370: aB 5371: 0: aB 5372: 5373: /((?-i:a))b/i 5374: aB 5375: 0: aB 5376: 1: a 5377: 5378: /(?-i:a)b/i 5379: *** Failers 5380: No match 5381: AB 5382: No match 5383: Ab 5384: No match 5385: 5386: /((?-i:a))b/i 5387: 5388: /(?-i:a)b/i 5389: aB 5390: 0: aB 5391: 5392: /((?-i:a))b/i 5393: aB 5394: 0: aB 5395: 1: a 5396: 5397: /(?-i:a)b/i 5398: *** Failers 5399: No match 5400: Ab 5401: No match 5402: AB 5403: No match 5404: 5405: /((?-i:a))b/i 5406: 5407: /((?-i:a.))b/i 5408: *** Failers 5409: No match 5410: AB 5411: No match 5412: a\nB 5413: No match 5414: 5415: /((?s-i:a.))b/i 5416: a\nB 5417: 0: a\x0aB 5418: 1: a\x0a 5419: 5420: /(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/ 5421: cabbbb 5422: 0: cabbbb 5423: 5424: /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/ 5425: caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 5426: 0: caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 5427: 5428: /(ab)\d\1/i 5429: Ab4ab 5430: 0: Ab4ab 5431: 1: Ab 5432: ab4Ab 5433: 0: ab4Ab 5434: 1: ab 5435: 5436: /foo\w*\d{4}baz/ 5437: foobar1234baz 5438: 0: foobar1234baz 5439: 5440: /x(~~)*(?:(?:F)?)?/ 5441: x~~ 5442: 0: x~~ 5443: 1: ~~ 5444: 5445: /^a(?#xxx){3}c/ 5446: aaac 5447: 0: aaac 5448: 5449: /^a (?#xxx) (?#yyy) {3}c/x 5450: aaac 5451: 0: aaac 5452: 5453: /(?<![cd])b/ 5454: *** Failers 5455: No match 5456: B\nB 5457: No match 5458: dbcb 5459: No match 5460: 5461: /(?<![cd])[ab]/ 5462: dbaacb 5463: 0: a 5464: 5465: /(?<!(c|d))b/ 5466: 5467: /(?<!(c|d))[ab]/ 5468: dbaacb 5469: 0: a 5470: 5471: /(?<!cd)[ab]/ 5472: cdaccb 5473: 0: b 5474: 5475: /^(?:a?b?)*$/ 5476: \ 5477: 0: 5478: a 5479: 0: a 5480: ab 5481: 0: ab 5482: aaa 5483: 0: aaa 5484: *** Failers 5485: No match 5486: dbcb 5487: No match 5488: a-- 5489: No match 5490: aa-- 5491: No match 5492: 5493: /((?s)^a(.))((?m)^b$)/ 5494: a\nb\nc\n 5495: 0: a\x0ab 5496: 1: a\x0a 5497: 2: \x0a 5498: 3: b 5499: 5500: /((?m)^b$)/ 5501: a\nb\nc\n 5502: 0: b 5503: 1: b 5504: 5505: /(?m)^b/ 5506: a\nb\n 5507: 0: b 5508: 5509: /(?m)^(b)/ 5510: a\nb\n 5511: 0: b 5512: 1: b 5513: 5514: /((?m)^b)/ 5515: a\nb\n 5516: 0: b 5517: 1: b 5518: 5519: /\n((?m)^b)/ 5520: a\nb\n 5521: 0: \x0ab 5522: 1: b 5523: 5524: /((?s).)c(?!.)/ 5525: a\nb\nc\n 5526: 0: \x0ac 5527: 1: \x0a 5528: a\nb\nc\n 5529: 0: \x0ac 5530: 1: \x0a 5531: 5532: /((?s)b.)c(?!.)/ 5533: a\nb\nc\n 5534: 0: b\x0ac 5535: 1: b\x0a 5536: a\nb\nc\n 5537: 0: b\x0ac 5538: 1: b\x0a 5539: 5540: /^b/ 5541: 5542: /()^b/ 5543: *** Failers 5544: No match 5545: a\nb\nc\n 5546: No match 5547: a\nb\nc\n 5548: No match 5549: 5550: /((?m)^b)/ 5551: a\nb\nc\n 5552: 0: b 5553: 1: b 5554: 5555: /(x)?(?(1)a|b)/ 5556: *** Failers 5557: No match 5558: a 5559: No match 5560: a 5561: No match 5562: 5563: /(x)?(?(1)b|a)/ 5564: a 5565: 0: a 5566: 5567: /()?(?(1)b|a)/ 5568: a 5569: 0: a 5570: 5571: /()(?(1)b|a)/ 5572: 5573: /()?(?(1)a|b)/ 5574: a 5575: 0: a 5576: 1: 5577: 5578: /^(\()?blah(?(1)(\)))$/ 5579: (blah) 5580: 0: (blah) 5581: 1: ( 5582: 2: ) 5583: blah 5584: 0: blah 5585: *** Failers 5586: No match 5587: a 5588: No match 5589: blah) 5590: No match 5591: (blah 5592: No match 5593: 5594: /^(\(+)?blah(?(1)(\)))$/ 5595: (blah) 5596: 0: (blah) 5597: 1: ( 5598: 2: ) 5599: blah 5600: 0: blah 5601: *** Failers 5602: No match 5603: blah) 5604: No match 5605: (blah 5606: No match 5607: 5608: /(?(?!a)a|b)/ 5609: 5610: /(?(?!a)b|a)/ 5611: a 5612: 0: a 5613: 5614: /(?(?=a)b|a)/ 5615: *** Failers 5616: No match 5617: a 5618: No match 5619: a 5620: No match 5621: 5622: /(?(?=a)a|b)/ 5623: a 5624: 0: a 5625: 5626: /(?=(a+?))(\1ab)/ 5627: aaab 5628: 0: aab 5629: 1: a 5630: 2: aab 5631: 5632: /^(?=(a+?))\1ab/ 5633: 5634: /(\w+:)+/ 5635: one: 5636: 0: one: 5637: 1: one: 5638: 5639: /$(?<=^(a))/ 5640: a 5641: 0: 5642: 1: a 5643: 5644: /(?=(a+?))(\1ab)/ 5645: aaab 5646: 0: aab 5647: 1: a 5648: 2: aab 5649: 5650: /^(?=(a+?))\1ab/ 5651: *** Failers 5652: No match 5653: aaab 5654: No match 5655: aaab 5656: No match 5657: 5658: /([\w:]+::)?(\w+)$/ 5659: abcd 5660: 0: abcd 5661: 1: <unset> 5662: 2: abcd 5663: xy:z:::abcd 5664: 0: xy:z:::abcd 5665: 1: xy:z::: 5666: 2: abcd 5667: 5668: /^[^bcd]*(c+)/ 5669: aexycd 5670: 0: aexyc 5671: 1: c 5672: 5673: /(a*)b+/ 5674: caab 5675: 0: aab 5676: 1: aa 5677: 5678: /([\w:]+::)?(\w+)$/ 5679: abcd 5680: 0: abcd 5681: 1: <unset> 5682: 2: abcd 5683: xy:z:::abcd 5684: 0: xy:z:::abcd 5685: 1: xy:z::: 5686: 2: abcd 5687: *** Failers 5688: 0: Failers 5689: 1: <unset> 5690: 2: Failers 5691: abcd: 5692: No match 5693: abcd: 5694: No match 5695: 5696: /^[^bcd]*(c+)/ 5697: aexycd 5698: 0: aexyc 5699: 1: c 5700: 5701: /(>a+)ab/ 5702: 5703: /(?>a+)b/ 5704: aaab 5705: 0: aaab 5706: 5707: /([[:]+)/ 5708: a:[b]: 5709: 0: :[ 5710: 1: :[ 5711: 5712: /([[=]+)/ 5713: a=[b]= 5714: 0: =[ 5715: 1: =[ 5716: 5717: /([[.]+)/ 5718: a.[b]. 5719: 0: .[ 5720: 1: .[ 5721: 5722: /((?>a+)b)/ 5723: aaab 5724: 0: aaab 5725: 1: aaab 5726: 5727: /(?>(a+))b/ 5728: aaab 5729: 0: aaab 5730: 1: aaa 5731: 5732: /((?>[^()]+)|\([^()]*\))+/ 5733: ((abc(ade)ufh()()x 5734: 0: abc(ade)ufh()()x 5735: 1: x 5736: 5737: /a\Z/ 5738: *** Failers 5739: No match 5740: aaab 5741: No match 5742: a\nb\n 5743: No match 5744: 5745: /b\Z/ 5746: a\nb\n 5747: 0: b 5748: 5749: /b\z/ 5750: 5751: /b\Z/ 5752: a\nb 5753: 0: b 5754: 5755: /b\z/ 5756: a\nb 5757: 0: b 5758: *** Failers 5759: No match 5760: 5761: /^(?>(?(1)\.|())[^\W_](?>[a-z0-9-]*[^\W_])?)+$/ 5762: a 5763: 0: a 5764: 1: 5765: abc 5766: 0: abc 5767: 1: 5768: a-b 5769: 0: a-b 5770: 1: 5771: 0-9 5772: 0: 0-9 5773: 1: 5774: a.b 5775: 0: a.b 5776: 1: 5777: 5.6.7 5778: 0: 5.6.7 5779: 1: 5780: the.quick.brown.fox 5781: 0: the.quick.brown.fox 5782: 1: 5783: a100.b200.300c 5784: 0: a100.b200.300c 5785: 1: 5786: 12-ab.1245 5787: 0: 12-ab.1245 5788: 1: 5789: *** Failers 5790: No match 5791: \ 5792: No match 5793: .a 5794: No match 5795: -a 5796: No match 5797: a- 5798: No match 5799: a. 5800: No match 5801: a_b 5802: No match 5803: a.- 5804: No match 5805: a.. 5806: No match 5807: ab..bc 5808: No match 5809: the.quick.brown.fox- 5810: No match 5811: the.quick.brown.fox. 5812: No match 5813: the.quick.brown.fox_ 5814: No match 5815: the.quick.brown.fox+ 5816: No match 5817: 5818: /(?>.*)(?<=(abcd|wxyz))/ 5819: alphabetabcd 5820: 0: alphabetabcd 5821: 1: abcd 5822: endingwxyz 5823: 0: endingwxyz 5824: 1: wxyz 5825: *** Failers 5826: No match 5827: a rather long string that doesn't end with one of them 5828: No match 5829: 5830: /word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/ 5831: word cat dog elephant mussel cow horse canary baboon snake shark otherword 5832: 0: word cat dog elephant mussel cow horse canary baboon snake shark otherword 5833: word cat dog elephant mussel cow horse canary baboon snake shark 5834: No match 5835: 5836: /word (?>[a-zA-Z0-9]+ ){0,30}otherword/ 5837: word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope 5838: No match 5839: 5840: /(?<=\d{3}(?!999))foo/ 5841: 999foo 5842: 0: foo 5843: 123999foo 5844: 0: foo 5845: *** Failers 5846: No match 5847: 123abcfoo 5848: No match 5849: 5850: /(?<=(?!...999)\d{3})foo/ 5851: 999foo 5852: 0: foo 5853: 123999foo 5854: 0: foo 5855: *** Failers 5856: No match 5857: 123abcfoo 5858: No match 5859: 5860: /(?<=\d{3}(?!999)...)foo/ 5861: 123abcfoo 5862: 0: foo 5863: 123456foo 5864: 0: foo 5865: *** Failers 5866: No match 5867: 123999foo 5868: No match 5869: 5870: /(?<=\d{3}...)(?<!999)foo/ 5871: 123abcfoo 5872: 0: foo 5873: 123456foo 5874: 0: foo 5875: *** Failers 5876: No match 5877: 123999foo 5878: No match 5879: 5880: /<a[\s]+href[\s]*=[\s]* # find <a href= 5881: ([\"\'])? # find single or double quote 5882: (?(1) (.*?)\1 | ([^\s]+)) # if quote found, match up to next matching 5883: # quote, otherwise match up to next space 5884: /isx 5885: <a href=abcd xyz 5886: 0: <a href=abcd 5887: 1: <unset> 5888: 2: <unset> 5889: 3: abcd 5890: <a href=\"abcd xyz pqr\" cats 5891: 0: <a href="abcd xyz pqr" 5892: 1: " 5893: 2: abcd xyz pqr 5894: <a href=\'abcd xyz pqr\' cats 5895: 0: <a href='abcd xyz pqr' 5896: 1: ' 5897: 2: abcd xyz pqr 5898: 5899: /<a\s+href\s*=\s* # find <a href= 5900: (["'])? # find single or double quote 5901: (?(1) (.*?)\1 | (\S+)) # if quote found, match up to next matching 5902: # quote, otherwise match up to next space 5903: /isx 5904: <a href=abcd xyz 5905: 0: <a href=abcd 5906: 1: <unset> 5907: 2: <unset> 5908: 3: abcd 5909: <a href=\"abcd xyz pqr\" cats 5910: 0: <a href="abcd xyz pqr" 5911: 1: " 5912: 2: abcd xyz pqr 5913: <a href = \'abcd xyz pqr\' cats 5914: 0: <a href = 'abcd xyz pqr' 5915: 1: ' 5916: 2: abcd xyz pqr 5917: 5918: /<a\s+href(?>\s*)=(?>\s*) # find <a href= 5919: (["'])? # find single or double quote 5920: (?(1) (.*?)\1 | (\S+)) # if quote found, match up to next matching 5921: # quote, otherwise match up to next space 5922: /isx 5923: <a href=abcd xyz 5924: 0: <a href=abcd 5925: 1: <unset> 5926: 2: <unset> 5927: 3: abcd 5928: <a href=\"abcd xyz pqr\" cats 5929: 0: <a href="abcd xyz pqr" 5930: 1: " 5931: 2: abcd xyz pqr 5932: <a href = \'abcd xyz pqr\' cats 5933: 0: <a href = 'abcd xyz pqr' 5934: 1: ' 5935: 2: abcd xyz pqr 5936: 5937: /((Z)+|A)*/ 5938: ZABCDEFG 5939: 0: ZA 5940: 1: A 5941: 2: Z 5942: 5943: /(Z()|A)*/ 5944: ZABCDEFG 5945: 0: ZA 5946: 1: A 5947: 2: 5948: 5949: /(Z(())|A)*/ 5950: ZABCDEFG 5951: 0: ZA 5952: 1: A 5953: 2: 5954: 3: 5955: 5956: /((?>Z)+|A)*/ 5957: ZABCDEFG 5958: 0: ZA 5959: 1: A 5960: 5961: /((?>)+|A)*/ 5962: ZABCDEFG 5963: 0: 5964: 1: 5965: 5966: /a*/g 5967: abbab 5968: 0: a 5969: 0: 5970: 0: 5971: 0: a 5972: 0: 5973: 0: 5974: 5975: /^[a-\d]/ 5976: abcde 5977: 0: a 5978: -things 5979: 0: - 5980: 0digit 5981: 0: 0 5982: *** Failers 5983: No match 5984: bcdef 5985: No match 5986: 5987: /^[\d-a]/ 5988: abcde 5989: 0: a 5990: -things 5991: 0: - 5992: 0digit 5993: 0: 0 5994: *** Failers 5995: No match 5996: bcdef 5997: No match 5998: 5999: /[[:space:]]+/ 6000: > \x09\x0a\x0c\x0d\x0b< 6001: 0: \x09\x0a\x0c\x0d\x0b 6002: 6003: /[[:blank:]]+/ 6004: > \x09\x0a\x0c\x0d\x0b< 6005: 0: \x09 6006: 6007: /[\s]+/ 6008: > \x09\x0a\x0c\x0d\x0b< 6009: 0: \x09\x0a\x0c\x0d 6010: 6011: /\s+/ 6012: > \x09\x0a\x0c\x0d\x0b< 6013: 0: \x09\x0a\x0c\x0d 6014: 6015: /ab/x 6016: ab 6017: No match 6018: 6019: /(?!\A)x/m 6020: a\nxb\n 6021: 0: x 6022: 6023: /(?!^)x/m 6024: a\nxb\n 6025: No match 6026: 6027: /abc\Qabc\Eabc/ 6028: abcabcabc 6029: 0: abcabcabc 6030: 6031: /abc\Q(*+|\Eabc/ 6032: abc(*+|abc 6033: 0: abc(*+|abc 6034: 6035: / abc\Q abc\Eabc/x 6036: abc abcabc 6037: 0: abc abcabc 6038: *** Failers 6039: No match 6040: abcabcabc 6041: No match 6042: 6043: /abc#comment 6044: \Q#not comment 6045: literal\E/x 6046: abc#not comment\n literal 6047: 0: abc#not comment\x0a literal 6048: 6049: /abc#comment 6050: \Q#not comment 6051: literal/x 6052: abc#not comment\n literal 6053: 0: abc#not comment\x0a literal 6054: 6055: /abc#comment 6056: \Q#not comment 6057: literal\E #more comment 6058: /x 6059: abc#not comment\n literal 6060: 0: abc#not comment\x0a literal 6061: 6062: /abc#comment 6063: \Q#not comment 6064: literal\E #more comment/x 6065: abc#not comment\n literal 6066: 0: abc#not comment\x0a literal 6067: 6068: /\Qabc\$xyz\E/ 6069: abc\\\$xyz 6070: 0: abc\$xyz 6071: 6072: /\Qabc\E\$\Qxyz\E/ 6073: abc\$xyz 6074: 0: abc$xyz 6075: 6076: /\Gabc/ 6077: abc 6078: 0: abc 6079: *** Failers 6080: No match 6081: xyzabc 6082: No match 6083: 6084: /\Gabc./g 6085: abc1abc2xyzabc3 6086: 0: abc1 6087: 0: abc2 6088: 6089: /abc./g 6090: abc1abc2xyzabc3 6091: 0: abc1 6092: 0: abc2 6093: 0: abc3 6094: 6095: /a(?x: b c )d/ 6096: XabcdY 6097: 0: abcd 6098: *** Failers 6099: No match 6100: Xa b c d Y 6101: No match 6102: 6103: /((?x)x y z | a b c)/ 6104: XabcY 6105: 0: abc 6106: 1: abc 6107: AxyzB 6108: 0: xyz 6109: 1: xyz 6110: 6111: /(?i)AB(?-i)C/ 6112: XabCY 6113: 0: abC 6114: *** Failers 6115: No match 6116: XabcY 6117: No match 6118: 6119: /((?i)AB(?-i)C|D)E/ 6120: abCE 6121: 0: abCE 6122: 1: abC 6123: DE 6124: 0: DE 6125: 1: D 6126: *** Failers 6127: No match 6128: abcE 6129: No match 6130: abCe 6131: No match 6132: dE 6133: No match 6134: De 6135: No match 6136: 6137: /(.*)\d+\1/ 6138: abc123abc 6139: 0: abc123abc 6140: 1: abc 6141: abc123bc 6142: 0: bc123bc 6143: 1: bc 6144: 6145: /(.*)\d+\1/s 6146: abc123abc 6147: 0: abc123abc 6148: 1: abc 6149: abc123bc 6150: 0: bc123bc 6151: 1: bc 6152: 6153: /((.*))\d+\1/ 6154: abc123abc 6155: 0: abc123abc 6156: 1: abc 6157: 2: abc 6158: abc123bc 6159: 0: bc123bc 6160: 1: bc 6161: 2: bc 6162: 6163: /-- This tests for an IPv6 address in the form where it can have up to --/ 6164: /-- eight components, one and only one of which is empty. This must be --/ 6165: No match 6166: /-- an internal component. --/ 6167: No match 6168: 6169: /^(?!:) # colon disallowed at start 6170: (?: # start of item 6171: (?: [0-9a-f]{1,4} | # 1-4 hex digits or 6172: (?(1)0 | () ) ) # if null previously matched, fail; else null 6173: : # followed by colon 6174: ){1,7} # end item; 1-7 of them required 6175: [0-9a-f]{1,4} $ # final hex number at end of string 6176: (?(1)|.) # check that there was an empty component 6177: /xi 6178: a123::a123 6179: 0: a123::a123 6180: 1: 6181: a123:b342::abcd 6182: 0: a123:b342::abcd 6183: 1: 6184: a123:b342::324e:abcd 6185: 0: a123:b342::324e:abcd 6186: 1: 6187: a123:ddde:b342::324e:abcd 6188: 0: a123:ddde:b342::324e:abcd 6189: 1: 6190: a123:ddde:b342::324e:dcba:abcd 6191: 0: a123:ddde:b342::324e:dcba:abcd 6192: 1: 6193: a123:ddde:9999:b342::324e:dcba:abcd 6194: 0: a123:ddde:9999:b342::324e:dcba:abcd 6195: 1: 6196: *** Failers 6197: No match 6198: 1:2:3:4:5:6:7:8 6199: No match 6200: a123:bce:ddde:9999:b342::324e:dcba:abcd 6201: No match 6202: a123::9999:b342::324e:dcba:abcd 6203: No match 6204: abcde:2:3:4:5:6:7:8 6205: No match 6206: ::1 6207: No match 6208: abcd:fee0:123:: 6209: No match 6210: :1 6211: No match 6212: 1: 6213: No match 6214: 6215: /[z\Qa-d]\E]/ 6216: z 6217: 0: z 6218: a 6219: 0: a 6220: - 6221: 0: - 6222: d 6223: 0: d 6224: ] 6225: 0: ] 6226: *** Failers 6227: 0: a 6228: b 6229: No match 6230: 6231: /[\z\C]/ 6232: z 6233: 0: z 6234: C 6235: 0: C 6236: 6237: /\M/ 6238: M 6239: 0: M 6240: 6241: /(a+)*b/ 6242: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6243: No match 6244: 6245: /(?i)reg(?:ul(?:[a]|ae)r|ex)/ 6246: REGular 6247: 0: REGular 6248: regulaer 6249: 0: regulaer 6250: Regex 6251: 0: Regex 6252: regulr 6253: 0: regul\xe4r 6254: 6255: /[--]+/ 6256: 6257: 0: \xc5\xe6\xe5\xe4\xe0 6258: 6259: 0: \xc5\xe6\xe5\xe4\xff 6260: 6261: 0: \xc5\xe6\xe5\xe4\xc0 6262: 6263: 0: \xc5\xe6\xe5\xe4\xdf 6264: 6265: /(?<=Z)X./ 6266: \x84XAZXB 6267: 0: XB 6268: 6269: /ab cd (?x) de fg/ 6270: ab cd defg 6271: 0: ab cd defg 6272: 6273: /ab cd(?x) de fg/ 6274: ab cddefg 6275: 0: ab cddefg 6276: ** Failers 6277: No match 6278: abcddefg 6279: No match 6280: 6281: /(?<![^f]oo)(bar)/ 6282: foobarX 6283: 0: bar 6284: 1: bar 6285: ** Failers 6286: No match 6287: boobarX 6288: No match 6289: 6290: /(?<![^f])X/ 6291: offX 6292: 0: X 6293: ** Failers 6294: No match 6295: onyX 6296: No match 6297: 6298: /(?<=[^f])X/ 6299: onyX 6300: 0: X 6301: ** Failers 6302: No match 6303: offX 6304: No match 6305: 6306: /^/mg 6307: a\nb\nc\n 6308: 0: 6309: 0: 6310: 0: 6311: \ 6312: 0: 6313: 6314: /(?<=C\n)^/mg 6315: A\nC\nC\n 6316: 0: 6317: 6318: /(?:(?(1)a|b)(X))+/ 6319: bXaX 6320: 0: bXaX 6321: 1: X 6322: 6323: /(?:(?(1)\1a|b)(X|Y))+/ 6324: bXXaYYaY 6325: 0: bXXaYYaY 6326: 1: Y 6327: bXYaXXaX 6328: 0: bX 6329: 1: X 6330: 6331: /()()()()()()()()()(?:(?(10)\10a|b)(X|Y))+/ 6332: bXXaYYaY 6333: 0: bX 6334: 1: 6335: 2: 6336: 3: 6337: 4: 6338: 5: 6339: 6: 6340: 7: 6341: 8: 6342: 9: 6343: 10: X 6344: 6345: /[[,abc,]+]/ 6346: abc] 6347: 0: abc] 6348: a,b] 6349: 0: a,b] 6350: [a,b,c] 6351: 0: [a,b,c] 6352: 6353: /(?-x: )/x 6354: A\x20B 6355: 0: 6356: 6357: "(?x)(?-x: \s*#\s*)" 6358: A # B 6359: 0: # 6360: ** Failers 6361: No match 6362: # 6363: No match 6364: 6365: "(?x-is)(?:(?-ixs) \s*#\s*) include" 6366: A #include 6367: 0: #include 6368: ** Failers 6369: No match 6370: A#include 6371: No match 6372: A #Include 6373: No match 6374: 6375: /a*b*\w/ 6376: aaabbbb 6377: 0: aaabbbb 6378: aaaa 6379: 0: aaaa 6380: a 6381: 0: a 6382: 6383: /a*b?\w/ 6384: aaabbbb 6385: 0: aaabb 6386: aaaa 6387: 0: aaaa 6388: a 6389: 0: a 6390: 6391: /a*b{0,4}\w/ 6392: aaabbbb 6393: 0: aaabbbb 6394: aaaa 6395: 0: aaaa 6396: a 6397: 0: a 6398: 6399: /a*b{0,}\w/ 6400: aaabbbb 6401: 0: aaabbbb 6402: aaaa 6403: 0: aaaa 6404: a 6405: 0: a 6406: 6407: /a*\d*\w/ 6408: 0a 6409: 0: 0a 6410: a 6411: 0: a 6412: 6413: /a*b *\w/x 6414: a 6415: 0: a 6416: 6417: /a*b#comment 6418: *\w/x 6419: a 6420: 0: a 6421: 6422: /a* b *\w/x 6423: a 6424: 0: a 6425: 6426: /^\w+=.*(\\\n.*)*/ 6427: abc=xyz\\\npqr 6428: 0: abc=xyz\ 6429: 6430: /(?=(\w+))\1:/ 6431: abcd: 6432: 0: abcd: 6433: 1: abcd 6434: 6435: /^(?=(\w+))\1:/ 6436: abcd: 6437: 0: abcd: 6438: 1: abcd 6439: 6440: /^\Eabc/ 6441: abc 6442: 0: abc 6443: 6444: /^[\Eabc]/ 6445: a 6446: 0: a 6447: ** Failers 6448: No match 6449: E 6450: No match 6451: 6452: /^[a-\Ec]/ 6453: b 6454: 0: b 6455: ** Failers 6456: No match 6457: - 6458: No match 6459: E 6460: No match 6461: 6462: /^[a\E\E-\Ec]/ 6463: b 6464: 0: b 6465: ** Failers 6466: No match 6467: - 6468: No match 6469: E 6470: No match 6471: 6472: /^[\E\Qa\E-\Qz\E]+/ 6473: b 6474: 0: b 6475: ** Failers 6476: No match 6477: - 6478: No match 6479: 6480: /^[a\Q]bc\E]/ 6481: a 6482: 0: a 6483: ] 6484: 0: ] 6485: c 6486: 0: c 6487: 6488: /^[a-\Q\E]/ 6489: a 6490: 0: a 6491: - 6492: 0: - 6493: 6494: /^(a()*)*/ 6495: aaaa 6496: 0: aaaa 6497: 1: a 6498: 2: 6499: 6500: /^(?:a(?:(?:))*)*/ 6501: aaaa 6502: 0: aaaa 6503: 6504: /^(a()+)+/ 6505: aaaa 6506: 0: aaaa 6507: 1: a 6508: 2: 6509: 6510: /^(?:a(?:(?:))+)+/ 6511: aaaa 6512: 0: aaaa 6513: 6514: /(a){0,3}(?(1)b|(c|))*D/ 6515: abbD 6516: 0: abbD 6517: 1: a 6518: ccccD 6519: 0: ccccD 6520: 1: <unset> 6521: 2: 6522: D 6523: 0: D 6524: 1: <unset> 6525: 2: 6526: 6527: /(a|)*\d/ 6528: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6529: No match 6530: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 6531: 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 6532: 1: 6533: 6534: /(?>a|)*\d/ 6535: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6536: No match 6537: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 6538: 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 6539: 6540: /(?:a|)*\d/ 6541: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6542: No match 6543: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 6544: 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 6545: 6546: /\Z/g 6547: abc\n 6548: 0: 6549: 0: 6550: 6551: /^(?s)(?>.*)(?<!\n)/ 6552: abc 6553: 0: abc 6554: abc\n 6555: No match 6556: 6557: /^(?![^\n]*\n\z)/ 6558: abc 6559: 0: 6560: abc\n 6561: No match 6562: 6563: /\z(?<!\n)/ 6564: abc 6565: 0: 6566: abc\n 6567: No match 6568: 6569: /(.*(.)?)*/ 6570: abcd 6571: 0: abcd 6572: 1: 6573: 6574: /( (A | (?(1)0|) )* )/x 6575: abcd 6576: 0: 6577: 1: 6578: 2: 6579: 6580: /( ( (?(1)0|) )* )/x 6581: abcd 6582: 0: 6583: 1: 6584: 2: 6585: 6586: /( (?(1)0|)* )/x 6587: abcd 6588: 0: 6589: 1: 6590: 6591: /[[:abcd:xyz]]/ 6592: a] 6593: 0: a] 6594: :] 6595: 0: :] 6596: 6597: /[abc[:x\]pqr]/ 6598: a 6599: 0: a 6600: [ 6601: 0: [ 6602: : 6603: 0: : 6604: ] 6605: 0: ] 6606: p 6607: 0: p 6608: 6609: /.*[op][xyz]/ 6610: fooabcfoo 6611: No match 6612: 6613: /(?(?=.*b)b|^)/ 6614: adc 6615: 0: 6616: abc 6617: 0: b 6618: 6619: /(?(?=^.*b)b|^)/ 6620: adc 6621: 0: 6622: abc 6623: No match 6624: 6625: /(?(?=.*b)b|^)*/ 6626: adc 6627: 0: 6628: abc 6629: 0: 6630: 6631: /(?(?=.*b)b|^)+/ 6632: adc 6633: 0: 6634: abc 6635: 0: b 6636: 6637: /(?(?=b).*b|^d)/ 6638: abc 6639: 0: b 6640: 6641: /(?(?=.*b).*b|^d)/ 6642: abc 6643: 0: ab 6644: 6645: /^%((?(?=[a])[^%])|b)*%$/ 6646: %ab% 6647: 0: %ab% 6648: 1: 6649: 6650: /(?i)a(?-i)b|c/ 6651: XabX 6652: 0: ab 6653: XAbX 6654: 0: Ab 6655: CcC 6656: 0: c 6657: ** Failers 6658: No match 6659: XABX 6660: No match 6661: 6662: /[\x00-\xff\s]+/ 6663: \x0a\x0b\x0c\x0d 6664: 0: \x0a\x0b\x0c\x0d 6665: 6666: /^\c/ 6667: ? 6668: 0: ? 6669: 1.1.1.2 ! misho 6670: /(abc)\1/i ! 6671: abc ! 6672: No match ! 6673: ! 6674: /(abc)\1/ ! 6675: abc ! 6676: No match ! 6677: ! 6678: /[^a]*/i ! 6679: 12abc ! 6680: 0: 12 ! 6681: 12ABC ! 6682: 0: 12 ! 6683: ! 6684: /[^a]*+/i ! 6685: 12abc ! 6686: 0: 12 ! 6687: 12ABC ! 6688: 0: 12 ! 6689: ! 6690: /[^a]*?X/i ! 6691: ** Failers ! 6692: No match ! 6693: 12abc ! 6694: No match ! 6695: 12ABC ! 6696: No match ! 6697: ! 6698: /[^a]+?X/i ! 6699: ** Failers ! 6700: No match ! 6701: 12abc ! 6702: No match ! 6703: 12ABC ! 6704: No match ! 6705: ! 6706: /[^a]?X/i ! 6707: 12aXbcX ! 6708: 0: X ! 6709: 12AXBCX ! 6710: 0: X ! 6711: BCX ! 6712: 0: CX ! 6713: ! 6714: /[^a]??X/i ! 6715: 12aXbcX ! 6716: 0: X ! 6717: 12AXBCX ! 6718: 0: X ! 6719: BCX ! 6720: 0: CX ! 6721: ! 6722: /[^a]?+X/i ! 6723: 12aXbcX ! 6724: 0: cX ! 6725: 12AXBCX ! 6726: 0: CX ! 6727: BCX ! 6728: 0: CX ! 6729: ! 6730: /[^a]{2,3}/i ! 6731: abcdef ! 6732: 0: bcd ! 6733: ABCDEF ! 6734: 0: BCD ! 6735: ! 6736: /[^a]{2,3}?/i ! 6737: abcdef ! 6738: 0: bc ! 6739: ABCDEF ! 6740: 0: BC ! 6741: ! 6742: /[^a]{2,3}+/i ! 6743: abcdef ! 6744: 0: bcd ! 6745: ABCDEF ! 6746: 0: BCD ! 6747: ! 6748: /((a|)+)+Z/ ! 6749: Z ! 6750: 0: Z ! 6751: 1: ! 6752: 2: ! 6753: ! 6754: /(a)b|(a)c/ ! 6755: ac ! 6756: 0: ac ! 6757: 1: <unset> ! 6758: 2: a ! 6759: ! 6760: /(?>(a))b|(a)c/ ! 6761: ac ! 6762: 0: ac ! 6763: 1: <unset> ! 6764: 2: a ! 6765: ! 6766: /(?=(a))ab|(a)c/ ! 6767: ac ! 6768: 0: ac ! 6769: 1: <unset> ! 6770: 2: a ! 6771: ! 6772: /((?>(a))b|(a)c)/ ! 6773: ac ! 6774: 0: ac ! 6775: 1: ac ! 6776: 2: <unset> ! 6777: 3: a ! 6778: ! 6779: /((?>(a))b|(a)c)++/ ! 6780: ac ! 6781: 0: ac ! 6782: 1: ac ! 6783: 2: <unset> ! 6784: 3: a ! 6785: ! 6786: /(?:(?>(a))b|(a)c)++/ ! 6787: ac ! 6788: 0: ac ! 6789: 1: <unset> ! 6790: 2: a ! 6791: ! 6792: /(?=(?>(a))b|(a)c)(..)/ ! 6793: ac ! 6794: 0: ac ! 6795: 1: <unset> ! 6796: 2: a ! 6797: 3: ac ! 6798: ! 6799: /(?>(?>(a))b|(a)c)/ ! 6800: ac ! 6801: 0: ac ! 6802: 1: <unset> ! 6803: 2: a ! 6804: ! 6805: /(?:(?>([ab])))+a=/+ ! 6806: =ba= ! 6807: 0: ba= ! 6808: 0+ ! 6809: 1: b ! 6810: ! 6811: /(?>([ab]))+a=/+ ! 6812: =ba= ! 6813: 0: ba= ! 6814: 0+ ! 6815: 1: b ! 6816: ! 6817: /((?>(a+)b)+(aabab))/ ! 6818: aaaabaaabaabab ! 6819: 0: aaaabaaabaabab ! 6820: 1: aaaabaaabaabab ! 6821: 2: aaa ! 6822: 3: aabab ! 6823: ! 6824: /(?>a+|ab)+?c/ ! 6825: aabc ! 6826: No match ! 6827: ! 6828: /(?>a+|ab)+c/ ! 6829: aabc ! 6830: No match ! 6831: ! 6832: /(?:a+|ab)+c/ ! 6833: aabc ! 6834: 0: aabc ! 6835: ! 6836: /(?(?=(a))a)/ ! 6837: a ! 6838: 0: a ! 6839: 1: a ! 6840: ! 6841: /(?(?=(a))a)(b)/ ! 6842: ab ! 6843: 0: ab ! 6844: 1: a ! 6845: 2: b ! 6846: ! 6847: /^(?:a|ab)++c/ ! 6848: aaaabc ! 6849: No match ! 6850: ! 6851: /^(?>a|ab)++c/ ! 6852: aaaabc ! 6853: No match ! 6854: ! 6855: /^(?:a|ab)+c/ ! 6856: aaaabc ! 6857: 0: aaaabc ! 6858: ! 6859: /(?=abc){3}abc/+ ! 6860: abcabcabc ! 6861: 0: abc ! 6862: 0+ abcabc ! 6863: ** Failers ! 6864: No match ! 6865: xyz ! 6866: No match ! 6867: ! 6868: /(?=abc)+abc/+ ! 6869: abcabcabc ! 6870: 0: abc ! 6871: 0+ abcabc ! 6872: ** Failers ! 6873: No match ! 6874: xyz ! 6875: No match ! 6876: ! 6877: /(?=abc)++abc/+ ! 6878: abcabcabc ! 6879: 0: abc ! 6880: 0+ abcabc ! 6881: ** Failers ! 6882: No match ! 6883: xyz ! 6884: No match ! 6885: ! 6886: /(?=abc){0}xyz/ ! 6887: xyz ! 6888: 0: xyz ! 6889: ! 6890: /(?=abc){1}xyz/ ! 6891: ** Failers ! 6892: No match ! 6893: xyz ! 6894: No match ! 6895: ! 6896: /(?=(a))?./ ! 6897: ab ! 6898: 0: a ! 6899: 1: a ! 6900: bc ! 6901: 0: b ! 6902: ! 6903: /(?=(a))??./ ! 6904: ab ! 6905: 0: a ! 6906: bc ! 6907: 0: b ! 6908: ! 6909: /^(?=(a)){0}b(?1)/ ! 6910: backgammon ! 6911: 0: ba ! 6912: ! 6913: /^(?=(?1))?[az]([abc])d/ ! 6914: abd ! 6915: 0: abd ! 6916: 1: b ! 6917: zcdxx ! 6918: 0: zcd ! 6919: 1: c ! 6920: ! 6921: /^(?!a){0}\w+/ ! 6922: aaaaa ! 6923: 0: aaaaa ! 6924: ! 6925: /(?<=(abc))?xyz/ ! 6926: abcxyz ! 6927: 0: xyz ! 6928: 1: abc ! 6929: pqrxyz ! 6930: 0: xyz ! 6931: ! 6932: /^[\g<a>]+/ ! 6933: ggg<<<aaa>>> ! 6934: 0: ggg<<<aaa>>> ! 6935: ** Failers ! 6936: No match ! 6937: \\ga ! 6938: No match ! 6939: ! 6940: /^[\ga]+/ ! 6941: gggagagaxyz ! 6942: 0: gggagaga ! 6943: ! 6944: /^[:a[:digit:]]+/ ! 6945: aaaa444:::Z ! 6946: 0: aaaa444::: ! 6947: ! 6948: /^[:a[:digit:]:b]+/ ! 6949: aaaa444:::bbbZ ! 6950: 0: aaaa444:::bbb ! 6951: ! 6952: /[:a]xxx[b:]/ ! 6953: :xxx: ! 6954: 0: :xxx: ! 6955: ! 6956: /(?<=a{2})b/i ! 6957: xaabc ! 6958: 0: b ! 6959: ** Failers ! 6960: No match ! 6961: xabc ! 6962: No match ! 6963: ! 6964: /(?<!a{2})b/i ! 6965: xabc ! 6966: 0: b ! 6967: ** Failers ! 6968: No match ! 6969: xaabc ! 6970: No match ! 6971: ! 6972: /(?<=a\h)c/ ! 6973: xa c ! 6974: 0: c ! 6975: ! 6976: /(?<=[^a]{2})b/ ! 6977: axxbc ! 6978: 0: b ! 6979: aAAbc ! 6980: 0: b ! 6981: ** Failers ! 6982: No match ! 6983: xaabc ! 6984: No match ! 6985: ! 6986: /(?<=[^a]{2})b/i ! 6987: axxbc ! 6988: 0: b ! 6989: ** Failers ! 6990: No match ! 6991: aAAbc ! 6992: No match ! 6993: xaabc ! 6994: No match ! 6995: ! 6996: /(?<=a\H)c/ ! 6997: abc ! 6998: 0: c ! 6999: ! 7000: /(?<=a\V)c/ ! 7001: abc ! 7002: 0: c ! 7003: ! 7004: /(?<=a\v)c/ ! 7005: a\nc ! 7006: 0: c ! 7007: ! 7008: /(?(?=c)c|d)++Y/ ! 7009: XcccddYX ! 7010: 0: cccddY ! 7011: ! 7012: /(?(?=c)c|d)*+Y/ ! 7013: XcccddYX ! 7014: 0: cccddY ! 7015: ! 7016: /^(a{2,3}){2,}+a/ ! 7017: aaaaaaa ! 7018: 0: aaaaaaa ! 7019: 1: aaa ! 7020: ** Failers ! 7021: No match ! 7022: aaaaaa ! 7023: No match ! 7024: aaaaaaaaa ! 7025: No match ! 7026: ! 7027: /^(a{2,3})++a/ ! 7028: ** Failers ! 7029: No match ! 7030: aaaaaa ! 7031: No match ! 7032: ! 7033: /^(a{2,3})*+a/ ! 7034: ** Failers ! 7035: No match ! 7036: aaaaaa ! 7037: No match ! 7038: ! 7039: /ab\Cde/ ! 7040: abXde ! 7041: 0: abXde ! 7042: ! 7043: /(?<=ab\Cde)X/ ! 7044: abZdeX ! 7045: 0: X ! 7046: ! 7047: /a[\CD]b/ ! 7048: aCb ! 7049: 0: aCb ! 7050: aDb ! 7051: 0: aDb ! 7052: ! 7053: /a[\C-X]b/ ! 7054: aJb ! 7055: 0: aJb ! 7056: ! 7057: /\H\h\V\v/ ! 7058: X X\x0a ! 7059: 0: X X\x0a ! 7060: X\x09X\x0b ! 7061: 0: X\x09X\x0b ! 7062: ** Failers ! 7063: No match ! 7064: \xa0 X\x0a ! 7065: No match ! 7066: ! 7067: /\H*\h+\V?\v{3,4}/ ! 7068: \x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a ! 7069: 0: \x09 \xa0X\x0a\x0b\x0c\x0d ! 7070: \x09\x20\xa0\x0a\x0b\x0c\x0d\x0a ! 7071: 0: \x09 \xa0\x0a\x0b\x0c\x0d ! 7072: \x09\x20\xa0\x0a\x0b\x0c ! 7073: 0: \x09 \xa0\x0a\x0b\x0c ! 7074: ** Failers ! 7075: No match ! 7076: \x09\x20\xa0\x0a\x0b ! 7077: No match ! 7078: ! 7079: /\H{3,4}/ ! 7080: XY ABCDE ! 7081: 0: ABCD ! 7082: XY PQR ST ! 7083: 0: PQR ! 7084: ! 7085: /.\h{3,4}./ ! 7086: XY AB PQRS ! 7087: 0: B P ! 7088: ! 7089: /\h*X\h?\H+Y\H?Z/ ! 7090: >XNNNYZ ! 7091: 0: XNNNYZ ! 7092: > X NYQZ ! 7093: 0: X NYQZ ! 7094: ** Failers ! 7095: No match ! 7096: >XYZ ! 7097: No match ! 7098: > X NY Z ! 7099: No match ! 7100: ! 7101: /\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/ ! 7102: >XY\x0aZ\x0aA\x0bNN\x0c ! 7103: 0: XY\x0aZ\x0aA\x0bNN\x0c ! 7104: >\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c ! 7105: 0: \x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c ! 7106: ! 7107: /(foo)\Kbar/ ! 7108: foobar ! 7109: 0: bar ! 7110: 1: foo ! 7111: ! 7112: /(foo)(\Kbar|baz)/ ! 7113: foobar ! 7114: 0: bar ! 7115: 1: foo ! 7116: 2: bar ! 7117: foobaz ! 7118: 0: foobaz ! 7119: 1: foo ! 7120: 2: baz ! 7121: ! 7122: /(foo\Kbar)baz/ ! 7123: foobarbaz ! 7124: 0: barbaz ! 7125: 1: foobar ! 7126: ! 7127: /abc\K|def\K/g+ ! 7128: Xabcdefghi ! 7129: 0: ! 7130: 0+ defghi ! 7131: 0: ! 7132: 0+ ghi ! 7133: ! 7134: /ab\Kc|de\Kf/g+ ! 7135: Xabcdefghi ! 7136: 0: c ! 7137: 0+ defghi ! 7138: 0: f ! 7139: 0+ ghi ! 7140: ! 7141: /(?=C)/g+ ! 7142: ABCDECBA ! 7143: 0: ! 7144: 0+ CDECBA ! 7145: 0: ! 7146: 0+ CBA ! 7147: ! 7148: /^abc\K/+ ! 7149: abcdef ! 7150: 0: ! 7151: 0+ def ! 7152: ** Failers ! 7153: No match ! 7154: defabcxyz ! 7155: No match ! 7156: ! 7157: /^(a(b))\1\g1\g{1}\g-1\g{-1}\g{-02}Z/ ! 7158: ababababbbabZXXXX ! 7159: 0: ababababbbabZ ! 7160: 1: ab ! 7161: 2: b ! 7162: ! 7163: /(?<A>tom|bon)-\g{A}/ ! 7164: tom-tom ! 7165: 0: tom-tom ! 7166: 1: tom ! 7167: bon-bon ! 7168: 0: bon-bon ! 7169: 1: bon ! 7170: ! 7171: /(^(a|b\g{-1}))/ ! 7172: bacxxx ! 7173: No match ! 7174: ! 7175: /(?|(abc)|(xyz))\1/ ! 7176: abcabc ! 7177: 0: abcabc ! 7178: 1: abc ! 7179: xyzxyz ! 7180: 0: xyzxyz ! 7181: 1: xyz ! 7182: ** Failers ! 7183: No match ! 7184: abcxyz ! 7185: No match ! 7186: xyzabc ! 7187: No match ! 7188: ! 7189: /(?|(abc)|(xyz))(?1)/ ! 7190: abcabc ! 7191: 0: abcabc ! 7192: 1: abc ! 7193: xyzabc ! 7194: 0: xyzabc ! 7195: 1: xyz ! 7196: ** Failers ! 7197: No match ! 7198: xyzxyz ! 7199: No match ! 7200: ! 7201: /^X(?5)(a)(?|(b)|(q))(c)(d)(Y)/ ! 7202: XYabcdY ! 7203: 0: XYabcdY ! 7204: 1: a ! 7205: 2: b ! 7206: 3: c ! 7207: 4: d ! 7208: 5: Y ! 7209: ! 7210: /^X(?7)(a)(?|(b|(r)(s))|(q))(c)(d)(Y)/ ! 7211: XYabcdY ! 7212: 0: XYabcdY ! 7213: 1: a ! 7214: 2: b ! 7215: 3: <unset> ! 7216: 4: <unset> ! 7217: 5: c ! 7218: 6: d ! 7219: 7: Y ! 7220: ! 7221: /^X(?7)(a)(?|(b|(?|(r)|(t))(s))|(q))(c)(d)(Y)/ ! 7222: XYabcdY ! 7223: 0: XYabcdY ! 7224: 1: a ! 7225: 2: b ! 7226: 3: <unset> ! 7227: 4: <unset> ! 7228: 5: c ! 7229: 6: d ! 7230: 7: Y ! 7231: ! 7232: /(?'abc'\w+):\k<abc>{2}/ ! 7233: a:aaxyz ! 7234: 0: a:aa ! 7235: 1: a ! 7236: ab:ababxyz ! 7237: 0: ab:abab ! 7238: 1: ab ! 7239: ** Failers ! 7240: No match ! 7241: a:axyz ! 7242: No match ! 7243: ab:abxyz ! 7244: No match ! 7245: ! 7246: /(?'abc'\w+):\g{abc}{2}/ ! 7247: a:aaxyz ! 7248: 0: a:aa ! 7249: 1: a ! 7250: ab:ababxyz ! 7251: 0: ab:abab ! 7252: 1: ab ! 7253: ** Failers ! 7254: No match ! 7255: a:axyz ! 7256: No match ! 7257: ab:abxyz ! 7258: No match ! 7259: ! 7260: /^(?<ab>a)? (?(<ab>)b|c) (?('ab')d|e)/x ! 7261: abd ! 7262: 0: abd ! 7263: 1: a ! 7264: ce ! 7265: 0: ce ! 7266: ! 7267: /^(a.)\g-1Z/ ! 7268: aXaXZ ! 7269: 0: aXaXZ ! 7270: 1: aX ! 7271: ! 7272: /^(a.)\g{-1}Z/ ! 7273: aXaXZ ! 7274: 0: aXaXZ ! 7275: 1: aX ! 7276: ! 7277: /^(?(DEFINE) (?<A> a) (?<B> b) ) (?&A) (?&B) /x ! 7278: abcd ! 7279: 0: ab ! 7280: ! 7281: /(?<NAME>(?&NAME_PAT))\s+(?<ADDR>(?&ADDRESS_PAT)) ! 7282: (?(DEFINE) ! 7283: (?<NAME_PAT>[a-z]+) ! 7284: (?<ADDRESS_PAT>\d+) ! 7285: )/x ! 7286: metcalfe 33 ! 7287: 0: metcalfe 33 ! 7288: 1: metcalfe ! 7289: 2: 33 ! 7290: ! 7291: /(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))\b(?&byte)(\.(?&byte)){3}/ ! 7292: 1.2.3.4 ! 7293: 0: 1.2.3.4 ! 7294: 1: <unset> ! 7295: 2: .4 ! 7296: 131.111.10.206 ! 7297: 0: 131.111.10.206 ! 7298: 1: <unset> ! 7299: 2: .206 ! 7300: 10.0.0.0 ! 7301: 0: 10.0.0.0 ! 7302: 1: <unset> ! 7303: 2: .0 ! 7304: ** Failers ! 7305: No match ! 7306: 10.6 ! 7307: No match ! 7308: 455.3.4.5 ! 7309: No match ! 7310: ! 7311: /\b(?&byte)(\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))/ ! 7312: 1.2.3.4 ! 7313: 0: 1.2.3.4 ! 7314: 1: .4 ! 7315: 131.111.10.206 ! 7316: 0: 131.111.10.206 ! 7317: 1: .206 ! 7318: 10.0.0.0 ! 7319: 0: 10.0.0.0 ! 7320: 1: .0 ! 7321: ** Failers ! 7322: No match ! 7323: 10.6 ! 7324: No match ! 7325: 455.3.4.5 ! 7326: No match ! 7327: ! 7328: /^(\w++|\s++)*$/ ! 7329: now is the time for all good men to come to the aid of the party ! 7330: 0: now is the time for all good men to come to the aid of the party ! 7331: 1: party ! 7332: *** Failers ! 7333: No match ! 7334: this is not a line with only words and spaces! ! 7335: No match ! 7336: ! 7337: /(\d++)(\w)/ ! 7338: 12345a ! 7339: 0: 12345a ! 7340: 1: 12345 ! 7341: 2: a ! 7342: *** Failers ! 7343: No match ! 7344: 12345+ ! 7345: No match ! 7346: ! 7347: /a++b/ ! 7348: aaab ! 7349: 0: aaab ! 7350: ! 7351: /(a++b)/ ! 7352: aaab ! 7353: 0: aaab ! 7354: 1: aaab ! 7355: ! 7356: /(a++)b/ ! 7357: aaab ! 7358: 0: aaab ! 7359: 1: aaa ! 7360: ! 7361: /([^()]++|\([^()]*\))+/ ! 7362: ((abc(ade)ufh()()x ! 7363: 0: abc(ade)ufh()()x ! 7364: 1: x ! 7365: ! 7366: /\(([^()]++|\([^()]+\))+\)/ ! 7367: (abc) ! 7368: 0: (abc) ! 7369: 1: abc ! 7370: (abc(def)xyz) ! 7371: 0: (abc(def)xyz) ! 7372: 1: xyz ! 7373: *** Failers ! 7374: No match ! 7375: ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ! 7376: No match ! 7377: ! 7378: /^([^()]|\((?1)*\))*$/ ! 7379: abc ! 7380: 0: abc ! 7381: 1: c ! 7382: a(b)c ! 7383: 0: a(b)c ! 7384: 1: c ! 7385: a(b(c))d ! 7386: 0: a(b(c))d ! 7387: 1: d ! 7388: *** Failers) ! 7389: No match ! 7390: a(b(c)d ! 7391: No match ! 7392: ! 7393: /^>abc>([^()]|\((?1)*\))*<xyz<$/ ! 7394: >abc>123<xyz< ! 7395: 0: >abc>123<xyz< ! 7396: 1: 3 ! 7397: >abc>1(2)3<xyz< ! 7398: 0: >abc>1(2)3<xyz< ! 7399: 1: 3 ! 7400: >abc>(1(2)3)<xyz< ! 7401: 0: >abc>(1(2)3)<xyz< ! 7402: 1: (1(2)3) ! 7403: ! 7404: /^(?:((.)(?1)\2|)|((.)(?3)\4|.))$/i ! 7405: 1221 ! 7406: 0: 1221 ! 7407: 1: 1221 ! 7408: 2: 1 ! 7409: Satanoscillatemymetallicsonatas ! 7410: 0: Satanoscillatemymetallicsonatas ! 7411: 1: <unset> ! 7412: 2: <unset> ! 7413: 3: Satanoscillatemymetallicsonatas ! 7414: 4: S ! 7415: AmanaplanacanalPanama ! 7416: 0: AmanaplanacanalPanama ! 7417: 1: <unset> ! 7418: 2: <unset> ! 7419: 3: AmanaplanacanalPanama ! 7420: 4: A ! 7421: AblewasIereIsawElba ! 7422: 0: AblewasIereIsawElba ! 7423: 1: <unset> ! 7424: 2: <unset> ! 7425: 3: AblewasIereIsawElba ! 7426: 4: A ! 7427: *** Failers ! 7428: No match ! 7429: Thequickbrownfox ! 7430: No match ! 7431: ! 7432: /^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/ ! 7433: 12 ! 7434: 0: 12 ! 7435: 1: 12 ! 7436: (((2+2)*-3)-7) ! 7437: 0: (((2+2)*-3)-7) ! 7438: 1: (((2+2)*-3)-7) ! 7439: 2: - ! 7440: -12 ! 7441: 0: -12 ! 7442: 1: -12 ! 7443: *** Failers ! 7444: No match ! 7445: ((2+2)*-3)-7) ! 7446: No match ! 7447: ! 7448: /^(x(y|(?1){2})z)/ ! 7449: xyz ! 7450: 0: xyz ! 7451: 1: xyz ! 7452: 2: y ! 7453: xxyzxyzz ! 7454: 0: xxyzxyzz ! 7455: 1: xxyzxyzz ! 7456: 2: xyzxyz ! 7457: *** Failers ! 7458: No match ! 7459: xxyzz ! 7460: No match ! 7461: xxyzxyzxyzz ! 7462: No match ! 7463: ! 7464: /((< (?: (?(R) \d++ | [^<>]*+) | (?2)) * >))/x ! 7465: <> ! 7466: 0: <> ! 7467: 1: <> ! 7468: 2: <> ! 7469: <abcd> ! 7470: 0: <abcd> ! 7471: 1: <abcd> ! 7472: 2: <abcd> ! 7473: <abc <123> hij> ! 7474: 0: <abc <123> hij> ! 7475: 1: <abc <123> hij> ! 7476: 2: <abc <123> hij> ! 7477: <abc <def> hij> ! 7478: 0: <def> ! 7479: 1: <def> ! 7480: 2: <def> ! 7481: <abc<>def> ! 7482: 0: <abc<>def> ! 7483: 1: <abc<>def> ! 7484: 2: <abc<>def> ! 7485: <abc<> ! 7486: 0: <> ! 7487: 1: <> ! 7488: 2: <> ! 7489: *** Failers ! 7490: No match ! 7491: <abc ! 7492: No match ! 7493: ! 7494: /^a+(*FAIL)/ ! 7495: aaaaaa ! 7496: No match ! 7497: ! 7498: /a+b?c+(*FAIL)/ ! 7499: aaabccc ! 7500: No match ! 7501: ! 7502: /a+b?(*PRUNE)c+(*FAIL)/ ! 7503: aaabccc ! 7504: No match ! 7505: ! 7506: /a+b?(*COMMIT)c+(*FAIL)/ ! 7507: aaabccc ! 7508: No match ! 7509: ! 7510: /a+b?(*SKIP)c+(*FAIL)/ ! 7511: aaabcccaaabccc ! 7512: No match ! 7513: ! 7514: /^(?:aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/ ! 7515: aaaxxxxxx ! 7516: 0: aaaxxxxxx ! 7517: aaa++++++ ! 7518: 0: aaa ! 7519: bbbxxxxx ! 7520: 0: bbbxxxxx ! 7521: bbb+++++ ! 7522: 0: bbb ! 7523: cccxxxx ! 7524: 0: cccxxxx ! 7525: ccc++++ ! 7526: 0: ccc ! 7527: dddddddd ! 7528: 0: ddd ! 7529: ! 7530: /^(aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/ ! 7531: aaaxxxxxx ! 7532: 0: aaaxxxxxx ! 7533: 1: aaaxxxxxx ! 7534: aaa++++++ ! 7535: 0: aaa ! 7536: 1: aaa ! 7537: bbbxxxxx ! 7538: 0: bbbxxxxx ! 7539: 1: bbbxxxxx ! 7540: bbb+++++ ! 7541: 0: bbb ! 7542: 1: bbb ! 7543: cccxxxx ! 7544: 0: cccxxxx ! 7545: 1: cccxxxx ! 7546: ccc++++ ! 7547: 0: ccc ! 7548: 1: ccc ! 7549: dddddddd ! 7550: 0: ddd ! 7551: 1: ddd ! 7552: ! 7553: /a+b?(*THEN)c+(*FAIL)/ ! 7554: aaabccc ! 7555: No match ! 7556: ! 7557: /(A (A|B(*ACCEPT)|C) D)(E)/x ! 7558: AB ! 7559: 0: AB ! 7560: 1: AB ! 7561: 2: B ! 7562: ABX ! 7563: 0: AB ! 7564: 1: AB ! 7565: 2: B ! 7566: AADE ! 7567: 0: AADE ! 7568: 1: AAD ! 7569: 2: A ! 7570: 3: E ! 7571: ACDE ! 7572: 0: ACDE ! 7573: 1: ACD ! 7574: 2: C ! 7575: 3: E ! 7576: ** Failers ! 7577: No match ! 7578: AD ! 7579: No match ! 7580: ! 7581: /^\W*+(?:((.)\W*+(?1)\W*+\2|)|((.)\W*+(?3)\W*+\4|\W*+.\W*+))\W*+$/i ! 7582: 1221 ! 7583: 0: 1221 ! 7584: 1: 1221 ! 7585: 2: 1 ! 7586: Satan, oscillate my metallic sonatas! ! 7587: 0: Satan, oscillate my metallic sonatas! ! 7588: 1: <unset> ! 7589: 2: <unset> ! 7590: 3: Satan, oscillate my metallic sonatas ! 7591: 4: S ! 7592: A man, a plan, a canal: Panama! ! 7593: 0: A man, a plan, a canal: Panama! ! 7594: 1: <unset> ! 7595: 2: <unset> ! 7596: 3: A man, a plan, a canal: Panama ! 7597: 4: A ! 7598: Able was I ere I saw Elba. ! 7599: 0: Able was I ere I saw Elba. ! 7600: 1: <unset> ! 7601: 2: <unset> ! 7602: 3: Able was I ere I saw Elba ! 7603: 4: A ! 7604: *** Failers ! 7605: No match ! 7606: The quick brown fox ! 7607: No match ! 7608: ! 7609: /^((.)(?1)\2|.)$/ ! 7610: a ! 7611: 0: a ! 7612: 1: a ! 7613: aba ! 7614: 0: aba ! 7615: 1: aba ! 7616: 2: a ! 7617: aabaa ! 7618: 0: aabaa ! 7619: 1: aabaa ! 7620: 2: a ! 7621: abcdcba ! 7622: 0: abcdcba ! 7623: 1: abcdcba ! 7624: 2: a ! 7625: pqaabaaqp ! 7626: 0: pqaabaaqp ! 7627: 1: pqaabaaqp ! 7628: 2: p ! 7629: ablewasiereisawelba ! 7630: 0: ablewasiereisawelba ! 7631: 1: ablewasiereisawelba ! 7632: 2: a ! 7633: rhubarb ! 7634: No match ! 7635: the quick brown fox ! 7636: No match ! 7637: ! 7638: /(a)(?<=b(?1))/ ! 7639: baz ! 7640: 0: a ! 7641: 1: a ! 7642: ** Failers ! 7643: No match ! 7644: caz ! 7645: No match ! 7646: ! 7647: /(?<=b(?1))(a)/ ! 7648: zbaaz ! 7649: 0: a ! 7650: 1: a ! 7651: ** Failers ! 7652: No match ! 7653: aaa ! 7654: No match ! 7655: ! 7656: /(?<X>a)(?<=b(?&X))/ ! 7657: baz ! 7658: 0: a ! 7659: 1: a ! 7660: ! 7661: /^(?|(abc)|(def))\1/ ! 7662: abcabc ! 7663: 0: abcabc ! 7664: 1: abc ! 7665: defdef ! 7666: 0: defdef ! 7667: 1: def ! 7668: ** Failers ! 7669: No match ! 7670: abcdef ! 7671: No match ! 7672: defabc ! 7673: No match ! 7674: ! 7675: /^(?|(abc)|(def))(?1)/ ! 7676: abcabc ! 7677: 0: abcabc ! 7678: 1: abc ! 7679: defabc ! 7680: 0: defabc ! 7681: 1: def ! 7682: ** Failers ! 7683: No match ! 7684: defdef ! 7685: No match ! 7686: abcdef ! 7687: No match ! 7688: ! 7689: /(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) |b(?<quote> (?<apostrophe>')|(?<realquote>")) ) (?('quote')[a-z]+|[0-9]+)/xJ ! 7690: a\"aaaaa ! 7691: 0: a"aaaaa ! 7692: 1: " ! 7693: 2: <unset> ! 7694: 3: " ! 7695: b\"aaaaa ! 7696: 0: b"aaaaa ! 7697: 1: <unset> ! 7698: 2: <unset> ! 7699: 3: <unset> ! 7700: 4: " ! 7701: 5: <unset> ! 7702: 6: " ! 7703: ** Failers ! 7704: No match ! 7705: b\"11111 ! 7706: No match ! 7707: ! 7708: /(?:(?1)|B)(A(*F)|C)/ ! 7709: ABCD ! 7710: 0: BC ! 7711: 1: C ! 7712: CCD ! 7713: 0: CC ! 7714: 1: C ! 7715: ** Failers ! 7716: No match ! 7717: CAD ! 7718: No match ! 7719: ! 7720: /^(?:(?1)|B)(A(*F)|C)/ ! 7721: CCD ! 7722: 0: CC ! 7723: 1: C ! 7724: BCD ! 7725: 0: BC ! 7726: 1: C ! 7727: ** Failers ! 7728: No match ! 7729: ABCD ! 7730: No match ! 7731: CAD ! 7732: No match ! 7733: BAD ! 7734: No match ! 7735: ! 7736: /(?:(?1)|B)(A(*ACCEPT)XX|C)D/ ! 7737: AAD ! 7738: 0: AA ! 7739: 1: A ! 7740: ACD ! 7741: 0: ACD ! 7742: 1: C ! 7743: BAD ! 7744: 0: BA ! 7745: 1: A ! 7746: BCD ! 7747: 0: BCD ! 7748: 1: C ! 7749: BAX ! 7750: 0: BA ! 7751: 1: A ! 7752: ** Failers ! 7753: No match ! 7754: ACX ! 7755: No match ! 7756: ABC ! 7757: No match ! 7758: ! 7759: /(?(DEFINE)(A))B(?1)C/ ! 7760: BAC ! 7761: 0: BAC ! 7762: ! 7763: /(?(DEFINE)((A)\2))B(?1)C/ ! 7764: BAAC ! 7765: 0: BAAC ! 7766: ! 7767: /(?<pn> \( ( [^()]++ | (?&pn) )* \) )/x ! 7768: (ab(cd)ef) ! 7769: 0: (ab(cd)ef) ! 7770: 1: (ab(cd)ef) ! 7771: 2: ef ! 7772: ! 7773: /^(?!a(*SKIP)b)/ ! 7774: ac ! 7775: 0: ! 7776: ! 7777: /^(?=a(*SKIP)b|ac)/ ! 7778: ** Failers ! 7779: No match ! 7780: ac ! 7781: No match ! 7782: ! 7783: /^(?=a(*THEN)b|ac)/ ! 7784: ac ! 7785: 0: ! 7786: ! 7787: /^(?=a(*PRUNE)b)/ ! 7788: ab ! 7789: 0: ! 7790: ** Failers ! 7791: No match ! 7792: ac ! 7793: No match ! 7794: ! 7795: /^(?=a(*ACCEPT)b)/ ! 7796: ac ! 7797: 0: ! 7798: ! 7799: /^(?(?!a(*SKIP)b))/ ! 7800: ac ! 7801: 0: ! 7802: ! 7803: /(?>a\Kb)/ ! 7804: ab ! 7805: 0: b ! 7806: ! 7807: /((?>a\Kb))/ ! 7808: ab ! 7809: 0: b ! 7810: 1: ab ! 7811: ! 7812: /(a\Kb)/ ! 7813: ab ! 7814: 0: b ! 7815: 1: ab ! 7816: ! 7817: /^a\Kcz|ac/ ! 7818: ac ! 7819: 0: ac ! 7820: ! 7821: /(?>a\Kbz|ab)/ ! 7822: ab ! 7823: 0: ab ! 7824: ! 7825: /^(?&t)(?(DEFINE)(?<t>a\Kb))$/ ! 7826: ab ! 7827: 0: b ! 7828: ! 7829: /^([^()]|\((?1)*\))*$/ ! 7830: a(b)c ! 7831: 0: a(b)c ! 7832: 1: c ! 7833: a(b(c)d)e ! 7834: 0: a(b(c)d)e ! 7835: 1: e ! 7836: ! 7837: /(?P<L1>(?P<L2>0)(?P>L1)|(?P>L2))/ ! 7838: 0 ! 7839: 0: 0 ! 7840: 1: 0 ! 7841: 00 ! 7842: 0: 00 ! 7843: 1: 00 ! 7844: 2: 0 ! 7845: 0000 ! 7846: 0: 0000 ! 7847: 1: 0000 ! 7848: 2: 0 ! 7849: ! 7850: /(?P<L1>(?P<L2>0)|(?P>L2)(?P>L1))/ ! 7851: 0 ! 7852: 0: 0 ! 7853: 1: 0 ! 7854: 2: 0 ! 7855: 00 ! 7856: 0: 0 ! 7857: 1: 0 ! 7858: 2: 0 ! 7859: 0000 ! 7860: 0: 0 ! 7861: 1: 0 ! 7862: 2: 0 ! 7863: ! 7864: /--- This one does fail, as expected, in Perl. It needs the complex item at the ! 7865: end of the pattern. A single letter instead of (B|D) makes it not fail, ! 7866: which I think is a Perl bug. --- / ! 7867: ! 7868: /A(*COMMIT)(B|D)/ ! 7869: ACABX ! 7870: No match ! 7871: ! 7872: /--- Check the use of names for failure ---/ ! 7873: ! 7874: /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K ! 7875: ** Failers ! 7876: No match ! 7877: AC ! 7878: No match, mark = A ! 7879: CB ! 7880: No match, mark = B ! 7881: ! 7882: /--- Force no study, otherwise mark is not seen. The studied version is in ! 7883: test 2 because it isn't Perl-compatible. ---/ ! 7884: ! 7885: /(*MARK:A)(*SKIP:B)(C|X)/KSS ! 7886: C ! 7887: 0: C ! 7888: 1: C ! 7889: MK: A ! 7890: D ! 7891: No match, mark = A ! 7892: ! 7893: /^(A(*THEN:A)B|C(*THEN:B)D)/K ! 7894: ** Failers ! 7895: No match ! 7896: CB ! 7897: No match, mark = B ! 7898: ! 7899: /^(?:A(*THEN:A)B|C(*THEN:B)D)/K ! 7900: CB ! 7901: No match, mark = B ! 7902: ! 7903: /^(?>A(*THEN:A)B|C(*THEN:B)D)/K ! 7904: CB ! 7905: No match, mark = B ! 7906: ! 7907: /--- This should succeed, as the skip causes bump to offset 1 (the mark). Note ! 7908: that we have to have something complicated such as (B|Z) at the end because, ! 7909: for Perl, a simple character somehow causes an unwanted optimization to mess ! 7910: with the handling of backtracking verbs. ---/ ! 7911: ! 7912: /A(*MARK:A)A+(*SKIP:A)(B|Z) | AC/xK ! 7913: AAAC ! 7914: 0: AC ! 7915: ! 7916: /--- Test skipping over a non-matching mark. ---/ ! 7917: ! 7918: /A(*MARK:A)A+(*MARK:B)(*SKIP:A)(B|Z) | AC/xK ! 7919: AAAC ! 7920: 0: AC ! 7921: ! 7922: /--- Check shorthand for MARK ---/ ! 7923: ! 7924: /A(*:A)A+(*SKIP:A)(B|Z) | AC/xK ! 7925: AAAC ! 7926: 0: AC ! 7927: ! 7928: /--- Don't loop! Force no study, otherwise mark is not seen. ---/ ! 7929: ! 7930: /(*:A)A+(*SKIP:A)(B|Z)/KSS ! 7931: AAAC ! 7932: No match, mark = A ! 7933: ! 7934: /--- This should succeed, as a non-existent skip name disables the skip ---/ ! 7935: ! 7936: /A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/xK ! 7937: AAAC ! 7938: 0: AC ! 7939: ! 7940: /A(*MARK:A)A+(*SKIP:B)(B|Z) | AC(*:B)/xK ! 7941: AAAC ! 7942: 0: AC ! 7943: MK: B ! 7944: ! 7945: /--- COMMIT at the start of a pattern should act like an anchor. Again, ! 7946: however, we need the complication for Perl. ---/ ! 7947: ! 7948: /(*COMMIT)(A|P)(B|P)(C|P)/ ! 7949: ABCDEFG ! 7950: 0: ABC ! 7951: 1: A ! 7952: 2: B ! 7953: 3: C ! 7954: ** Failers ! 7955: No match ! 7956: DEFGABC ! 7957: No match ! 7958: ! 7959: /--- COMMIT inside an atomic group can't stop backtracking over the group. ---/ ! 7960: ! 7961: /(\w+)(?>b(*COMMIT))\w{2}/ ! 7962: abbb ! 7963: 0: abbb ! 7964: 1: a ! 7965: ! 7966: /(\w+)b(*COMMIT)\w{2}/ ! 7967: abbb ! 7968: No match ! 7969: ! 7970: /--- Check opening parens in comment when seeking forward reference. ---/ ! 7971: ! 7972: /(?&t)(?#()(?(DEFINE)(?<t>a))/ ! 7973: bac ! 7974: 0: a ! 7975: ! 7976: /--- COMMIT should override THEN ---/ ! 7977: ! 7978: /(?>(*COMMIT)(?>yes|no)(*THEN)(*F))?/ ! 7979: yes ! 7980: No match ! 7981: ! 7982: /(?>(*COMMIT)(yes|no)(*THEN)(*F))?/ ! 7983: yes ! 7984: No match ! 7985: ! 7986: /b?(*SKIP)c/ ! 7987: bc ! 7988: 0: bc ! 7989: abc ! 7990: 0: bc ! 7991: ! 7992: /(*SKIP)bc/ ! 7993: a ! 7994: No match ! 7995: ! 7996: /(*SKIP)b/ ! 7997: a ! 7998: No match ! 7999: ! 8000: /(?P<abn>(?P=abn)xxx|)+/ ! 8001: xxx ! 8002: 0: ! 8003: 1: ! 8004: ! 8005: /(?i:([^b]))(?1)/ ! 8006: aa ! 8007: 0: aa ! 8008: 1: a ! 8009: aA ! 8010: 0: aA ! 8011: 1: a ! 8012: ** Failers ! 8013: 0: ** ! 8014: 1: * ! 8015: ab ! 8016: No match ! 8017: aB ! 8018: No match ! 8019: Ba ! 8020: No match ! 8021: ba ! 8022: No match ! 8023: ! 8024: /^(?&t)*+(?(DEFINE)(?<t>a))\w$/ ! 8025: aaaaaaX ! 8026: 0: aaaaaaX ! 8027: ** Failers ! 8028: No match ! 8029: aaaaaa ! 8030: No match ! 8031: ! 8032: /^(?&t)*(?(DEFINE)(?<t>a))\w$/ ! 8033: aaaaaaX ! 8034: 0: aaaaaaX ! 8035: aaaaaa ! 8036: 0: aaaaaa ! 8037: ! 8038: /^(a)*+(\w)/ ! 8039: aaaaX ! 8040: 0: aaaaX ! 8041: 1: a ! 8042: 2: X ! 8043: YZ ! 8044: 0: Y ! 8045: 1: <unset> ! 8046: 2: Y ! 8047: ** Failers ! 8048: No match ! 8049: aaaa ! 8050: No match ! 8051: ! 8052: /^(?:a)*+(\w)/ ! 8053: aaaaX ! 8054: 0: aaaaX ! 8055: 1: X ! 8056: YZ ! 8057: 0: Y ! 8058: 1: Y ! 8059: ** Failers ! 8060: No match ! 8061: aaaa ! 8062: No match ! 8063: ! 8064: /^(a)++(\w)/ ! 8065: aaaaX ! 8066: 0: aaaaX ! 8067: 1: a ! 8068: 2: X ! 8069: ** Failers ! 8070: No match ! 8071: aaaa ! 8072: No match ! 8073: YZ ! 8074: No match ! 8075: ! 8076: /^(?:a)++(\w)/ ! 8077: aaaaX ! 8078: 0: aaaaX ! 8079: 1: X ! 8080: ** Failers ! 8081: No match ! 8082: aaaa ! 8083: No match ! 8084: YZ ! 8085: No match ! 8086: ! 8087: /^(a)?+(\w)/ ! 8088: aaaaX ! 8089: 0: aa ! 8090: 1: a ! 8091: 2: a ! 8092: YZ ! 8093: 0: Y ! 8094: 1: <unset> ! 8095: 2: Y ! 8096: ! 8097: /^(?:a)?+(\w)/ ! 8098: aaaaX ! 8099: 0: aa ! 8100: 1: a ! 8101: YZ ! 8102: 0: Y ! 8103: 1: Y ! 8104: ! 8105: /^(a){2,}+(\w)/ ! 8106: aaaaX ! 8107: 0: aaaaX ! 8108: 1: a ! 8109: 2: X ! 8110: ** Failers ! 8111: No match ! 8112: aaa ! 8113: No match ! 8114: YZ ! 8115: No match ! 8116: ! 8117: /^(?:a){2,}+(\w)/ ! 8118: aaaaX ! 8119: 0: aaaaX ! 8120: 1: X ! 8121: ** Failers ! 8122: No match ! 8123: aaa ! 8124: No match ! 8125: YZ ! 8126: No match ! 8127: ! 8128: /(a|)*(?1)b/ ! 8129: b ! 8130: 0: b ! 8131: 1: ! 8132: ab ! 8133: 0: ab ! 8134: 1: ! 8135: aab ! 8136: 0: aab ! 8137: 1: ! 8138: ! 8139: /(a)++(?1)b/ ! 8140: ** Failers ! 8141: No match ! 8142: ab ! 8143: No match ! 8144: aab ! 8145: No match ! 8146: ! 8147: /(a)*+(?1)b/ ! 8148: ** Failers ! 8149: No match ! 8150: ab ! 8151: No match ! 8152: aab ! 8153: No match ! 8154: ! 8155: /(?1)(?:(b)){0}/ ! 8156: b ! 8157: 0: b ! 8158: ! 8159: /(foo ( \( ((?:(?> [^()]+ )|(?2))*) \) ) )/x ! 8160: foo(bar(baz)+baz(bop)) ! 8161: 0: foo(bar(baz)+baz(bop)) ! 8162: 1: foo(bar(baz)+baz(bop)) ! 8163: 2: (bar(baz)+baz(bop)) ! 8164: 3: bar(baz)+baz(bop) ! 8165: ! 8166: /(A (A|B(*ACCEPT)|C) D)(E)/x ! 8167: AB ! 8168: 0: AB ! 8169: 1: AB ! 8170: 2: B ! 8171: ! 8172: /\A.*?(?:a|b(*THEN)c)/ ! 8173: ba ! 8174: 0: ba ! 8175: ! 8176: /\A.*?(?:a|bc)/ ! 8177: ba ! 8178: 0: ba ! 8179: ! 8180: /\A.*?(a|b(*THEN)c)/ ! 8181: ba ! 8182: 0: ba ! 8183: 1: a ! 8184: ! 8185: /\A.*?(a|bc)/ ! 8186: ba ! 8187: 0: ba ! 8188: 1: a ! 8189: ! 8190: /\A.*?(?:a|b(*THEN)c)++/ ! 8191: ba ! 8192: 0: ba ! 8193: ! 8194: /\A.*?(?:a|bc)++/ ! 8195: ba ! 8196: 0: ba ! 8197: ! 8198: /\A.*?(a|b(*THEN)c)++/ ! 8199: ba ! 8200: 0: ba ! 8201: 1: a ! 8202: ! 8203: /\A.*?(a|bc)++/ ! 8204: ba ! 8205: 0: ba ! 8206: 1: a ! 8207: ! 8208: /\A.*?(?:a|b(*THEN)c|d)/ ! 8209: ba ! 8210: 0: ba ! 8211: ! 8212: /\A.*?(?:a|bc|d)/ ! 8213: ba ! 8214: 0: ba ! 8215: ! 8216: /(?:(b))++/ ! 8217: beetle ! 8218: 0: b ! 8219: 1: b ! 8220: ! 8221: /(?(?=(a(*ACCEPT)z))a)/ ! 8222: a ! 8223: 0: a ! 8224: 1: a ! 8225: ! 8226: /^(a)(?1)+ab/ ! 8227: aaaab ! 8228: 0: aaaab ! 8229: 1: a ! 8230: ! 8231: /^(a)(?1)++ab/ ! 8232: aaaab ! 8233: No match ! 8234: ! 8235: /^(?=a(*:M))aZ/K ! 8236: aZbc ! 8237: 0: aZ ! 8238: MK: M ! 8239: ! 8240: /^(?!(*:M)b)aZ/K ! 8241: aZbc ! 8242: 0: aZ ! 8243: ! 8244: /(?(DEFINE)(a))?b(?1)/ ! 8245: backgammon ! 8246: 0: ba ! 8247: ! 8248: /^\N+/ ! 8249: abc\ndef ! 8250: 0: abc ! 8251: ! 8252: /^\N{1,}/ ! 8253: abc\ndef ! 8254: 0: abc ! 8255: ! 8256: /(?(R)a+|(?R)b)/ ! 8257: aaaabcde ! 8258: 0: aaaab ! 8259: ! 8260: /(?(R)a+|((?R))b)/ ! 8261: aaaabcde ! 8262: 0: aaaab ! 8263: 1: aaaa ! 8264: ! 8265: /((?(R)a+|(?1)b))/ ! 8266: aaaabcde ! 8267: 0: aaaab ! 8268: 1: aaaab ! 8269: ! 8270: /((?(R1)a+|(?1)b))/ ! 8271: aaaabcde ! 8272: 0: aaaab ! 8273: 1: aaaab ! 8274: ! 8275: /a(*:any ! 8276: name)/K ! 8277: abc ! 8278: 0: a ! 8279: MK: any \x0aname ! 8280: ! 8281: /(?>(?&t)c|(?&t))(?(DEFINE)(?<t>a|b(*PRUNE)c))/ ! 8282: a ! 8283: 0: a ! 8284: ba ! 8285: 0: a ! 8286: bba ! 8287: 0: a ! 8288: ! 8289: /--- Checking revised (*THEN) handling ---/ ! 8290: ! 8291: /--- Capture ---/ ! 8292: ! 8293: /^.*? (a(*THEN)b) c/x ! 8294: aabc ! 8295: No match ! 8296: ! 8297: /^.*? (a(*THEN)b|(*F)) c/x ! 8298: aabc ! 8299: 0: aabc ! 8300: 1: ab ! 8301: ! 8302: /^.*? ( (a(*THEN)b) | (*F) ) c/x ! 8303: aabc ! 8304: 0: aabc ! 8305: 1: ab ! 8306: 2: ab ! 8307: ! 8308: /^.*? ( (a(*THEN)b) ) c/x ! 8309: aabc ! 8310: No match ! 8311: ! 8312: /--- Non-capture ---/ ! 8313: ! 8314: /^.*? (?:a(*THEN)b) c/x ! 8315: aabc ! 8316: No match ! 8317: ! 8318: /^.*? (?:a(*THEN)b|(*F)) c/x ! 8319: aabc ! 8320: 0: aabc ! 8321: ! 8322: /^.*? (?: (?:a(*THEN)b) | (*F) ) c/x ! 8323: aabc ! 8324: 0: aabc ! 8325: ! 8326: /^.*? (?: (?:a(*THEN)b) ) c/x ! 8327: aabc ! 8328: No match ! 8329: ! 8330: /--- Atomic ---/ ! 8331: ! 8332: /^.*? (?>a(*THEN)b) c/x ! 8333: aabc ! 8334: No match ! 8335: ! 8336: /^.*? (?>a(*THEN)b|(*F)) c/x ! 8337: aabc ! 8338: 0: aabc ! 8339: ! 8340: /^.*? (?> (?>a(*THEN)b) | (*F) ) c/x ! 8341: aabc ! 8342: 0: aabc ! 8343: ! 8344: /^.*? (?> (?>a(*THEN)b) ) c/x ! 8345: aabc ! 8346: No match ! 8347: ! 8348: /--- Possessive capture ---/ ! 8349: ! 8350: /^.*? (a(*THEN)b)++ c/x ! 8351: aabc ! 8352: No match ! 8353: ! 8354: /^.*? (a(*THEN)b|(*F))++ c/x ! 8355: aabc ! 8356: 0: aabc ! 8357: 1: ab ! 8358: ! 8359: /^.*? ( (a(*THEN)b)++ | (*F) )++ c/x ! 8360: aabc ! 8361: 0: aabc ! 8362: 1: ab ! 8363: 2: ab ! 8364: ! 8365: /^.*? ( (a(*THEN)b)++ )++ c/x ! 8366: aabc ! 8367: No match ! 8368: ! 8369: /--- Possessive non-capture ---/ ! 8370: ! 8371: /^.*? (?:a(*THEN)b)++ c/x ! 8372: aabc ! 8373: No match ! 8374: ! 8375: /^.*? (?:a(*THEN)b|(*F))++ c/x ! 8376: aabc ! 8377: 0: aabc ! 8378: ! 8379: /^.*? (?: (?:a(*THEN)b)++ | (*F) )++ c/x ! 8380: aabc ! 8381: 0: aabc ! 8382: ! 8383: /^.*? (?: (?:a(*THEN)b)++ )++ c/x ! 8384: aabc ! 8385: No match ! 8386: ! 8387: /--- Condition assertion ---/ ! 8388: ! 8389: /^(?(?=a(*THEN)b)ab|ac)/ ! 8390: ac ! 8391: 0: ac ! 8392: ! 8393: /--- Condition ---/ ! 8394: ! 8395: /^.*?(?(?=a)a|b(*THEN)c)/ ! 8396: ba ! 8397: No match ! 8398: ! 8399: /^.*?(?:(?(?=a)a|b(*THEN)c)|d)/ ! 8400: ba ! 8401: 0: ba ! 8402: ! 8403: /^.*?(?(?=a)a(*THEN)b|c)/ ! 8404: ac ! 8405: No match ! 8406: ! 8407: /--- Assertion ---/ ! 8408: ! 8409: /^.*(?=a(*THEN)b)/ ! 8410: aabc ! 8411: 0: a ! 8412: ! 8413: /------------------------------/ ! 8414: ! 8415: /(?>a(*:m))/imsxSK ! 8416: a ! 8417: 0: a ! 8418: MK: m ! 8419: ! 8420: /(?>(a)(*:m))/imsxSK ! 8421: a ! 8422: 0: a ! 8423: 1: a ! 8424: MK: m ! 8425: ! 8426: /(?<=a(*ACCEPT)b)c/ ! 8427: xacd ! 8428: 0: c ! 8429: ! 8430: /(?<=(a(*ACCEPT)b))c/ ! 8431: xacd ! 8432: 0: c ! 8433: 1: a ! 8434: ! 8435: /(?<=(a(*COMMIT)b))c/ ! 8436: xabcd ! 8437: 0: c ! 8438: 1: ab ! 8439: ** Failers ! 8440: No match ! 8441: xacd ! 8442: No match ! 8443: ! 8444: /(?<!a(*FAIL)b)c/ ! 8445: xcd ! 8446: 0: c ! 8447: acd ! 8448: 0: c ! 8449: ! 8450: /(?<=a(*:N)b)c/K ! 8451: xabcd ! 8452: 0: c ! 8453: MK: N ! 8454: ! 8455: /(?<=a(*PRUNE)b)c/ ! 8456: xabcd ! 8457: 0: c ! 8458: ! 8459: /(?<=a(*SKIP)b)c/ ! 8460: xabcd ! 8461: 0: c ! 8462: ! 8463: /(?<=a(*THEN)b)c/ ! 8464: xabcd ! 8465: 0: c ! 8466: ! 8467: /(a)(?2){2}(.)/ ! 8468: abcd ! 8469: 0: abcd ! 8470: 1: a ! 8471: 2: d ! 8472: ! 8473: /(*MARK:A)(*PRUNE:B)(C|X)/KS ! 8474: C ! 8475: 0: C ! 8476: 1: C ! 8477: MK: B ! 8478: D ! 8479: No match, mark = B ! 8480: ! 8481: /(*MARK:A)(*PRUNE:B)(C|X)/KSS ! 8482: C ! 8483: 0: C ! 8484: 1: C ! 8485: MK: B ! 8486: D ! 8487: No match, mark = B ! 8488: ! 8489: /(*MARK:A)(*THEN:B)(C|X)/KS ! 8490: C ! 8491: 0: C ! 8492: 1: C ! 8493: MK: B ! 8494: D ! 8495: No match, mark = B ! 8496: ! 8497: /(*MARK:A)(*THEN:B)(C|X)/KSY ! 8498: C ! 8499: 0: C ! 8500: 1: C ! 8501: MK: B ! 8502: D ! 8503: No match, mark = B ! 8504: ! 8505: /(*MARK:A)(*THEN:B)(C|X)/KSS ! 8506: C ! 8507: 0: C ! 8508: 1: C ! 8509: MK: B ! 8510: D ! 8511: No match, mark = B ! 8512: ! 8513: /--- This should fail, as the skip causes a bump to offset 3 (the skip) ---/ ! 8514: ! 8515: /A(*MARK:A)A+(*SKIP)(B|Z) | AC/xK ! 8516: AAAC ! 8517: No match, mark = A ! 8518: ! 8519: /--- Same --/ ! 8520: ! 8521: /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xK ! 8522: AAAC ! 8523: No match, mark = B ! 8524: ! 8525: /A(*:A)A+(*SKIP)(B|Z) | AC/xK ! 8526: AAAC ! 8527: No match, mark = A ! 8528: ! 8529: /--- This should fail, as a null name is the same as no name ---/ ! 8530: ! 8531: /A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xK ! 8532: AAAC ! 8533: No match, mark = A ! 8534: ! 8535: /--- A check on what happens after hitting a mark and them bumping along to ! 8536: something that does not even start. Perl reports tags after the failures here, ! 8537: though it does not when the individual letters are made into something ! 8538: more complicated. ---/ ! 8539: ! 8540: /A(*:A)B|XX(*:B)Y/K ! 8541: AABC ! 8542: 0: AB ! 8543: MK: A ! 8544: XXYZ ! 8545: 0: XXY ! 8546: MK: B ! 8547: ** Failers ! 8548: No match ! 8549: XAQQ ! 8550: No match, mark = A ! 8551: XAQQXZZ ! 8552: No match, mark = A ! 8553: AXQQQ ! 8554: No match, mark = A ! 8555: AXXQQQ ! 8556: No match, mark = B ! 8557: ! 8558: /^(A(*THEN:A)B|C(*THEN:B)D)/K ! 8559: AB ! 8560: 0: AB ! 8561: 1: AB ! 8562: MK: A ! 8563: CD ! 8564: 0: CD ! 8565: 1: CD ! 8566: MK: B ! 8567: ** Failers ! 8568: No match ! 8569: AC ! 8570: No match, mark = A ! 8571: CB ! 8572: No match, mark = B ! 8573: ! 8574: /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K ! 8575: AB ! 8576: 0: AB ! 8577: 1: AB ! 8578: MK: A ! 8579: CD ! 8580: 0: CD ! 8581: 1: CD ! 8582: MK: B ! 8583: ** Failers ! 8584: No match ! 8585: AC ! 8586: No match, mark = A ! 8587: CB ! 8588: No match, mark = B ! 8589: ! 8590: /--- An empty name does not pass back an empty string. It is the same as if no ! 8591: name were given. ---/ ! 8592: ! 8593: /^(A(*PRUNE:)B|C(*PRUNE:B)D)/K ! 8594: AB ! 8595: 0: AB ! 8596: 1: AB ! 8597: CD ! 8598: 0: CD ! 8599: 1: CD ! 8600: MK: B ! 8601: ! 8602: /--- PRUNE goes to next bumpalong; COMMIT does not. ---/ ! 8603: ! 8604: /A(*PRUNE:A)B/K ! 8605: ACAB ! 8606: 0: AB ! 8607: MK: A ! 8608: ! 8609: /--- Mark names can be duplicated ---/ ! 8610: ! 8611: /A(*:A)B|X(*:A)Y/K ! 8612: AABC ! 8613: 0: AB ! 8614: MK: A ! 8615: XXYZ ! 8616: 0: XY ! 8617: MK: A ! 8618: ! 8619: /b(*:m)f|a(*:n)w/K ! 8620: aw ! 8621: 0: aw ! 8622: MK: n ! 8623: ** Failers ! 8624: No match, mark = n ! 8625: abc ! 8626: No match, mark = m ! 8627: ! 8628: /b(*:m)f|aw/K ! 8629: abaw ! 8630: 0: aw ! 8631: ** Failers ! 8632: No match ! 8633: abc ! 8634: No match, mark = m ! 8635: abax ! 8636: No match, mark = m ! 8637: ! 8638: /A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xK ! 8639: AAAC ! 8640: 0: AAC ! 8641: ! 8642: /a(*PRUNE:X)bc|qq/KY ! 8643: ** Failers ! 8644: No match, mark = X ! 8645: axy ! 8646: No match, mark = X ! 8647: ! 8648: /a(*THEN:X)bc|qq/KY ! 8649: ** Failers ! 8650: No match, mark = X ! 8651: axy ! 8652: No match, mark = X ! 8653: ! 8654: /(?=a(*MARK:A)b)..x/K ! 8655: abxy ! 8656: 0: abx ! 8657: MK: A ! 8658: ** Failers ! 8659: No match ! 8660: abpq ! 8661: No match ! 8662: ! 8663: /(?=a(*MARK:A)b)..(*:Y)x/K ! 8664: abxy ! 8665: 0: abx ! 8666: MK: Y ! 8667: ** Failers ! 8668: No match ! 8669: abpq ! 8670: No match ! 8671: ! 8672: /(?=a(*PRUNE:A)b)..x/K ! 8673: abxy ! 8674: 0: abx ! 8675: MK: A ! 8676: ** Failers ! 8677: No match ! 8678: abpq ! 8679: No match ! 8680: ! 8681: /(?=a(*PRUNE:A)b)..(*:Y)x/K ! 8682: abxy ! 8683: 0: abx ! 8684: MK: Y ! 8685: ** Failers ! 8686: No match ! 8687: abpq ! 8688: No match ! 8689: ! 8690: /(?=a(*THEN:A)b)..x/K ! 8691: abxy ! 8692: 0: abx ! 8693: MK: A ! 8694: ** Failers ! 8695: No match ! 8696: abpq ! 8697: No match ! 8698: ! 8699: /(?=a(*THEN:A)b)..(*:Y)x/K ! 8700: abxy ! 8701: 0: abx ! 8702: MK: Y ! 8703: ** Failers ! 8704: No match ! 8705: abpq ! 8706: No match ! 8707: ! 8708: /(another)?(\1?)test/ ! 8709: hello world test ! 8710: 0: test ! 8711: 1: <unset> ! 8712: 2: ! 8713: ! 8714: /(another)?(\1+)test/ ! 8715: hello world test ! 8716: No match ! 8717: ! 8718: /(a(*COMMIT)b){0}a(?1)|aac/ ! 8719: aac ! 8720: 0: aac ! 8721: ! 8722: /(?!a(*COMMIT)b)ac|cd/ ! 8723: ac ! 8724: 0: ac ! 8725: ! 8726: /((?:a?)*)*c/ ! 8727: aac ! 8728: 0: aac ! 8729: 1: ! 8730: ! 8731: /((?>a?)*)*c/ ! 8732: aac ! 8733: 0: aac ! 8734: 1: ! 8735: ! 8736: /(?>.*?a)(?<=ba)/ ! 8737: aba ! 8738: 0: ba ! 8739: ! 8740: /(?:.*?a)(?<=ba)/ ! 8741: aba ! 8742: 0: aba ! 8743: ! 8744: /.*?a(*PRUNE)b/ ! 8745: aab ! 8746: 0: ab ! 8747: ! 8748: /.*?a(*PRUNE)b/s ! 8749: aab ! 8750: 0: ab ! 8751: ! 8752: /^a(*PRUNE)b/s ! 8753: aab ! 8754: No match ! 8755: ! 8756: /.*?a(*SKIP)b/ ! 8757: aab ! 8758: 0: ab ! 8759: ! 8760: /(?>.*?a)b/s ! 8761: aab ! 8762: 0: ab ! 8763: ! 8764: /(?>.*?a)b/ ! 8765: aab ! 8766: 0: ab ! 8767: ! 8768: /(?>^a)b/s ! 8769: aab ! 8770: No match ! 8771: ! 8772: /(?>.*?)(?<=(abcd)|(wxyz))/ ! 8773: alphabetabcd ! 8774: 0: ! 8775: 1: abcd ! 8776: endingwxyz ! 8777: 0: ! 8778: 1: <unset> ! 8779: 2: wxyz ! 8780: ! 8781: /(?>.*)(?<=(abcd)|(wxyz))/ ! 8782: alphabetabcd ! 8783: 0: alphabetabcd ! 8784: 1: abcd ! 8785: endingwxyz ! 8786: 0: endingwxyz ! 8787: 1: <unset> ! 8788: 2: wxyz ! 8789: ! 8790: "(?>.*)foo" ! 8791: abcdfooxyz ! 8792: No match ! 8793: ! 8794: "(?>.*?)foo" ! 8795: abcdfooxyz ! 8796: 0: foo ! 8797: 1.1 misho 8798: /-- End of testinput1 --/