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