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