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