Annotation of embedaddon/php/ext/pcre/pcrelib/testdata/testinput8, revision 1.1.1.2
1.1.1.2 ! misho 1: /-- This set of tests check the DFA matching functionality of pcre_dfa_exec().
! 2: The -dfa flag must be used with pcretest when running it. --/
! 3:
! 4: /abc/
! 5: abc
! 6:
! 7: /ab*c/
! 8: abc
! 9: abbbbc
! 10: ac
! 11:
! 12: /ab+c/
! 13: abc
! 14: abbbbbbc
! 15: *** Failers
! 16: ac
! 17: ab
! 18:
! 19: /a*/
! 20: a
! 21: aaaaaaaaaaaaaaaaa
! 22: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
! 23: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\F
! 24:
! 25: /(a|abcd|african)/
! 26: a
! 27: abcd
! 28: african
! 29:
! 30: /^abc/
! 31: abcdef
! 32: *** Failers
! 33: xyzabc
! 34: xyz\nabc
! 35:
! 36: /^abc/m
! 37: abcdef
! 38: xyz\nabc
! 39: *** Failers
! 40: xyzabc
! 41:
! 42: /\Aabc/
! 43: abcdef
! 44: *** Failers
! 45: xyzabc
! 46: xyz\nabc
! 47:
! 48: /\Aabc/m
! 49: abcdef
! 50: *** Failers
! 51: xyzabc
! 52: xyz\nabc
! 53:
! 54: /\Gabc/
! 55: abcdef
! 56: xyzabc\>3
! 57: *** Failers
! 58: xyzabc
! 59: xyzabc\>2
! 60:
! 61: /x\dy\Dz/
! 62: x9yzz
! 63: x0y+z
! 64: *** Failers
! 65: xyz
! 66: xxy0z
! 67:
! 68: /x\sy\Sz/
! 69: x yzz
! 70: x y+z
! 71: *** Failers
! 72: xyz
! 73: xxyyz
! 74:
! 75: /x\wy\Wz/
! 76: xxy+z
! 77: *** Failers
! 78: xxy0z
! 79: x+y+z
! 80:
! 81: /x.y/
! 82: x+y
! 83: x-y
! 84: *** Failers
! 85: x\ny
! 86:
! 87: /x.y/s
! 88: x+y
! 89: x-y
! 90: x\ny
! 91:
! 92: /(a.b(?s)c.d|x.y)p.q/
! 93: a+bc+dp+q
! 94: a+bc\ndp+q
! 95: x\nyp+q
! 96: *** Failers
! 97: a\nbc\ndp+q
! 98: a+bc\ndp\nq
! 99: x\nyp\nq
! 100:
! 101: /a\d\z/
! 102: ba0
! 103: *** Failers
! 104: ba0\n
! 105: ba0\ncd
! 106:
! 107: /a\d\z/m
! 108: ba0
! 109: *** Failers
! 110: ba0\n
! 111: ba0\ncd
! 112:
! 113: /a\d\Z/
! 114: ba0
! 115: ba0\n
! 116: *** Failers
! 117: ba0\ncd
! 118:
! 119: /a\d\Z/m
! 120: ba0
! 121: ba0\n
! 122: *** Failers
! 123: ba0\ncd
! 124:
! 125: /a\d$/
! 126: ba0
! 127: ba0\n
! 128: *** Failers
! 129: ba0\ncd
! 130:
! 131: /a\d$/m
! 132: ba0
! 133: ba0\n
! 134: ba0\ncd
! 135: *** Failers
! 136:
! 137: /abc/i
! 138: abc
! 139: aBc
! 140: ABC
! 141:
! 142: /[^a]/
! 143: abcd
! 144:
! 145: /ab?\w/
! 146: abz
! 147: abbz
! 148: azz
! 149:
! 150: /x{0,3}yz/
! 151: ayzq
! 152: axyzq
! 153: axxyz
! 154: axxxyzq
! 155: axxxxyzq
! 156: *** Failers
! 157: ax
! 158: axx
! 159:
! 160: /x{3}yz/
! 161: axxxyzq
! 162: axxxxyzq
! 163: *** Failers
! 164: ax
! 165: axx
! 166: ayzq
! 167: axyzq
! 168: axxyz
! 169:
! 170: /x{2,3}yz/
! 171: axxyz
! 172: axxxyzq
! 173: axxxxyzq
! 174: *** Failers
! 175: ax
! 176: axx
! 177: ayzq
! 178: axyzq
! 179:
! 180: /[^a]+/
! 181: bac
! 182: bcdefax
! 183: *** Failers
! 184: aaaaa
! 185:
! 186: /[^a]*/
! 187: bac
! 188: bcdefax
! 189: *** Failers
! 190: aaaaa
! 191:
! 192: /[^a]{3,5}/
! 193: xyz
! 194: awxyza
! 195: abcdefa
! 196: abcdefghijk
! 197: *** Failers
! 198: axya
! 199: axa
! 200: aaaaa
! 201:
! 202: /\d*/
! 203: 1234b567
! 204: xyz
! 205:
! 206: /\D*/
! 207: a1234b567
! 208: xyz
! 209:
! 210: /\d+/
! 211: ab1234c56
! 212: *** Failers
! 213: xyz
! 214:
! 215: /\D+/
! 216: ab123c56
! 217: *** Failers
! 218: 789
! 219:
! 220: /\d?A/
! 221: 045ABC
! 222: ABC
! 223: *** Failers
! 224: XYZ
! 225:
! 226: /\D?A/
! 227: ABC
! 228: BAC
! 229: 9ABC
! 230: *** Failers
! 231:
! 232: /a+/
! 233: aaaa
! 234:
! 235: /^.*xyz/
! 236: xyz
! 237: ggggggggxyz
! 238:
! 239: /^.+xyz/
! 240: abcdxyz
! 241: axyz
! 242: *** Failers
! 243: xyz
! 244:
! 245: /^.?xyz/
! 246: xyz
! 247: cxyz
! 248:
! 249: /^\d{2,3}X/
! 250: 12X
! 251: 123X
! 252: *** Failers
! 253: X
! 254: 1X
! 255: 1234X
! 256:
! 257: /^[abcd]\d/
! 258: a45
! 259: b93
! 260: c99z
! 261: d04
! 262: *** Failers
! 263: e45
! 264: abcd
! 265: abcd1234
! 266: 1234
! 267:
! 268: /^[abcd]*\d/
! 269: a45
! 270: b93
! 271: c99z
! 272: d04
! 273: abcd1234
! 274: 1234
! 275: *** Failers
! 276: e45
! 277: abcd
! 278:
! 279: /^[abcd]+\d/
! 280: a45
! 281: b93
! 282: c99z
! 283: d04
! 284: abcd1234
! 285: *** Failers
! 286: 1234
! 287: e45
! 288: abcd
! 289:
! 290: /^a+X/
! 291: aX
! 292: aaX
! 293:
! 294: /^[abcd]?\d/
! 295: a45
! 296: b93
! 297: c99z
! 298: d04
! 299: 1234
! 300: *** Failers
! 301: abcd1234
! 302: e45
! 303:
! 304: /^[abcd]{2,3}\d/
! 305: ab45
! 306: bcd93
! 307: *** Failers
! 308: 1234
! 309: a36
! 310: abcd1234
! 311: ee45
! 312:
! 313: /^(abc)*\d/
! 314: abc45
! 315: abcabcabc45
! 316: 42xyz
! 317: *** Failers
! 318:
! 319: /^(abc)+\d/
! 320: abc45
! 321: abcabcabc45
! 322: *** Failers
! 323: 42xyz
! 324:
! 325: /^(abc)?\d/
! 326: abc45
! 327: 42xyz
! 328: *** Failers
! 329: abcabcabc45
! 330:
! 331: /^(abc){2,3}\d/
! 332: abcabc45
! 333: abcabcabc45
! 334: *** Failers
! 335: abcabcabcabc45
! 336: abc45
! 337: 42xyz
! 338:
! 339: /1(abc|xyz)2(?1)3/
! 340: 1abc2abc3456
! 341: 1abc2xyz3456
! 342:
! 343: /^(a*\w|ab)=(a*\w|ab)/
! 344: ab=ab
! 345:
! 346: /^(a*\w|ab)=(?1)/
! 347: ab=ab
! 348:
! 349: /^([^()]|\((?1)*\))*$/
! 350: abc
! 351: a(b)c
! 352: a(b(c))d
! 353: *** Failers)
! 354: a(b(c)d
! 355:
! 356: /^>abc>([^()]|\((?1)*\))*<xyz<$/
! 357: >abc>123<xyz<
! 358: >abc>1(2)3<xyz<
! 359: >abc>(1(2)3)<xyz<
! 360:
! 361: /^(?>a*)\d/
! 362: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9876
! 363: *** Failers
! 364: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
! 365:
! 366: /< (?: (?(R) \d++ | [^<>]*+) | (?R)) * >/x
! 367: <>
! 368: <abcd>
! 369: <abc <123> hij>
! 370: <abc <def> hij>
! 371: <abc<>def>
! 372: <abc<>
! 373: *** Failers
! 374: <abc
! 375:
! 376: /^(?(?=abc)\w{3}:|\d\d)$/
! 377: abc:
! 378: 12
! 379: *** Failers
! 380: 123
! 381: xyz
! 382:
! 383: /^(?(?!abc)\d\d|\w{3}:)$/
! 384: abc:
! 385: 12
! 386: *** Failers
! 387: 123
! 388: xyz
! 389:
! 390: /^(?=abc)\w{5}:$/
! 391: abcde:
! 392: *** Failers
! 393: abc..
! 394: 123
! 395: vwxyz
! 396:
! 397: /^(?!abc)\d\d$/
! 398: 12
! 399: *** Failers
! 400: abcde:
! 401: abc..
! 402: 123
! 403: vwxyz
! 404:
! 405: /(?<=abc|xy)123/
! 406: abc12345
! 407: wxy123z
! 408: *** Failers
! 409: 123abc
! 410:
! 411: /(?<!abc|xy)123/
! 412: 123abc
! 413: mno123456
! 414: *** Failers
! 415: abc12345
! 416: wxy123z
! 417:
! 418: /abc(?C1)xyz/
! 419: abcxyz
! 420: 123abcxyz999
! 421:
! 422: /(ab|cd){3,4}/C
! 423: ababab
! 424: abcdabcd
! 425: abcdcdcdcdcd
! 426:
! 427: /^abc/
! 428: abcdef
! 429: *** Failers
! 430: abcdef\B
! 431:
! 432: /^(a*|xyz)/
! 433: bcd
! 434: aaabcd
! 435: xyz
! 436: xyz\N
! 437: *** Failers
! 438: bcd\N
! 439:
! 440: /xyz$/
! 441: xyz
! 442: xyz\n
! 443: *** Failers
! 444: xyz\Z
! 445: xyz\n\Z
! 446:
! 447: /xyz$/m
! 448: xyz
! 449: xyz\n
! 450: abcxyz\npqr
! 451: abcxyz\npqr\Z
! 452: xyz\n\Z
! 453: *** Failers
! 454: xyz\Z
! 455:
! 456: /\Gabc/
! 457: abcdef
! 458: defabcxyz\>3
! 459: *** Failers
! 460: defabcxyz
! 461:
! 462: /^abcdef/
! 463: ab\P
! 464: abcde\P
! 465: abcdef\P
! 466: *** Failers
! 467: abx\P
! 468:
! 469: /^a{2,4}\d+z/
! 470: a\P
! 471: aa\P
! 472: aa2\P
! 473: aaa\P
! 474: aaa23\P
! 475: aaaa12345\P
! 476: aa0z\P
! 477: aaaa4444444444444z\P
! 478: *** Failers
! 479: az\P
! 480: aaaaa\P
! 481: a56\P
! 482:
! 483: /^abcdef/
! 484: abc\P
! 485: def\R
! 486:
! 487: /(?<=foo)bar/
! 488: xyzfo\P
! 489: foob\P\>2
! 490: foobar...\R\P\>4
! 491: xyzfo\P
! 492: foobar\>2
! 493: *** Failers
! 494: xyzfo\P
! 495: obar\R
! 496:
! 497: /(ab*(cd|ef))+X/
! 498: adfadadaklhlkalkajhlkjahdfasdfasdfladsfjkj\P\Z
! 499: lkjhlkjhlkjhlkjhabbbbbbcdaefabbbbbbbefa\P\B\Z
! 500: cdabbbbbbbb\P\R\B\Z
! 501: efabbbbbbbbbbbbbbbb\P\R\B\Z
! 502: bbbbbbbbbbbbcdXyasdfadf\P\R\B\Z
! 503:
! 504: /(a|b)/SF>testsavedregex
! 505: <testsavedregex
! 506: abc
! 507: ** Failers
! 508: def
! 509:
! 510: /the quick brown fox/
! 511: the quick brown fox
! 512: The quick brown FOX
! 513: What do you know about the quick brown fox?
! 514: What do you know about THE QUICK BROWN FOX?
! 515:
! 516: /The quick brown fox/i
! 517: the quick brown fox
! 518: The quick brown FOX
! 519: What do you know about the quick brown fox?
! 520: What do you know about THE QUICK BROWN FOX?
! 521:
! 522: /abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
! 523: abcd\t\n\r\f\a\e9;\$\\?caxyz
! 524:
! 525: /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
! 526: abxyzpqrrrabbxyyyypqAzz
! 527: abxyzpqrrrabbxyyyypqAzz
! 528: aabxyzpqrrrabbxyyyypqAzz
! 529: aaabxyzpqrrrabbxyyyypqAzz
! 530: aaaabxyzpqrrrabbxyyyypqAzz
! 531: abcxyzpqrrrabbxyyyypqAzz
! 532: aabcxyzpqrrrabbxyyyypqAzz
! 533: aaabcxyzpqrrrabbxyyyypAzz
! 534: aaabcxyzpqrrrabbxyyyypqAzz
! 535: aaabcxyzpqrrrabbxyyyypqqAzz
! 536: aaabcxyzpqrrrabbxyyyypqqqAzz
! 537: aaabcxyzpqrrrabbxyyyypqqqqAzz
! 538: aaabcxyzpqrrrabbxyyyypqqqqqAzz
! 539: aaabcxyzpqrrrabbxyyyypqqqqqqAzz
! 540: aaaabcxyzpqrrrabbxyyyypqAzz
! 541: abxyzzpqrrrabbxyyyypqAzz
! 542: aabxyzzzpqrrrabbxyyyypqAzz
! 543: aaabxyzzzzpqrrrabbxyyyypqAzz
! 544: aaaabxyzzzzpqrrrabbxyyyypqAzz
! 545: abcxyzzpqrrrabbxyyyypqAzz
! 546: aabcxyzzzpqrrrabbxyyyypqAzz
! 547: aaabcxyzzzzpqrrrabbxyyyypqAzz
! 548: aaaabcxyzzzzpqrrrabbxyyyypqAzz
! 549: aaaabcxyzzzzpqrrrabbbxyyyypqAzz
! 550: aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
! 551: aaabcxyzpqrrrabbxyyyypABzz
! 552: aaabcxyzpqrrrabbxyyyypABBzz
! 553: >>>aaabxyzpqrrrabbxyyyypqAzz
! 554: >aaaabxyzpqrrrabbxyyyypqAzz
! 555: >>>>abcxyzpqrrrabbxyyyypqAzz
! 556: *** Failers
! 557: abxyzpqrrabbxyyyypqAzz
! 558: abxyzpqrrrrabbxyyyypqAzz
! 559: abxyzpqrrrabxyyyypqAzz
! 560: aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
! 561: aaaabcxyzzzzpqrrrabbbxyyypqAzz
! 562: aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
! 563:
! 564: /^(abc){1,2}zz/
! 565: abczz
! 566: abcabczz
! 567: *** Failers
! 568: zz
! 569: abcabcabczz
! 570: >>abczz
! 571:
! 572: /^(b+?|a){1,2}?c/
! 573: bc
! 574: bbc
! 575: bbbc
! 576: bac
! 577: bbac
! 578: aac
! 579: abbbbbbbbbbbc
! 580: bbbbbbbbbbbac
! 581: *** Failers
! 582: aaac
! 583: abbbbbbbbbbbac
! 584:
! 585: /^(b+|a){1,2}c/
! 586: bc
! 587: bbc
! 588: bbbc
! 589: bac
! 590: bbac
! 591: aac
! 592: abbbbbbbbbbbc
! 593: bbbbbbbbbbbac
! 594: *** Failers
! 595: aaac
! 596: abbbbbbbbbbbac
! 597:
! 598: /^(b+|a){1,2}?bc/
! 599: bbc
! 600:
! 601: /^(b*|ba){1,2}?bc/
! 602: babc
! 603: bbabc
! 604: bababc
! 605: *** Failers
! 606: bababbc
! 607: babababc
! 608:
! 609: /^(ba|b*){1,2}?bc/
! 610: babc
! 611: bbabc
! 612: bababc
! 613: *** Failers
! 614: bababbc
! 615: babababc
! 616:
! 617: /^\ca\cA\c[\c{\c:/
! 618: \x01\x01\e;z
! 619:
! 620: /^[ab\]cde]/
! 621: athing
! 622: bthing
! 623: ]thing
! 624: cthing
! 625: dthing
! 626: ething
! 627: *** Failers
! 628: fthing
! 629: [thing
! 630: \\thing
! 631:
! 632: /^[]cde]/
! 633: ]thing
! 634: cthing
! 635: dthing
! 636: ething
! 637: *** Failers
! 638: athing
! 639: fthing
! 640:
! 641: /^[^ab\]cde]/
! 642: fthing
! 643: [thing
! 644: \\thing
! 645: *** Failers
! 646: athing
! 647: bthing
! 648: ]thing
! 649: cthing
! 650: dthing
! 651: ething
! 652:
! 653: /^[^]cde]/
! 654: athing
! 655: fthing
! 656: *** Failers
! 657: ]thing
! 658: cthing
! 659: dthing
! 660: ething
! 661:
! 662: /^\/
! 663:
! 664:
! 665: /^/
! 666:
! 667:
! 668: /^[0-9]+$/
! 669: 0
! 670: 1
! 671: 2
! 672: 3
! 673: 4
! 674: 5
! 675: 6
! 676: 7
! 677: 8
! 678: 9
! 679: 10
! 680: 100
! 681: *** Failers
! 682: abc
! 683:
! 684: /^.*nter/
! 685: enter
! 686: inter
! 687: uponter
! 688:
! 689: /^xxx[0-9]+$/
! 690: xxx0
! 691: xxx1234
! 692: *** Failers
! 693: xxx
! 694:
! 695: /^.+[0-9][0-9][0-9]$/
! 696: x123
! 697: xx123
! 698: 123456
! 699: *** Failers
! 700: 123
! 701: x1234
! 702:
! 703: /^.+?[0-9][0-9][0-9]$/
! 704: x123
! 705: xx123
! 706: 123456
! 707: *** Failers
! 708: 123
! 709: x1234
! 710:
! 711: /^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
! 712: abc!pqr=apquxz.ixr.zzz.ac.uk
! 713: *** Failers
! 714: !pqr=apquxz.ixr.zzz.ac.uk
! 715: abc!=apquxz.ixr.zzz.ac.uk
! 716: abc!pqr=apquxz:ixr.zzz.ac.uk
! 717: abc!pqr=apquxz.ixr.zzz.ac.ukk
! 718:
! 719: /:/
! 720: Well, we need a colon: somewhere
! 721: *** Fail if we don't
! 722:
! 723: /([\da-f:]+)$/i
! 724: 0abc
! 725: abc
! 726: fed
! 727: E
! 728: ::
! 729: 5f03:12C0::932e
! 730: fed def
! 731: Any old stuff
! 732: *** Failers
! 733: 0zzz
! 734: gzzz
! 735: fed\x20
! 736: Any old rubbish
! 737:
! 738: /^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
! 739: .1.2.3
! 740: A.12.123.0
! 741: *** Failers
! 742: .1.2.3333
! 743: 1.2.3
! 744: 1234.2.3
! 745:
! 746: /^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
! 747: 1 IN SOA non-sp1 non-sp2(
! 748: 1 IN SOA non-sp1 non-sp2 (
! 749: *** Failers
! 750: 1IN SOA non-sp1 non-sp2(
! 751:
! 752: /^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/
! 753: a.
! 754: Z.
! 755: 2.
! 756: ab-c.pq-r.
! 757: sxk.zzz.ac.uk.
! 758: x-.y-.
! 759: *** Failers
! 760: -abc.peq.
! 761:
! 762: /^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/
! 763: *.a
! 764: *.b0-a
! 765: *.c3-b.c
! 766: *.c-a.b-c
! 767: *** Failers
! 768: *.0
! 769: *.a-
! 770: *.a-b.c-
! 771: *.c-a.0-c
! 772:
! 773: /^(?=ab(de))(abd)(e)/
! 774: abde
! 775:
! 776: /^(?!(ab)de|x)(abd)(f)/
! 777: abdf
! 778:
! 779: /^(?=(ab(cd)))(ab)/
! 780: abcd
! 781:
! 782: /^[\da-f](\.[\da-f])*$/i
! 783: a.b.c.d
! 784: A.B.C.D
! 785: a.b.c.1.2.3.C
! 786:
! 787: /^\".*\"\s*(;.*)?$/
! 788: \"1234\"
! 789: \"abcd\" ;
! 790: \"\" ; rhubarb
! 791: *** Failers
! 792: \"1234\" : things
! 793:
! 794: /^$/
! 795: \
! 796: *** Failers
! 797:
! 798: / ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/x
! 799: ab c
! 800: *** Failers
! 801: abc
! 802: ab cde
! 803:
! 804: /(?x) ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/
! 805: ab c
! 806: *** Failers
! 807: abc
! 808: ab cde
! 809:
! 810: /^ a\ b[c ]d $/x
! 811: a bcd
! 812: a b d
! 813: *** Failers
! 814: abcd
! 815: ab d
! 816:
! 817: /^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
! 818: abcdefhijklm
! 819:
! 820: /^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
! 821: abcdefhijklm
! 822:
! 823: /^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
! 824: a+ Z0+\x08\n\x1d\x12
! 825:
! 826: /^[.^$|()*+?{,}]+/
! 827: .^\$(*+)|{?,?}
! 828:
! 829: /^a*\w/
! 830: z
! 831: az
! 832: aaaz
! 833: a
! 834: aa
! 835: aaaa
! 836: a+
! 837: aa+
! 838:
! 839: /^a*?\w/
! 840: z
! 841: az
! 842: aaaz
! 843: a
! 844: aa
! 845: aaaa
! 846: a+
! 847: aa+
! 848:
! 849: /^a+\w/
! 850: az
! 851: aaaz
! 852: aa
! 853: aaaa
! 854: aa+
! 855:
! 856: /^a+?\w/
! 857: az
! 858: aaaz
! 859: aa
! 860: aaaa
! 861: aa+
! 862:
! 863: /^\d{8}\w{2,}/
! 864: 1234567890
! 865: 12345678ab
! 866: 12345678__
! 867: *** Failers
! 868: 1234567
! 869:
! 870: /^[aeiou\d]{4,5}$/
! 871: uoie
! 872: 1234
! 873: 12345
! 874: aaaaa
! 875: *** Failers
! 876: 123456
! 877:
! 878: /^[aeiou\d]{4,5}?/
! 879: uoie
! 880: 1234
! 881: 12345
! 882: aaaaa
! 883: 123456
! 884:
! 885: /^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]/
! 886: From abcd Mon Sep 01 12:33:02 1997
! 887:
! 888: /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
! 889: From abcd Mon Sep 01 12:33:02 1997
! 890: From abcd Mon Sep 1 12:33:02 1997
! 891: *** Failers
! 892: From abcd Sep 01 12:33:02 1997
! 893:
! 894: /^12.34/s
! 895: 12\n34
! 896: 12\r34
! 897:
! 898: /\w+(?=\t)/
! 899: the quick brown\t fox
! 900:
! 901: /foo(?!bar)(.*)/
! 902: foobar is foolish see?
! 903:
! 904: /(?:(?!foo)...|^.{0,2})bar(.*)/
! 905: foobar crowbar etc
! 906: barrel
! 907: 2barrel
! 908: A barrel
! 909:
! 910: /^(\D*)(?=\d)(?!123)/
! 911: abc456
! 912: *** Failers
! 913: abc123
! 914:
! 915: /^1234(?# test newlines
! 916: inside)/
! 917: 1234
! 918:
! 919: /^1234 #comment in extended re
! 920: /x
! 921: 1234
! 922:
! 923: /#rhubarb
! 924: abcd/x
! 925: abcd
! 926:
! 927: /^abcd#rhubarb/x
! 928: abcd
! 929:
! 930: /(?!^)abc/
! 931: the abc
! 932: *** Failers
! 933: abc
! 934:
! 935: /(?=^)abc/
! 936: abc
! 937: *** Failers
! 938: the abc
! 939:
! 940: /^[ab]{1,3}(ab*|b)/
! 941: aabbbbb
! 942:
! 943: /^[ab]{1,3}?(ab*|b)/
! 944: aabbbbb
! 945:
! 946: /^[ab]{1,3}?(ab*?|b)/
! 947: aabbbbb
! 948:
! 949: /^[ab]{1,3}(ab*?|b)/
! 950: aabbbbb
! 951:
! 952: / (?: [\040\t] | \(
! 953: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
! 954: \) )* # optional leading comment
! 955: (?: (?:
! 956: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
! 957: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
! 958: |
! 959: " (?: # opening quote...
! 960: [^\\\x80-\xff\n\015"] # Anything except backslash and quote
! 961: | # or
! 962: \\ [^\x80-\xff] # Escaped something (something != CR)
! 963: )* " # closing quote
! 964: ) # initial word
! 965: (?: (?: [\040\t] | \(
! 966: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
! 967: \) )* \. (?: [\040\t] | \(
! 968: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
! 969: \) )* (?:
! 970: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
! 971: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
! 972: |
! 973: " (?: # opening quote...
! 974: [^\\\x80-\xff\n\015"] # Anything except backslash and quote
! 975: | # or
! 976: \\ [^\x80-\xff] # Escaped something (something != CR)
! 977: )* " # closing quote
! 978: ) )* # further okay, if led by a period
! 979: (?: [\040\t] | \(
! 980: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
! 981: \) )* @ (?: [\040\t] | \(
! 982: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
! 983: \) )* (?:
! 984: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
! 985: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
! 986: | \[ # [
! 987: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
! 988: \] # ]
! 989: ) # initial subdomain
! 990: (?: #
! 991: (?: [\040\t] | \(
! 992: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
! 993: \) )* \. # if led by a period...
! 994: (?: [\040\t] | \(
! 995: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
! 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: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
! 1001: \] # ]
! 1002: ) # ...further okay
! 1003: )*
! 1004: # address
! 1005: | # or
! 1006: (?:
! 1007: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
! 1008: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
! 1009: |
! 1010: " (?: # opening quote...
! 1011: [^\\\x80-\xff\n\015"] # Anything except backslash and quote
! 1012: | # or
! 1013: \\ [^\x80-\xff] # Escaped something (something != CR)
! 1014: )* " # closing quote
! 1015: ) # one word, optionally followed by....
! 1016: (?:
! 1017: [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] | # atom and space parts, or...
! 1018: \(
! 1019: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
! 1020: \) | # comments, or...
! 1021:
! 1022: " (?: # opening quote...
! 1023: [^\\\x80-\xff\n\015"] # Anything except backslash and quote
! 1024: | # or
! 1025: \\ [^\x80-\xff] # Escaped something (something != CR)
! 1026: )* " # closing quote
! 1027: # quoted strings
! 1028: )*
! 1029: < (?: [\040\t] | \(
! 1030: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
! 1031: \) )* # leading <
! 1032: (?: @ (?: [\040\t] | \(
! 1033: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
! 1034: \) )* (?:
! 1035: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
! 1036: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
! 1037: | \[ # [
! 1038: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
! 1039: \] # ]
! 1040: ) # initial subdomain
! 1041: (?: #
! 1042: (?: [\040\t] | \(
! 1043: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
! 1044: \) )* \. # if led by a period...
! 1045: (?: [\040\t] | \(
! 1046: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
! 1047: \) )* (?:
! 1048: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
! 1049: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
! 1050: | \[ # [
! 1051: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
! 1052: \] # ]
! 1053: ) # ...further okay
! 1054: )*
! 1055:
! 1056: (?: (?: [\040\t] | \(
! 1057: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
! 1058: \) )* , (?: [\040\t] | \(
! 1059: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
! 1060: \) )* @ (?: [\040\t] | \(
! 1061: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
! 1062: \) )* (?:
! 1063: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
! 1064: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
! 1065: | \[ # [
! 1066: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
! 1067: \] # ]
! 1068: ) # initial subdomain
! 1069: (?: #
! 1070: (?: [\040\t] | \(
! 1071: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
! 1072: \) )* \. # if led by a period...
! 1073: (?: [\040\t] | \(
! 1074: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
! 1075: \) )* (?:
! 1076: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
! 1077: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
! 1078: | \[ # [
! 1079: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
! 1080: \] # ]
! 1081: ) # ...further okay
! 1082: )*
! 1083: )* # further okay, if led by comma
! 1084: : # closing colon
! 1085: (?: [\040\t] | \(
! 1086: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
! 1087: \) )* )? # optional route
! 1088: (?:
! 1089: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
! 1090: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
! 1091: |
! 1092: " (?: # opening quote...
! 1093: [^\\\x80-\xff\n\015"] # Anything except backslash and quote
! 1094: | # or
! 1095: \\ [^\x80-\xff] # Escaped something (something != CR)
! 1096: )* " # closing quote
! 1097: ) # initial word
! 1098: (?: (?: [\040\t] | \(
! 1099: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
! 1100: \) )* \. (?: [\040\t] | \(
! 1101: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
! 1102: \) )* (?:
! 1103: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
! 1104: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
! 1105: |
! 1106: " (?: # opening quote...
! 1107: [^\\\x80-\xff\n\015"] # Anything except backslash and quote
! 1108: | # or
! 1109: \\ [^\x80-\xff] # Escaped something (something != CR)
! 1110: )* " # closing quote
! 1111: ) )* # further okay, if led by a period
! 1112: (?: [\040\t] | \(
! 1113: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
! 1114: \) )* @ (?: [\040\t] | \(
! 1115: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
! 1116: \) )* (?:
! 1117: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
! 1118: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
! 1119: | \[ # [
! 1120: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
! 1121: \] # ]
! 1122: ) # initial subdomain
! 1123: (?: #
! 1124: (?: [\040\t] | \(
! 1125: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
! 1126: \) )* \. # if led by a period...
! 1127: (?: [\040\t] | \(
! 1128: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
! 1129: \) )* (?:
! 1130: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
! 1131: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
! 1132: | \[ # [
! 1133: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
! 1134: \] # ]
! 1135: ) # ...further okay
! 1136: )*
! 1137: # address spec
! 1138: (?: [\040\t] | \(
! 1139: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
! 1140: \) )* > # trailing >
! 1141: # name and address
! 1142: ) (?: [\040\t] | \(
! 1143: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
! 1144: \) )* # optional trailing comment
! 1145: /x
! 1146: Alan Other <user\@dom.ain>
! 1147: <user\@dom.ain>
! 1148: user\@dom.ain
! 1149: \"A. Other\" <user.1234\@dom.ain> (a comment)
! 1150: A. Other <user.1234\@dom.ain> (a comment)
! 1151: \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
! 1152: A missing angle <user\@some.where
! 1153: *** Failers
! 1154: The quick brown fox
! 1155:
! 1156: /[\040\t]* # Nab whitespace.
! 1157: (?:
! 1158: \( # (
! 1159: [^\\\x80-\xff\n\015()] * # normal*
! 1160: (?: # (
! 1161: (?: \\ [^\x80-\xff] |
! 1162: \( # (
! 1163: [^\\\x80-\xff\n\015()] * # normal*
! 1164: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
! 1165: \) # )
! 1166: ) # special
! 1167: [^\\\x80-\xff\n\015()] * # normal*
! 1168: )* # )*
! 1169: \) # )
! 1170: [\040\t]* )* # If comment found, allow more spaces.
! 1171: # optional leading comment
! 1172: (?:
! 1173: (?:
! 1174: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
! 1175: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
! 1176: # Atom
! 1177: | # or
! 1178: " # "
! 1179: [^\\\x80-\xff\n\015"] * # normal
! 1180: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
! 1181: " # "
! 1182: # Quoted string
! 1183: )
! 1184: [\040\t]* # Nab whitespace.
! 1185: (?:
! 1186: \( # (
! 1187: [^\\\x80-\xff\n\015()] * # normal*
! 1188: (?: # (
! 1189: (?: \\ [^\x80-\xff] |
! 1190: \( # (
! 1191: [^\\\x80-\xff\n\015()] * # normal*
! 1192: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
! 1193: \) # )
! 1194: ) # special
! 1195: [^\\\x80-\xff\n\015()] * # normal*
! 1196: )* # )*
! 1197: \) # )
! 1198: [\040\t]* )* # If comment found, allow more spaces.
! 1199: (?:
! 1200: \.
! 1201: [\040\t]* # Nab whitespace.
! 1202: (?:
! 1203: \( # (
! 1204: [^\\\x80-\xff\n\015()] * # normal*
! 1205: (?: # (
! 1206: (?: \\ [^\x80-\xff] |
! 1207: \( # (
! 1208: [^\\\x80-\xff\n\015()] * # normal*
! 1209: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
! 1210: \) # )
! 1211: ) # special
! 1212: [^\\\x80-\xff\n\015()] * # normal*
! 1213: )* # )*
! 1214: \) # )
! 1215: [\040\t]* )* # If comment found, allow more spaces.
! 1216: (?:
! 1217: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
! 1218: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
! 1219: # Atom
! 1220: | # or
! 1221: " # "
! 1222: [^\\\x80-\xff\n\015"] * # normal
! 1223: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
! 1224: " # "
! 1225: # Quoted string
! 1226: )
! 1227: [\040\t]* # Nab whitespace.
! 1228: (?:
! 1229: \( # (
! 1230: [^\\\x80-\xff\n\015()] * # normal*
! 1231: (?: # (
! 1232: (?: \\ [^\x80-\xff] |
! 1233: \( # (
! 1234: [^\\\x80-\xff\n\015()] * # normal*
! 1235: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
! 1236: \) # )
! 1237: ) # special
! 1238: [^\\\x80-\xff\n\015()] * # normal*
! 1239: )* # )*
! 1240: \) # )
! 1241: [\040\t]* )* # If comment found, allow more spaces.
! 1242: # additional words
! 1243: )*
! 1244: @
! 1245: [\040\t]* # Nab whitespace.
! 1246: (?:
! 1247: \( # (
! 1248: [^\\\x80-\xff\n\015()] * # normal*
! 1249: (?: # (
! 1250: (?: \\ [^\x80-\xff] |
! 1251: \( # (
! 1252: [^\\\x80-\xff\n\015()] * # normal*
! 1253: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
! 1254: \) # )
! 1255: ) # special
! 1256: [^\\\x80-\xff\n\015()] * # normal*
! 1257: )* # )*
! 1258: \) # )
! 1259: [\040\t]* )* # If comment found, allow more spaces.
! 1260: (?:
! 1261: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
! 1262: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
! 1263: |
! 1264: \[ # [
! 1265: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
! 1266: \] # ]
! 1267: )
! 1268: [\040\t]* # Nab whitespace.
! 1269: (?:
! 1270: \( # (
! 1271: [^\\\x80-\xff\n\015()] * # normal*
! 1272: (?: # (
! 1273: (?: \\ [^\x80-\xff] |
! 1274: \( # (
! 1275: [^\\\x80-\xff\n\015()] * # normal*
! 1276: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
! 1277: \) # )
! 1278: ) # special
! 1279: [^\\\x80-\xff\n\015()] * # normal*
! 1280: )* # )*
! 1281: \) # )
! 1282: [\040\t]* )* # If comment found, allow more spaces.
! 1283: # optional trailing comments
! 1284: (?:
! 1285: \.
! 1286: [\040\t]* # Nab whitespace.
! 1287: (?:
! 1288: \( # (
! 1289: [^\\\x80-\xff\n\015()] * # normal*
! 1290: (?: # (
! 1291: (?: \\ [^\x80-\xff] |
! 1292: \( # (
! 1293: [^\\\x80-\xff\n\015()] * # normal*
! 1294: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
! 1295: \) # )
! 1296: ) # special
! 1297: [^\\\x80-\xff\n\015()] * # normal*
! 1298: )* # )*
! 1299: \) # )
! 1300: [\040\t]* )* # If comment found, allow more spaces.
! 1301: (?:
! 1302: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
! 1303: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
! 1304: |
! 1305: \[ # [
! 1306: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
! 1307: \] # ]
! 1308: )
! 1309: [\040\t]* # Nab whitespace.
! 1310: (?:
! 1311: \( # (
! 1312: [^\\\x80-\xff\n\015()] * # normal*
! 1313: (?: # (
! 1314: (?: \\ [^\x80-\xff] |
! 1315: \( # (
! 1316: [^\\\x80-\xff\n\015()] * # normal*
! 1317: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
! 1318: \) # )
! 1319: ) # special
! 1320: [^\\\x80-\xff\n\015()] * # normal*
! 1321: )* # )*
! 1322: \) # )
! 1323: [\040\t]* )* # If comment found, allow more spaces.
! 1324: # optional trailing comments
! 1325: )*
! 1326: # address
! 1327: | # or
! 1328: (?:
! 1329: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
! 1330: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
! 1331: # Atom
! 1332: | # or
! 1333: " # "
! 1334: [^\\\x80-\xff\n\015"] * # normal
! 1335: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
! 1336: " # "
! 1337: # Quoted string
! 1338: )
! 1339: # leading word
! 1340: [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # "normal" atoms and or spaces
! 1341: (?:
! 1342: (?:
! 1343: \( # (
! 1344: [^\\\x80-\xff\n\015()] * # normal*
! 1345: (?: # (
! 1346: (?: \\ [^\x80-\xff] |
! 1347: \( # (
! 1348: [^\\\x80-\xff\n\015()] * # normal*
! 1349: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
! 1350: \) # )
! 1351: ) # special
! 1352: [^\\\x80-\xff\n\015()] * # normal*
! 1353: )* # )*
! 1354: \) # )
! 1355: |
! 1356: " # "
! 1357: [^\\\x80-\xff\n\015"] * # normal
! 1358: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
! 1359: " # "
! 1360: ) # "special" comment or quoted string
! 1361: [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # more "normal"
! 1362: )*
! 1363: <
! 1364: [\040\t]* # Nab whitespace.
! 1365: (?:
! 1366: \( # (
! 1367: [^\\\x80-\xff\n\015()] * # normal*
! 1368: (?: # (
! 1369: (?: \\ [^\x80-\xff] |
! 1370: \( # (
! 1371: [^\\\x80-\xff\n\015()] * # normal*
! 1372: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
! 1373: \) # )
! 1374: ) # special
! 1375: [^\\\x80-\xff\n\015()] * # normal*
! 1376: )* # )*
! 1377: \) # )
! 1378: [\040\t]* )* # If comment found, allow more spaces.
! 1379: # <
! 1380: (?:
! 1381: @
! 1382: [\040\t]* # Nab whitespace.
! 1383: (?:
! 1384: \( # (
! 1385: [^\\\x80-\xff\n\015()] * # normal*
! 1386: (?: # (
! 1387: (?: \\ [^\x80-\xff] |
! 1388: \( # (
! 1389: [^\\\x80-\xff\n\015()] * # normal*
! 1390: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
! 1391: \) # )
! 1392: ) # special
! 1393: [^\\\x80-\xff\n\015()] * # normal*
! 1394: )* # )*
! 1395: \) # )
! 1396: [\040\t]* )* # If comment found, allow more spaces.
! 1397: (?:
! 1398: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
! 1399: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
! 1400: |
! 1401: \[ # [
! 1402: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
! 1403: \] # ]
! 1404: )
! 1405: [\040\t]* # Nab whitespace.
! 1406: (?:
! 1407: \( # (
! 1408: [^\\\x80-\xff\n\015()] * # normal*
! 1409: (?: # (
! 1410: (?: \\ [^\x80-\xff] |
! 1411: \( # (
! 1412: [^\\\x80-\xff\n\015()] * # normal*
! 1413: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
! 1414: \) # )
! 1415: ) # special
! 1416: [^\\\x80-\xff\n\015()] * # normal*
! 1417: )* # )*
! 1418: \) # )
! 1419: [\040\t]* )* # If comment found, allow more spaces.
! 1420: # optional trailing comments
! 1421: (?:
! 1422: \.
! 1423: [\040\t]* # Nab whitespace.
! 1424: (?:
! 1425: \( # (
! 1426: [^\\\x80-\xff\n\015()] * # normal*
! 1427: (?: # (
! 1428: (?: \\ [^\x80-\xff] |
! 1429: \( # (
! 1430: [^\\\x80-\xff\n\015()] * # normal*
! 1431: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
! 1432: \) # )
! 1433: ) # special
! 1434: [^\\\x80-\xff\n\015()] * # normal*
! 1435: )* # )*
! 1436: \) # )
! 1437: [\040\t]* )* # If comment found, allow more spaces.
! 1438: (?:
! 1439: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
! 1440: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
! 1441: |
! 1442: \[ # [
! 1443: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
! 1444: \] # ]
! 1445: )
! 1446: [\040\t]* # Nab whitespace.
! 1447: (?:
! 1448: \( # (
! 1449: [^\\\x80-\xff\n\015()] * # normal*
! 1450: (?: # (
! 1451: (?: \\ [^\x80-\xff] |
! 1452: \( # (
! 1453: [^\\\x80-\xff\n\015()] * # normal*
! 1454: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
! 1455: \) # )
! 1456: ) # special
! 1457: [^\\\x80-\xff\n\015()] * # normal*
! 1458: )* # )*
! 1459: \) # )
! 1460: [\040\t]* )* # If comment found, allow more spaces.
! 1461: # optional trailing comments
! 1462: )*
! 1463: (?: ,
! 1464: [\040\t]* # Nab whitespace.
! 1465: (?:
! 1466: \( # (
! 1467: [^\\\x80-\xff\n\015()] * # normal*
! 1468: (?: # (
! 1469: (?: \\ [^\x80-\xff] |
! 1470: \( # (
! 1471: [^\\\x80-\xff\n\015()] * # normal*
! 1472: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
! 1473: \) # )
! 1474: ) # special
! 1475: [^\\\x80-\xff\n\015()] * # normal*
! 1476: )* # )*
! 1477: \) # )
! 1478: [\040\t]* )* # If comment found, allow more spaces.
! 1479: @
! 1480: [\040\t]* # Nab whitespace.
! 1481: (?:
! 1482: \( # (
! 1483: [^\\\x80-\xff\n\015()] * # normal*
! 1484: (?: # (
! 1485: (?: \\ [^\x80-\xff] |
! 1486: \( # (
! 1487: [^\\\x80-\xff\n\015()] * # normal*
! 1488: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
! 1489: \) # )
! 1490: ) # special
! 1491: [^\\\x80-\xff\n\015()] * # normal*
! 1492: )* # )*
! 1493: \) # )
! 1494: [\040\t]* )* # If comment found, allow more spaces.
! 1495: (?:
! 1496: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
! 1497: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
! 1498: |
! 1499: \[ # [
! 1500: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
! 1501: \] # ]
! 1502: )
! 1503: [\040\t]* # Nab whitespace.
! 1504: (?:
! 1505: \( # (
! 1506: [^\\\x80-\xff\n\015()] * # normal*
! 1507: (?: # (
! 1508: (?: \\ [^\x80-\xff] |
! 1509: \( # (
! 1510: [^\\\x80-\xff\n\015()] * # normal*
! 1511: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
! 1512: \) # )
! 1513: ) # special
! 1514: [^\\\x80-\xff\n\015()] * # normal*
! 1515: )* # )*
! 1516: \) # )
! 1517: [\040\t]* )* # If comment found, allow more spaces.
! 1518: # optional trailing comments
! 1519: (?:
! 1520: \.
! 1521: [\040\t]* # Nab whitespace.
! 1522: (?:
! 1523: \( # (
! 1524: [^\\\x80-\xff\n\015()] * # normal*
! 1525: (?: # (
! 1526: (?: \\ [^\x80-\xff] |
! 1527: \( # (
! 1528: [^\\\x80-\xff\n\015()] * # normal*
! 1529: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
! 1530: \) # )
! 1531: ) # special
! 1532: [^\\\x80-\xff\n\015()] * # normal*
! 1533: )* # )*
! 1534: \) # )
! 1535: [\040\t]* )* # If comment found, allow more spaces.
! 1536: (?:
! 1537: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
! 1538: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
! 1539: |
! 1540: \[ # [
! 1541: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
! 1542: \] # ]
! 1543: )
! 1544: [\040\t]* # Nab whitespace.
! 1545: (?:
! 1546: \( # (
! 1547: [^\\\x80-\xff\n\015()] * # normal*
! 1548: (?: # (
! 1549: (?: \\ [^\x80-\xff] |
! 1550: \( # (
! 1551: [^\\\x80-\xff\n\015()] * # normal*
! 1552: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
! 1553: \) # )
! 1554: ) # special
! 1555: [^\\\x80-\xff\n\015()] * # normal*
! 1556: )* # )*
! 1557: \) # )
! 1558: [\040\t]* )* # If comment found, allow more spaces.
! 1559: # optional trailing comments
! 1560: )*
! 1561: )* # additional domains
! 1562: :
! 1563: [\040\t]* # Nab whitespace.
! 1564: (?:
! 1565: \( # (
! 1566: [^\\\x80-\xff\n\015()] * # normal*
! 1567: (?: # (
! 1568: (?: \\ [^\x80-\xff] |
! 1569: \( # (
! 1570: [^\\\x80-\xff\n\015()] * # normal*
! 1571: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
! 1572: \) # )
! 1573: ) # special
! 1574: [^\\\x80-\xff\n\015()] * # normal*
! 1575: )* # )*
! 1576: \) # )
! 1577: [\040\t]* )* # If comment found, allow more spaces.
! 1578: # optional trailing comments
! 1579: )? # optional route
! 1580: (?:
! 1581: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
! 1582: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
! 1583: # Atom
! 1584: | # or
! 1585: " # "
! 1586: [^\\\x80-\xff\n\015"] * # normal
! 1587: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
! 1588: " # "
! 1589: # Quoted string
! 1590: )
! 1591: [\040\t]* # Nab whitespace.
! 1592: (?:
! 1593: \( # (
! 1594: [^\\\x80-\xff\n\015()] * # normal*
! 1595: (?: # (
! 1596: (?: \\ [^\x80-\xff] |
! 1597: \( # (
! 1598: [^\\\x80-\xff\n\015()] * # normal*
! 1599: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
! 1600: \) # )
! 1601: ) # special
! 1602: [^\\\x80-\xff\n\015()] * # normal*
! 1603: )* # )*
! 1604: \) # )
! 1605: [\040\t]* )* # If comment found, allow more spaces.
! 1606: (?:
! 1607: \.
! 1608: [\040\t]* # Nab whitespace.
! 1609: (?:
! 1610: \( # (
! 1611: [^\\\x80-\xff\n\015()] * # normal*
! 1612: (?: # (
! 1613: (?: \\ [^\x80-\xff] |
! 1614: \( # (
! 1615: [^\\\x80-\xff\n\015()] * # normal*
! 1616: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
! 1617: \) # )
! 1618: ) # special
! 1619: [^\\\x80-\xff\n\015()] * # normal*
! 1620: )* # )*
! 1621: \) # )
! 1622: [\040\t]* )* # If comment found, allow more spaces.
! 1623: (?:
! 1624: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
! 1625: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
! 1626: # Atom
! 1627: | # or
! 1628: " # "
! 1629: [^\\\x80-\xff\n\015"] * # normal
! 1630: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
! 1631: " # "
! 1632: # Quoted string
! 1633: )
! 1634: [\040\t]* # Nab whitespace.
! 1635: (?:
! 1636: \( # (
! 1637: [^\\\x80-\xff\n\015()] * # normal*
! 1638: (?: # (
! 1639: (?: \\ [^\x80-\xff] |
! 1640: \( # (
! 1641: [^\\\x80-\xff\n\015()] * # normal*
! 1642: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
! 1643: \) # )
! 1644: ) # special
! 1645: [^\\\x80-\xff\n\015()] * # normal*
! 1646: )* # )*
! 1647: \) # )
! 1648: [\040\t]* )* # If comment found, allow more spaces.
! 1649: # additional words
! 1650: )*
! 1651: @
! 1652: [\040\t]* # Nab whitespace.
! 1653: (?:
! 1654: \( # (
! 1655: [^\\\x80-\xff\n\015()] * # normal*
! 1656: (?: # (
! 1657: (?: \\ [^\x80-\xff] |
! 1658: \( # (
! 1659: [^\\\x80-\xff\n\015()] * # normal*
! 1660: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
! 1661: \) # )
! 1662: ) # special
! 1663: [^\\\x80-\xff\n\015()] * # normal*
! 1664: )* # )*
! 1665: \) # )
! 1666: [\040\t]* )* # If comment found, allow more spaces.
! 1667: (?:
! 1668: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
! 1669: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
! 1670: |
! 1671: \[ # [
! 1672: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
! 1673: \] # ]
! 1674: )
! 1675: [\040\t]* # Nab whitespace.
! 1676: (?:
! 1677: \( # (
! 1678: [^\\\x80-\xff\n\015()] * # normal*
! 1679: (?: # (
! 1680: (?: \\ [^\x80-\xff] |
! 1681: \( # (
! 1682: [^\\\x80-\xff\n\015()] * # normal*
! 1683: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
! 1684: \) # )
! 1685: ) # special
! 1686: [^\\\x80-\xff\n\015()] * # normal*
! 1687: )* # )*
! 1688: \) # )
! 1689: [\040\t]* )* # If comment found, allow more spaces.
! 1690: # optional trailing comments
! 1691: (?:
! 1692: \.
! 1693: [\040\t]* # Nab whitespace.
! 1694: (?:
! 1695: \( # (
! 1696: [^\\\x80-\xff\n\015()] * # normal*
! 1697: (?: # (
! 1698: (?: \\ [^\x80-\xff] |
! 1699: \( # (
! 1700: [^\\\x80-\xff\n\015()] * # normal*
! 1701: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
! 1702: \) # )
! 1703: ) # special
! 1704: [^\\\x80-\xff\n\015()] * # normal*
! 1705: )* # )*
! 1706: \) # )
! 1707: [\040\t]* )* # If comment found, allow more spaces.
! 1708: (?:
! 1709: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
! 1710: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
! 1711: |
! 1712: \[ # [
! 1713: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
! 1714: \] # ]
! 1715: )
! 1716: [\040\t]* # Nab whitespace.
! 1717: (?:
! 1718: \( # (
! 1719: [^\\\x80-\xff\n\015()] * # normal*
! 1720: (?: # (
! 1721: (?: \\ [^\x80-\xff] |
! 1722: \( # (
! 1723: [^\\\x80-\xff\n\015()] * # normal*
! 1724: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
! 1725: \) # )
! 1726: ) # special
! 1727: [^\\\x80-\xff\n\015()] * # normal*
! 1728: )* # )*
! 1729: \) # )
! 1730: [\040\t]* )* # If comment found, allow more spaces.
! 1731: # optional trailing comments
! 1732: )*
! 1733: # address spec
! 1734: > # >
! 1735: # name and address
! 1736: )
! 1737: /x
! 1738: Alan Other <user\@dom.ain>
! 1739: <user\@dom.ain>
! 1740: user\@dom.ain
! 1741: \"A. Other\" <user.1234\@dom.ain> (a comment)
! 1742: A. Other <user.1234\@dom.ain> (a comment)
! 1743: \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
! 1744: A missing angle <user\@some.where
! 1745: *** Failers
! 1746: The quick brown fox
! 1747:
! 1748: /abc\0def\00pqr\000xyz\0000AB/
! 1749: abc\0def\00pqr\000xyz\0000AB
! 1750: abc456 abc\0def\00pqr\000xyz\0000ABCDE
! 1751:
! 1752: /abc\x0def\x00pqr\x000xyz\x0000AB/
! 1753: abc\x0def\x00pqr\x000xyz\x0000AB
! 1754: abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE
! 1755:
! 1756: /^[\000-\037]/
! 1757: \0A
! 1758: \01B
! 1759: \037C
! 1760:
! 1761: /\0*/
! 1762: \0\0\0\0
! 1763:
! 1764: /A\x0{2,3}Z/
! 1765: The A\x0\x0Z
! 1766: An A\0\x0\0Z
! 1767: *** Failers
! 1768: A\0Z
! 1769: A\0\x0\0\x0Z
! 1770:
! 1771: /^\s/
! 1772: \040abc
! 1773: \x0cabc
! 1774: \nabc
! 1775: \rabc
! 1776: \tabc
! 1777: *** Failers
! 1778: abc
! 1779:
! 1780: /^a b
! 1781: c/x
! 1782: abc
! 1783:
! 1784: /ab{1,3}bc/
! 1785: abbbbc
! 1786: abbbc
! 1787: abbc
! 1788: *** Failers
! 1789: abc
! 1790: abbbbbc
! 1791:
! 1792: /([^.]*)\.([^:]*):[T ]+(.*)/
! 1793: track1.title:TBlah blah blah
! 1794:
! 1795: /([^.]*)\.([^:]*):[T ]+(.*)/i
! 1796: track1.title:TBlah blah blah
! 1797:
! 1798: /([^.]*)\.([^:]*):[t ]+(.*)/i
! 1799: track1.title:TBlah blah blah
! 1800:
! 1801: /^[W-c]+$/
! 1802: WXY_^abc
! 1803: *** Failers
! 1804: wxy
! 1805:
! 1806: /^[W-c]+$/i
! 1807: WXY_^abc
! 1808: wxy_^ABC
! 1809:
! 1810: /^[\x3f-\x5F]+$/i
! 1811: WXY_^abc
! 1812: wxy_^ABC
! 1813:
! 1814: /^abc$/m
! 1815: abc
! 1816: qqq\nabc
! 1817: abc\nzzz
! 1818: qqq\nabc\nzzz
! 1819:
! 1820: /^abc$/
! 1821: abc
! 1822: *** Failers
! 1823: qqq\nabc
! 1824: abc\nzzz
! 1825: qqq\nabc\nzzz
! 1826:
! 1827: /\Aabc\Z/m
! 1828: abc
! 1829: abc\n
! 1830: *** Failers
! 1831: qqq\nabc
! 1832: abc\nzzz
! 1833: qqq\nabc\nzzz
! 1834:
! 1835: /\A(.)*\Z/s
! 1836: abc\ndef
! 1837:
! 1838: /\A(.)*\Z/m
! 1839: *** Failers
! 1840: abc\ndef
! 1841:
! 1842: /(?:b)|(?::+)/
! 1843: b::c
! 1844: c::b
! 1845:
! 1846: /[-az]+/
! 1847: az-
! 1848: *** Failers
! 1849: b
! 1850:
! 1851: /[az-]+/
! 1852: za-
! 1853: *** Failers
! 1854: b
! 1855:
! 1856: /[a\-z]+/
! 1857: a-z
! 1858: *** Failers
! 1859: b
! 1860:
! 1861: /[a-z]+/
! 1862: abcdxyz
! 1863:
! 1864: /[\d-]+/
! 1865: 12-34
! 1866: *** Failers
! 1867: aaa
! 1868:
! 1869: /[\d-z]+/
! 1870: 12-34z
! 1871: *** Failers
! 1872: aaa
! 1873:
! 1874: /\x5c/
! 1875: \\
! 1876:
! 1877: /\x20Z/
! 1878: the Zoo
! 1879: *** Failers
! 1880: Zulu
! 1881:
! 1882: /ab{3cd/
! 1883: ab{3cd
! 1884:
! 1885: /ab{3,cd/
! 1886: ab{3,cd
! 1887:
! 1888: /ab{3,4a}cd/
! 1889: ab{3,4a}cd
! 1890:
! 1891: /{4,5a}bc/
! 1892: {4,5a}bc
! 1893:
! 1894: /^a.b/<lf>
! 1895: a\rb
! 1896: *** Failers
! 1897: a\nb
! 1898:
! 1899: /abc$/
! 1900: abc
! 1901: abc\n
! 1902: *** Failers
! 1903: abc\ndef
! 1904:
! 1905: /(abc)\123/
! 1906: abc\x53
! 1907:
! 1908: /(abc)\223/
! 1909: abc\x93
! 1910:
! 1911: /(abc)\323/
! 1912: abc\xd3
! 1913:
! 1914: /(abc)\100/
! 1915: abc\x40
! 1916: abc\100
! 1917:
! 1918: /(abc)\1000/
! 1919: abc\x400
! 1920: abc\x40\x30
! 1921: abc\1000
! 1922: abc\100\x30
! 1923: abc\100\060
! 1924: abc\100\60
! 1925:
! 1926: /abc\81/
! 1927: abc\081
! 1928: abc\0\x38\x31
! 1929:
! 1930: /abc\91/
! 1931: abc\091
! 1932: abc\0\x39\x31
! 1933:
! 1934: /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
! 1935: abcdefghijk\12S
! 1936:
! 1937: /ab\idef/
! 1938: abidef
! 1939:
! 1940: /a{0}bc/
! 1941: bc
! 1942:
! 1943: /(a|(bc)){0,0}?xyz/
! 1944: xyz
! 1945:
! 1946: /abc[\10]de/
! 1947: abc\010de
! 1948:
! 1949: /abc[\1]de/
! 1950: abc\1de
! 1951:
! 1952: /(abc)[\1]de/
! 1953: abc\1de
! 1954:
! 1955: /(?s)a.b/
! 1956: a\nb
! 1957:
! 1958: /^([^a])([^\b])([^c]*)([^d]{3,4})/
! 1959: baNOTccccd
! 1960: baNOTcccd
! 1961: baNOTccd
! 1962: bacccd
! 1963: *** Failers
! 1964: anything
! 1965: b\bc
! 1966: baccd
! 1967:
! 1968: /[^a]/
! 1969: Abc
! 1970:
! 1971: /[^a]/i
! 1972: Abc
! 1973:
! 1974: /[^a]+/
! 1975: AAAaAbc
! 1976:
! 1977: /[^a]+/i
! 1978: AAAaAbc
! 1979:
! 1980: /[^a]+/
! 1981: bbb\nccc
! 1982:
! 1983: /[^k]$/
! 1984: abc
! 1985: *** Failers
! 1986: abk
! 1987:
! 1988: /[^k]{2,3}$/
! 1989: abc
! 1990: kbc
! 1991: kabc
! 1992: *** Failers
! 1993: abk
! 1994: akb
! 1995: akk
! 1996:
! 1997: /^\d{8,}\@.+[^k]$/
! 1998: 12345678\@a.b.c.d
! 1999: 123456789\@x.y.z
! 2000: *** Failers
! 2001: 12345678\@x.y.uk
! 2002: 1234567\@a.b.c.d
! 2003:
! 2004: /[^a]/
! 2005: aaaabcd
! 2006: aaAabcd
! 2007:
! 2008: /[^a]/i
! 2009: aaaabcd
! 2010: aaAabcd
! 2011:
! 2012: /[^az]/
! 2013: aaaabcd
! 2014: aaAabcd
! 2015:
! 2016: /[^az]/i
! 2017: aaaabcd
! 2018: aaAabcd
! 2019:
! 2020: /\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/
! 2021: \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
! 2022:
! 2023: /P[^*]TAIRE[^*]{1,6}?LL/
! 2024: xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
! 2025:
! 2026: /P[^*]TAIRE[^*]{1,}?LL/
! 2027: xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
! 2028:
! 2029: /(\.\d\d[1-9]?)\d+/
! 2030: 1.230003938
! 2031: 1.875000282
! 2032: 1.235
! 2033:
! 2034: /(\.\d\d((?=0)|\d(?=\d)))/
! 2035: 1.230003938
! 2036: 1.875000282
! 2037: *** Failers
! 2038: 1.235
! 2039:
! 2040: /a(?)b/
! 2041: ab
! 2042:
! 2043: /\b(foo)\s+(\w+)/i
! 2044: Food is on the foo table
! 2045:
! 2046: /foo(.*)bar/
! 2047: The food is under the bar in the barn.
! 2048:
! 2049: /foo(.*?)bar/
! 2050: The food is under the bar in the barn.
! 2051:
! 2052: /(.*)(\d*)/
! 2053: I have 2 numbers: 53147
! 2054:
! 2055: /(.*)(\d+)/
! 2056: I have 2 numbers: 53147
! 2057:
! 2058: /(.*?)(\d*)/
! 2059: I have 2 numbers: 53147
! 2060:
! 2061: /(.*?)(\d+)/
! 2062: I have 2 numbers: 53147
! 2063:
! 2064: /(.*)(\d+)$/
! 2065: I have 2 numbers: 53147
! 2066:
! 2067: /(.*?)(\d+)$/
! 2068: I have 2 numbers: 53147
! 2069:
! 2070: /(.*)\b(\d+)$/
! 2071: I have 2 numbers: 53147
! 2072:
! 2073: /(.*\D)(\d+)$/
! 2074: I have 2 numbers: 53147
! 2075:
! 2076: /^\D*(?!123)/
! 2077: ABC123
! 2078:
! 2079: /^(\D*)(?=\d)(?!123)/
! 2080: ABC445
! 2081: *** Failers
! 2082: ABC123
! 2083:
! 2084: /^[W-]46]/
! 2085: W46]789
! 2086: -46]789
! 2087: *** Failers
! 2088: Wall
! 2089: Zebra
! 2090: 42
! 2091: [abcd]
! 2092: ]abcd[
! 2093:
! 2094: /^[W-\]46]/
! 2095: W46]789
! 2096: Wall
! 2097: Zebra
! 2098: Xylophone
! 2099: 42
! 2100: [abcd]
! 2101: ]abcd[
! 2102: \\backslash
! 2103: *** Failers
! 2104: -46]789
! 2105: well
! 2106:
! 2107: /\d\d\/\d\d\/\d\d\d\d/
! 2108: 01/01/2000
! 2109:
! 2110: /word (?:[a-zA-Z0-9]+ ){0,10}otherword/
! 2111: word cat dog elephant mussel cow horse canary baboon snake shark otherword
! 2112: word cat dog elephant mussel cow horse canary baboon snake shark
! 2113:
! 2114: /word (?:[a-zA-Z0-9]+ ){0,300}otherword/
! 2115: 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
! 2116:
! 2117: /^(a){0,0}/
! 2118: bcd
! 2119: abc
! 2120: aab
! 2121:
! 2122: /^(a){0,1}/
! 2123: bcd
! 2124: abc
! 2125: aab
! 2126:
! 2127: /^(a){0,2}/
! 2128: bcd
! 2129: abc
! 2130: aab
! 2131:
! 2132: /^(a){0,3}/
! 2133: bcd
! 2134: abc
! 2135: aab
! 2136: aaa
! 2137:
! 2138: /^(a){0,}/
! 2139: bcd
! 2140: abc
! 2141: aab
! 2142: aaa
! 2143: aaaaaaaa
! 2144:
! 2145: /^(a){1,1}/
! 2146: bcd
! 2147: abc
! 2148: aab
! 2149:
! 2150: /^(a){1,2}/
! 2151: bcd
! 2152: abc
! 2153: aab
! 2154:
! 2155: /^(a){1,3}/
! 2156: bcd
! 2157: abc
! 2158: aab
! 2159: aaa
! 2160:
! 2161: /^(a){1,}/
! 2162: bcd
! 2163: abc
! 2164: aab
! 2165: aaa
! 2166: aaaaaaaa
! 2167:
! 2168: /.*\.gif/
! 2169: borfle\nbib.gif\nno
! 2170:
! 2171: /.{0,}\.gif/
! 2172: borfle\nbib.gif\nno
! 2173:
! 2174: /.*\.gif/m
! 2175: borfle\nbib.gif\nno
! 2176:
! 2177: /.*\.gif/s
! 2178: borfle\nbib.gif\nno
! 2179:
! 2180: /.*\.gif/ms
! 2181: borfle\nbib.gif\nno
! 2182:
! 2183: /.*$/
! 2184: borfle\nbib.gif\nno
! 2185:
! 2186: /.*$/m
! 2187: borfle\nbib.gif\nno
! 2188:
! 2189: /.*$/s
! 2190: borfle\nbib.gif\nno
! 2191:
! 2192: /.*$/ms
! 2193: borfle\nbib.gif\nno
! 2194:
! 2195: /.*$/
! 2196: borfle\nbib.gif\nno\n
! 2197:
! 2198: /.*$/m
! 2199: borfle\nbib.gif\nno\n
! 2200:
! 2201: /.*$/s
! 2202: borfle\nbib.gif\nno\n
! 2203:
! 2204: /.*$/ms
! 2205: borfle\nbib.gif\nno\n
! 2206:
! 2207: /(.*X|^B)/
! 2208: abcde\n1234Xyz
! 2209: BarFoo
! 2210: *** Failers
! 2211: abcde\nBar
! 2212:
! 2213: /(.*X|^B)/m
! 2214: abcde\n1234Xyz
! 2215: BarFoo
! 2216: abcde\nBar
! 2217:
! 2218: /(.*X|^B)/s
! 2219: abcde\n1234Xyz
! 2220: BarFoo
! 2221: *** Failers
! 2222: abcde\nBar
! 2223:
! 2224: /(.*X|^B)/ms
! 2225: abcde\n1234Xyz
! 2226: BarFoo
! 2227: abcde\nBar
! 2228:
! 2229: /(?s)(.*X|^B)/
! 2230: abcde\n1234Xyz
! 2231: BarFoo
! 2232: *** Failers
! 2233: abcde\nBar
! 2234:
! 2235: /(?s:.*X|^B)/
! 2236: abcde\n1234Xyz
! 2237: BarFoo
! 2238: *** Failers
! 2239: abcde\nBar
! 2240:
! 2241: /^.*B/
! 2242: **** Failers
! 2243: abc\nB
! 2244:
! 2245: /(?s)^.*B/
! 2246: abc\nB
! 2247:
! 2248: /(?m)^.*B/
! 2249: abc\nB
! 2250:
! 2251: /(?ms)^.*B/
! 2252: abc\nB
! 2253:
! 2254: /(?ms)^B/
! 2255: abc\nB
! 2256:
! 2257: /(?s)B$/
! 2258: B\n
! 2259:
! 2260: /^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
! 2261: 123456654321
! 2262:
! 2263: /^\d\d\d\d\d\d\d\d\d\d\d\d/
! 2264: 123456654321
! 2265:
! 2266: /^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/
! 2267: 123456654321
! 2268:
! 2269: /^[abc]{12}/
! 2270: abcabcabcabc
! 2271:
! 2272: /^[a-c]{12}/
! 2273: abcabcabcabc
! 2274:
! 2275: /^(a|b|c){12}/
! 2276: abcabcabcabc
! 2277:
! 2278: /^[abcdefghijklmnopqrstuvwxy0123456789]/
! 2279: n
! 2280: *** Failers
! 2281: z
! 2282:
! 2283: /abcde{0,0}/
! 2284: abcd
! 2285: *** Failers
! 2286: abce
! 2287:
! 2288: /ab[cd]{0,0}e/
! 2289: abe
! 2290: *** Failers
! 2291: abcde
! 2292:
! 2293: /ab(c){0,0}d/
! 2294: abd
! 2295: *** Failers
! 2296: abcd
! 2297:
! 2298: /a(b*)/
! 2299: a
! 2300: ab
! 2301: abbbb
! 2302: *** Failers
! 2303: bbbbb
! 2304:
! 2305: /ab\d{0}e/
! 2306: abe
! 2307: *** Failers
! 2308: ab1e
! 2309:
! 2310: /"([^\\"]+|\\.)*"/
! 2311: the \"quick\" brown fox
! 2312: \"the \\\"quick\\\" brown fox\"
! 2313:
! 2314: /.*?/g+
! 2315: abc
! 2316:
! 2317: /\b/g+
! 2318: abc
! 2319:
! 2320: /\b/+g
! 2321: abc
! 2322:
! 2323: //g
! 2324: abc
! 2325:
! 2326: /<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
! 2327: <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>
! 2328:
! 2329: /a[^a]b/
! 2330: acb
! 2331: a\nb
! 2332:
! 2333: /a.b/
! 2334: acb
! 2335: *** Failers
! 2336: a\nb
! 2337:
! 2338: /a[^a]b/s
! 2339: acb
! 2340: a\nb
! 2341:
! 2342: /a.b/s
! 2343: acb
! 2344: a\nb
! 2345:
! 2346: /^(b+?|a){1,2}?c/
! 2347: bac
! 2348: bbac
! 2349: bbbac
! 2350: bbbbac
! 2351: bbbbbac
! 2352:
! 2353: /^(b+|a){1,2}?c/
! 2354: bac
! 2355: bbac
! 2356: bbbac
! 2357: bbbbac
! 2358: bbbbbac
! 2359:
! 2360: /(?!\A)x/m
! 2361: x\nb\n
! 2362: a\bx\n
! 2363:
! 2364: /\x0{ab}/
! 2365: \0{ab}
! 2366:
! 2367: /(A|B)*?CD/
! 2368: CD
! 2369:
! 2370: /(A|B)*CD/
! 2371: CD
! 2372:
! 2373: /(?<!bar)foo/
! 2374: foo
! 2375: catfood
! 2376: arfootle
! 2377: rfoosh
! 2378: *** Failers
! 2379: barfoo
! 2380: towbarfoo
! 2381:
! 2382: /\w{3}(?<!bar)foo/
! 2383: catfood
! 2384: *** Failers
! 2385: foo
! 2386: barfoo
! 2387: towbarfoo
! 2388:
! 2389: /(?<=(foo)a)bar/
! 2390: fooabar
! 2391: *** Failers
! 2392: bar
! 2393: foobbar
! 2394:
! 2395: /\Aabc\z/m
! 2396: abc
! 2397: *** Failers
! 2398: abc\n
! 2399: qqq\nabc
! 2400: abc\nzzz
! 2401: qqq\nabc\nzzz
! 2402:
! 2403: "(?>.*/)foo"
! 2404: /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/
! 2405:
! 2406: "(?>.*/)foo"
! 2407: /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
! 2408:
! 2409: /(?>(\.\d\d[1-9]?))\d+/
! 2410: 1.230003938
! 2411: 1.875000282
! 2412: *** Failers
! 2413: 1.235
! 2414:
! 2415: /^((?>\w+)|(?>\s+))*$/
! 2416: now is the time for all good men to come to the aid of the party
! 2417: *** Failers
! 2418: this is not a line with only words and spaces!
! 2419:
! 2420: /(\d+)(\w)/
! 2421: 12345a
! 2422: 12345+
! 2423:
! 2424: /((?>\d+))(\w)/
! 2425: 12345a
! 2426: *** Failers
! 2427: 12345+
! 2428:
! 2429: /(?>a+)b/
! 2430: aaab
! 2431:
! 2432: /((?>a+)b)/
! 2433: aaab
! 2434:
! 2435: /(?>(a+))b/
! 2436: aaab
! 2437:
! 2438: /(?>b)+/
! 2439: aaabbbccc
! 2440:
! 2441: /(?>a+|b+|c+)*c/
! 2442: aaabbbbccccd
! 2443:
! 2444: /(a+|b+|c+)*c/
! 2445: aaabbbbccccd
! 2446:
! 2447: /((?>[^()]+)|\([^()]*\))+/
! 2448: ((abc(ade)ufh()()x
! 2449:
! 2450: /\(((?>[^()]+)|\([^()]+\))+\)/
! 2451: (abc)
! 2452: (abc(def)xyz)
! 2453: *** Failers
! 2454: ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
! 2455:
! 2456: /a(?-i)b/i
! 2457: ab
! 2458: Ab
! 2459: *** Failers
! 2460: aB
! 2461: AB
! 2462:
! 2463: /(a (?x)b c)d e/
! 2464: a bcd e
! 2465: *** Failers
! 2466: a b cd e
! 2467: abcd e
! 2468: a bcde
! 2469:
! 2470: /(a b(?x)c d (?-x)e f)/
! 2471: a bcde f
! 2472: *** Failers
! 2473: abcdef
! 2474:
! 2475: /(a(?i)b)c/
! 2476: abc
! 2477: aBc
! 2478: *** Failers
! 2479: abC
! 2480: aBC
! 2481: Abc
! 2482: ABc
! 2483: ABC
! 2484: AbC
! 2485:
! 2486: /a(?i:b)c/
! 2487: abc
! 2488: aBc
! 2489: *** Failers
! 2490: ABC
! 2491: abC
! 2492: aBC
! 2493:
! 2494: /a(?i:b)*c/
! 2495: aBc
! 2496: aBBc
! 2497: *** Failers
! 2498: aBC
! 2499: aBBC
! 2500:
! 2501: /a(?=b(?i)c)\w\wd/
! 2502: abcd
! 2503: abCd
! 2504: *** Failers
! 2505: aBCd
! 2506: abcD
! 2507:
! 2508: /(?s-i:more.*than).*million/i
! 2509: more than million
! 2510: more than MILLION
! 2511: more \n than Million
! 2512: *** Failers
! 2513: MORE THAN MILLION
! 2514: more \n than \n million
! 2515:
! 2516: /(?:(?s-i)more.*than).*million/i
! 2517: more than million
! 2518: more than MILLION
! 2519: more \n than Million
! 2520: *** Failers
! 2521: MORE THAN MILLION
! 2522: more \n than \n million
! 2523:
! 2524: /(?>a(?i)b+)+c/
! 2525: abc
! 2526: aBbc
! 2527: aBBc
! 2528: *** Failers
! 2529: Abc
! 2530: abAb
! 2531: abbC
! 2532:
! 2533: /(?=a(?i)b)\w\wc/
! 2534: abc
! 2535: aBc
! 2536: *** Failers
! 2537: Ab
! 2538: abC
! 2539: aBC
! 2540:
! 2541: /(?<=a(?i)b)(\w\w)c/
! 2542: abxxc
! 2543: aBxxc
! 2544: *** Failers
! 2545: Abxxc
! 2546: ABxxc
! 2547: abxxC
! 2548:
! 2549: /^(?(?=abc)\w{3}:|\d\d)$/
! 2550: abc:
! 2551: 12
! 2552: *** Failers
! 2553: 123
! 2554: xyz
! 2555:
! 2556: /^(?(?!abc)\d\d|\w{3}:)$/
! 2557: abc:
! 2558: 12
! 2559: *** Failers
! 2560: 123
! 2561: xyz
! 2562:
! 2563: /(?(?<=foo)bar|cat)/
! 2564: foobar
! 2565: cat
! 2566: fcat
! 2567: focat
! 2568: *** Failers
! 2569: foocat
! 2570:
! 2571: /(?(?<!foo)cat|bar)/
! 2572: foobar
! 2573: cat
! 2574: fcat
! 2575: focat
! 2576: *** Failers
! 2577: foocat
! 2578:
! 2579: /(?>a*)*/
! 2580: a
! 2581: aa
! 2582: aaaa
! 2583:
! 2584: /(abc|)+/
! 2585: abc
! 2586: abcabc
! 2587: abcabcabc
! 2588: xyz
! 2589:
! 2590: /([a]*)*/
! 2591: a
! 2592: aaaaa
! 2593:
! 2594: /([ab]*)*/
! 2595: a
! 2596: b
! 2597: ababab
! 2598: aaaabcde
! 2599: bbbb
! 2600:
! 2601: /([^a]*)*/
! 2602: b
! 2603: bbbb
! 2604: aaa
! 2605:
! 2606: /([^ab]*)*/
! 2607: cccc
! 2608: abab
! 2609:
! 2610: /([a]*?)*/
! 2611: a
! 2612: aaaa
! 2613:
! 2614: /([ab]*?)*/
! 2615: a
! 2616: b
! 2617: abab
! 2618: baba
! 2619:
! 2620: /([^a]*?)*/
! 2621: b
! 2622: bbbb
! 2623: aaa
! 2624:
! 2625: /([^ab]*?)*/
! 2626: c
! 2627: cccc
! 2628: baba
! 2629:
! 2630: /(?>a*)*/
! 2631: a
! 2632: aaabcde
! 2633:
! 2634: /((?>a*))*/
! 2635: aaaaa
! 2636: aabbaa
! 2637:
! 2638: /((?>a*?))*/
! 2639: aaaaa
! 2640: aabbaa
! 2641:
! 2642: /(?(?=[^a-z]+[a-z]) \d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} ) /x
! 2643: 12-sep-98
! 2644: 12-09-98
! 2645: *** Failers
! 2646: sep-12-98
! 2647:
! 2648: /(?i:saturday|sunday)/
! 2649: saturday
! 2650: sunday
! 2651: Saturday
! 2652: Sunday
! 2653: SATURDAY
! 2654: SUNDAY
! 2655: SunDay
! 2656:
! 2657: /(a(?i)bc|BB)x/
! 2658: abcx
! 2659: aBCx
! 2660: bbx
! 2661: BBx
! 2662: *** Failers
! 2663: abcX
! 2664: aBCX
! 2665: bbX
! 2666: BBX
! 2667:
! 2668: /^([ab](?i)[cd]|[ef])/
! 2669: ac
! 2670: aC
! 2671: bD
! 2672: elephant
! 2673: Europe
! 2674: frog
! 2675: France
! 2676: *** Failers
! 2677: Africa
! 2678:
! 2679: /^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/
! 2680: ab
! 2681: aBd
! 2682: xy
! 2683: xY
! 2684: zebra
! 2685: Zambesi
! 2686: *** Failers
! 2687: aCD
! 2688: XY
! 2689:
! 2690: /(?<=foo\n)^bar/m
! 2691: foo\nbar
! 2692: *** Failers
! 2693: bar
! 2694: baz\nbar
! 2695:
! 2696: /(?<=(?<!foo)bar)baz/
! 2697: barbaz
! 2698: barbarbaz
! 2699: koobarbaz
! 2700: *** Failers
! 2701: baz
! 2702: foobarbaz
! 2703:
! 2704: /The following tests are taken from the Perl 5.005 test suite; some of them/
! 2705: /are compatible with 5.004, but I'd rather not have to sort them out./
! 2706:
! 2707: /abc/
! 2708: abc
! 2709: xabcy
! 2710: ababc
! 2711: *** Failers
! 2712: xbc
! 2713: axc
! 2714: abx
! 2715:
! 2716: /ab*c/
! 2717: abc
! 2718:
! 2719: /ab*bc/
! 2720: abc
! 2721: abbc
! 2722: abbbbc
! 2723:
! 2724: /.{1}/
! 2725: abbbbc
! 2726:
! 2727: /.{3,4}/
! 2728: abbbbc
! 2729:
! 2730: /ab{0,}bc/
! 2731: abbbbc
! 2732:
! 2733: /ab+bc/
! 2734: abbc
! 2735: *** Failers
! 2736: abc
! 2737: abq
! 2738:
! 2739: /ab+bc/
! 2740: abbbbc
! 2741:
! 2742: /ab{1,}bc/
! 2743: abbbbc
! 2744:
! 2745: /ab{1,3}bc/
! 2746: abbbbc
! 2747:
! 2748: /ab{3,4}bc/
! 2749: abbbbc
! 2750:
! 2751: /ab{4,5}bc/
! 2752: *** Failers
! 2753: abq
! 2754: abbbbc
! 2755:
! 2756: /ab?bc/
! 2757: abbc
! 2758: abc
! 2759:
! 2760: /ab{0,1}bc/
! 2761: abc
! 2762:
! 2763: /ab?bc/
! 2764:
! 2765: /ab?c/
! 2766: abc
! 2767:
! 2768: /ab{0,1}c/
! 2769: abc
! 2770:
! 2771: /^abc$/
! 2772: abc
! 2773: *** Failers
! 2774: abbbbc
! 2775: abcc
! 2776:
! 2777: /^abc/
! 2778: abcc
! 2779:
! 2780: /^abc$/
! 2781:
! 2782: /abc$/
! 2783: aabc
! 2784: *** Failers
! 2785: aabc
! 2786: aabcd
! 2787:
! 2788: /^/
! 2789: abc
! 2790:
! 2791: /$/
! 2792: abc
! 2793:
! 2794: /a.c/
! 2795: abc
! 2796: axc
! 2797:
! 2798: /a.*c/
! 2799: axyzc
! 2800:
! 2801: /a[bc]d/
! 2802: abd
! 2803: *** Failers
! 2804: axyzd
! 2805: abc
! 2806:
! 2807: /a[b-d]e/
! 2808: ace
! 2809:
! 2810: /a[b-d]/
! 2811: aac
! 2812:
! 2813: /a[-b]/
! 2814: a-
! 2815:
! 2816: /a[b-]/
! 2817: a-
! 2818:
! 2819: /a]/
! 2820: a]
! 2821:
! 2822: /a[]]b/
! 2823: a]b
! 2824:
! 2825: /a[^bc]d/
! 2826: aed
! 2827: *** Failers
! 2828: abd
! 2829: abd
! 2830:
! 2831: /a[^-b]c/
! 2832: adc
! 2833:
! 2834: /a[^]b]c/
! 2835: adc
! 2836: *** Failers
! 2837: a-c
! 2838: a]c
! 2839:
! 2840: /\ba\b/
! 2841: a-
! 2842: -a
! 2843: -a-
! 2844:
! 2845: /\by\b/
! 2846: *** Failers
! 2847: xy
! 2848: yz
! 2849: xyz
! 2850:
! 2851: /\Ba\B/
! 2852: *** Failers
! 2853: a-
! 2854: -a
! 2855: -a-
! 2856:
! 2857: /\By\b/
! 2858: xy
! 2859:
! 2860: /\by\B/
! 2861: yz
! 2862:
! 2863: /\By\B/
! 2864: xyz
! 2865:
! 2866: /\w/
! 2867: a
! 2868:
! 2869: /\W/
! 2870: -
! 2871: *** Failers
! 2872: -
! 2873: a
! 2874:
! 2875: /a\sb/
! 2876: a b
! 2877:
! 2878: /a\Sb/
! 2879: a-b
! 2880: *** Failers
! 2881: a-b
! 2882: a b
! 2883:
! 2884: /\d/
! 2885: 1
! 2886:
! 2887: /\D/
! 2888: -
! 2889: *** Failers
! 2890: -
! 2891: 1
! 2892:
! 2893: /[\w]/
! 2894: a
! 2895:
! 2896: /[\W]/
! 2897: -
! 2898: *** Failers
! 2899: -
! 2900: a
! 2901:
! 2902: /a[\s]b/
! 2903: a b
! 2904:
! 2905: /a[\S]b/
! 2906: a-b
! 2907: *** Failers
! 2908: a-b
! 2909: a b
! 2910:
! 2911: /[\d]/
! 2912: 1
! 2913:
! 2914: /[\D]/
! 2915: -
! 2916: *** Failers
! 2917: -
! 2918: 1
! 2919:
! 2920: /ab|cd/
! 2921: abc
! 2922: abcd
! 2923:
! 2924: /()ef/
! 2925: def
! 2926:
! 2927: /$b/
! 2928:
! 2929: /a\(b/
! 2930: a(b
! 2931:
! 2932: /a\(*b/
! 2933: ab
! 2934: a((b
! 2935:
! 2936: /a\\b/
! 2937: a\b
! 2938:
! 2939: /((a))/
! 2940: abc
! 2941:
! 2942: /(a)b(c)/
! 2943: abc
! 2944:
! 2945: /a+b+c/
! 2946: aabbabc
! 2947:
! 2948: /a{1,}b{1,}c/
! 2949: aabbabc
! 2950:
! 2951: /a.+?c/
! 2952: abcabc
! 2953:
! 2954: /(a+|b)*/
! 2955: ab
! 2956:
! 2957: /(a+|b){0,}/
! 2958: ab
! 2959:
! 2960: /(a+|b)+/
! 2961: ab
! 2962:
! 2963: /(a+|b){1,}/
! 2964: ab
! 2965:
! 2966: /(a+|b)?/
! 2967: ab
! 2968:
! 2969: /(a+|b){0,1}/
! 2970: ab
! 2971:
! 2972: /[^ab]*/
! 2973: cde
! 2974:
! 2975: /abc/
! 2976: *** Failers
! 2977: b
! 2978:
! 2979:
! 2980: /a*/
! 2981:
! 2982:
! 2983: /([abc])*d/
! 2984: abbbcd
! 2985:
! 2986: /([abc])*bcd/
! 2987: abcd
! 2988:
! 2989: /a|b|c|d|e/
! 2990: e
! 2991:
! 2992: /(a|b|c|d|e)f/
! 2993: ef
! 2994:
! 2995: /abcd*efg/
! 2996: abcdefg
! 2997:
! 2998: /ab*/
! 2999: xabyabbbz
! 3000: xayabbbz
! 3001:
! 3002: /(ab|cd)e/
! 3003: abcde
! 3004:
! 3005: /[abhgefdc]ij/
! 3006: hij
! 3007:
! 3008: /^(ab|cd)e/
! 3009:
! 3010: /(abc|)ef/
! 3011: abcdef
! 3012:
! 3013: /(a|b)c*d/
! 3014: abcd
! 3015:
! 3016: /(ab|ab*)bc/
! 3017: abc
! 3018:
! 3019: /a([bc]*)c*/
! 3020: abc
! 3021:
! 3022: /a([bc]*)(c*d)/
! 3023: abcd
! 3024:
! 3025: /a([bc]+)(c*d)/
! 3026: abcd
! 3027:
! 3028: /a([bc]*)(c+d)/
! 3029: abcd
! 3030:
! 3031: /a[bcd]*dcdcde/
! 3032: adcdcde
! 3033:
! 3034: /a[bcd]+dcdcde/
! 3035: *** Failers
! 3036: abcde
! 3037: adcdcde
! 3038:
! 3039: /(ab|a)b*c/
! 3040: abc
! 3041:
! 3042: /((a)(b)c)(d)/
! 3043: abcd
! 3044:
! 3045: /[a-zA-Z_][a-zA-Z0-9_]*/
! 3046: alpha
! 3047:
! 3048: /^a(bc+|b[eh])g|.h$/
! 3049: abh
! 3050:
! 3051: /(bc+d$|ef*g.|h?i(j|k))/
! 3052: effgz
! 3053: ij
! 3054: reffgz
! 3055: *** Failers
! 3056: effg
! 3057: bcdd
! 3058:
! 3059: /((((((((((a))))))))))/
! 3060: a
! 3061:
! 3062: /(((((((((a)))))))))/
! 3063: a
! 3064:
! 3065: /multiple words of text/
! 3066: *** Failers
! 3067: aa
! 3068: uh-uh
! 3069:
! 3070: /multiple words/
! 3071: multiple words, yeah
! 3072:
! 3073: /(.*)c(.*)/
! 3074: abcde
! 3075:
! 3076: /\((.*), (.*)\)/
! 3077: (a, b)
! 3078:
! 3079: /[k]/
! 3080:
! 3081: /abcd/
! 3082: abcd
! 3083:
! 3084: /a(bc)d/
! 3085: abcd
! 3086:
! 3087: /a[-]?c/
! 3088: ac
! 3089:
! 3090: /abc/i
! 3091: ABC
! 3092: XABCY
! 3093: ABABC
! 3094: *** Failers
! 3095: aaxabxbaxbbx
! 3096: XBC
! 3097: AXC
! 3098: ABX
! 3099:
! 3100: /ab*c/i
! 3101: ABC
! 3102:
! 3103: /ab*bc/i
! 3104: ABC
! 3105: ABBC
! 3106:
! 3107: /ab*?bc/i
! 3108: ABBBBC
! 3109:
! 3110: /ab{0,}?bc/i
! 3111: ABBBBC
! 3112:
! 3113: /ab+?bc/i
! 3114: ABBC
! 3115:
! 3116: /ab+bc/i
! 3117: *** Failers
! 3118: ABC
! 3119: ABQ
! 3120:
! 3121: /ab{1,}bc/i
! 3122:
! 3123: /ab+bc/i
! 3124: ABBBBC
! 3125:
! 3126: /ab{1,}?bc/i
! 3127: ABBBBC
! 3128:
! 3129: /ab{1,3}?bc/i
! 3130: ABBBBC
! 3131:
! 3132: /ab{3,4}?bc/i
! 3133: ABBBBC
! 3134:
! 3135: /ab{4,5}?bc/i
! 3136: *** Failers
! 3137: ABQ
! 3138: ABBBBC
! 3139:
! 3140: /ab??bc/i
! 3141: ABBC
! 3142: ABC
! 3143:
! 3144: /ab{0,1}?bc/i
! 3145: ABC
! 3146:
! 3147: /ab??bc/i
! 3148:
! 3149: /ab??c/i
! 3150: ABC
! 3151:
! 3152: /ab{0,1}?c/i
! 3153: ABC
! 3154:
! 3155: /^abc$/i
! 3156: ABC
! 3157: *** Failers
! 3158: ABBBBC
! 3159: ABCC
! 3160:
! 3161: /^abc/i
! 3162: ABCC
! 3163:
! 3164: /^abc$/i
! 3165:
! 3166: /abc$/i
! 3167: AABC
! 3168:
! 3169: /^/i
! 3170: ABC
! 3171:
! 3172: /$/i
! 3173: ABC
! 3174:
! 3175: /a.c/i
! 3176: ABC
! 3177: AXC
! 3178:
! 3179: /a.*?c/i
! 3180: AXYZC
! 3181:
! 3182: /a.*c/i
! 3183: *** Failers
! 3184: AABC
! 3185: AXYZD
! 3186:
! 3187: /a[bc]d/i
! 3188: ABD
! 3189:
! 3190: /a[b-d]e/i
! 3191: ACE
! 3192: *** Failers
! 3193: ABC
! 3194: ABD
! 3195:
! 3196: /a[b-d]/i
! 3197: AAC
! 3198:
! 3199: /a[-b]/i
! 3200: A-
! 3201:
! 3202: /a[b-]/i
! 3203: A-
! 3204:
! 3205: /a]/i
! 3206: A]
! 3207:
! 3208: /a[]]b/i
! 3209: A]B
! 3210:
! 3211: /a[^bc]d/i
! 3212: AED
! 3213:
! 3214: /a[^-b]c/i
! 3215: ADC
! 3216: *** Failers
! 3217: ABD
! 3218: A-C
! 3219:
! 3220: /a[^]b]c/i
! 3221: ADC
! 3222:
! 3223: /ab|cd/i
! 3224: ABC
! 3225: ABCD
! 3226:
! 3227: /()ef/i
! 3228: DEF
! 3229:
! 3230: /$b/i
! 3231: *** Failers
! 3232: A]C
! 3233: B
! 3234:
! 3235: /a\(b/i
! 3236: A(B
! 3237:
! 3238: /a\(*b/i
! 3239: AB
! 3240: A((B
! 3241:
! 3242: /a\\b/i
! 3243: A\B
! 3244:
! 3245: /((a))/i
! 3246: ABC
! 3247:
! 3248: /(a)b(c)/i
! 3249: ABC
! 3250:
! 3251: /a+b+c/i
! 3252: AABBABC
! 3253:
! 3254: /a{1,}b{1,}c/i
! 3255: AABBABC
! 3256:
! 3257: /a.+?c/i
! 3258: ABCABC
! 3259:
! 3260: /a.*?c/i
! 3261: ABCABC
! 3262:
! 3263: /a.{0,5}?c/i
! 3264: ABCABC
! 3265:
! 3266: /(a+|b)*/i
! 3267: AB
! 3268:
! 3269: /(a+|b){0,}/i
! 3270: AB
! 3271:
! 3272: /(a+|b)+/i
! 3273: AB
! 3274:
! 3275: /(a+|b){1,}/i
! 3276: AB
! 3277:
! 3278: /(a+|b)?/i
! 3279: AB
! 3280:
! 3281: /(a+|b){0,1}/i
! 3282: AB
! 3283:
! 3284: /(a+|b){0,1}?/i
! 3285: AB
! 3286:
! 3287: /[^ab]*/i
! 3288: CDE
! 3289:
! 3290: /abc/i
! 3291:
! 3292: /a*/i
! 3293:
! 3294:
! 3295: /([abc])*d/i
! 3296: ABBBCD
! 3297:
! 3298: /([abc])*bcd/i
! 3299: ABCD
! 3300:
! 3301: /a|b|c|d|e/i
! 3302: E
! 3303:
! 3304: /(a|b|c|d|e)f/i
! 3305: EF
! 3306:
! 3307: /abcd*efg/i
! 3308: ABCDEFG
! 3309:
! 3310: /ab*/i
! 3311: XABYABBBZ
! 3312: XAYABBBZ
! 3313:
! 3314: /(ab|cd)e/i
! 3315: ABCDE
! 3316:
! 3317: /[abhgefdc]ij/i
! 3318: HIJ
! 3319:
! 3320: /^(ab|cd)e/i
! 3321: ABCDE
! 3322:
! 3323: /(abc|)ef/i
! 3324: ABCDEF
! 3325:
! 3326: /(a|b)c*d/i
! 3327: ABCD
! 3328:
! 3329: /(ab|ab*)bc/i
! 3330: ABC
! 3331:
! 3332: /a([bc]*)c*/i
! 3333: ABC
! 3334:
! 3335: /a([bc]*)(c*d)/i
! 3336: ABCD
! 3337:
! 3338: /a([bc]+)(c*d)/i
! 3339: ABCD
! 3340:
! 3341: /a([bc]*)(c+d)/i
! 3342: ABCD
! 3343:
! 3344: /a[bcd]*dcdcde/i
! 3345: ADCDCDE
! 3346:
! 3347: /a[bcd]+dcdcde/i
! 3348:
! 3349: /(ab|a)b*c/i
! 3350: ABC
! 3351:
! 3352: /((a)(b)c)(d)/i
! 3353: ABCD
! 3354:
! 3355: /[a-zA-Z_][a-zA-Z0-9_]*/i
! 3356: ALPHA
! 3357:
! 3358: /^a(bc+|b[eh])g|.h$/i
! 3359: ABH
! 3360:
! 3361: /(bc+d$|ef*g.|h?i(j|k))/i
! 3362: EFFGZ
! 3363: IJ
! 3364: REFFGZ
! 3365: *** Failers
! 3366: ADCDCDE
! 3367: EFFG
! 3368: BCDD
! 3369:
! 3370: /((((((((((a))))))))))/i
! 3371: A
! 3372:
! 3373: /(((((((((a)))))))))/i
! 3374: A
! 3375:
! 3376: /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i
! 3377: A
! 3378:
! 3379: /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i
! 3380: C
! 3381:
! 3382: /multiple words of text/i
! 3383: *** Failers
! 3384: AA
! 3385: UH-UH
! 3386:
! 3387: /multiple words/i
! 3388: MULTIPLE WORDS, YEAH
! 3389:
! 3390: /(.*)c(.*)/i
! 3391: ABCDE
! 3392:
! 3393: /\((.*), (.*)\)/i
! 3394: (A, B)
! 3395:
! 3396: /[k]/i
! 3397:
! 3398: /abcd/i
! 3399: ABCD
! 3400:
! 3401: /a(bc)d/i
! 3402: ABCD
! 3403:
! 3404: /a[-]?c/i
! 3405: AC
! 3406:
! 3407: /a(?!b)./
! 3408: abad
! 3409:
! 3410: /a(?=d)./
! 3411: abad
! 3412:
! 3413: /a(?=c|d)./
! 3414: abad
! 3415:
! 3416: /a(?:b|c|d)(.)/
! 3417: ace
! 3418:
! 3419: /a(?:b|c|d)*(.)/
! 3420: ace
! 3421:
! 3422: /a(?:b|c|d)+?(.)/
! 3423: ace
! 3424: acdbcdbe
! 3425:
! 3426: /a(?:b|c|d)+(.)/
! 3427: acdbcdbe
! 3428:
! 3429: /a(?:b|c|d){2}(.)/
! 3430: acdbcdbe
! 3431:
! 3432: /a(?:b|c|d){4,5}(.)/
! 3433: acdbcdbe
! 3434:
! 3435: /a(?:b|c|d){4,5}?(.)/
! 3436: acdbcdbe
! 3437:
! 3438: /((foo)|(bar))*/
! 3439: foobar
! 3440:
! 3441: /a(?:b|c|d){6,7}(.)/
! 3442: acdbcdbe
! 3443:
! 3444: /a(?:b|c|d){6,7}?(.)/
! 3445: acdbcdbe
! 3446:
! 3447: /a(?:b|c|d){5,6}(.)/
! 3448: acdbcdbe
! 3449:
! 3450: /a(?:b|c|d){5,6}?(.)/
! 3451: acdbcdbe
! 3452:
! 3453: /a(?:b|c|d){5,7}(.)/
! 3454: acdbcdbe
1.1 misho 3455:
1.1.1.2 ! misho 3456: /a(?:b|c|d){5,7}?(.)/
! 3457: acdbcdbe
! 3458:
! 3459: /a(?:b|(c|e){1,2}?|d)+?(.)/
! 3460: ace
! 3461:
! 3462: /^(.+)?B/
! 3463: AB
! 3464:
! 3465: /^([^a-z])|(\^)$/
! 3466: .
! 3467:
! 3468: /^[<>]&/
! 3469: <&OUT
! 3470:
! 3471: /(?:(f)(o)(o)|(b)(a)(r))*/
! 3472: foobar
! 3473:
! 3474: /(?<=a)b/
1.1 misho 3475: ab
1.1.1.2 ! misho 3476: *** Failers
! 3477: cb
! 3478: b
! 3479:
! 3480: /(?<!c)b/
1.1 misho 3481: ab
1.1.1.2 ! misho 3482: b
! 3483: b
1.1 misho 3484:
1.1.1.2 ! misho 3485: /(?:..)*a/
! 3486: aba
1.1 misho 3487:
1.1.1.2 ! misho 3488: /(?:..)*?a/
! 3489: aba
1.1 misho 3490:
1.1.1.2 ! misho 3491: /^(){3,5}/
! 3492: abc
1.1 misho 3493:
1.1.1.2 ! misho 3494: /^(a+)*ax/
! 3495: aax
1.1 misho 3496:
1.1.1.2 ! misho 3497: /^((a|b)+)*ax/
! 3498: aax
1.1 misho 3499:
1.1.1.2 ! misho 3500: /^((a|bc)+)*ax/
! 3501: aax
1.1 misho 3502:
1.1.1.2 ! misho 3503: /(a|x)*ab/
! 3504: cab
1.1 misho 3505:
1.1.1.2 ! misho 3506: /(a)*ab/
! 3507: cab
1.1 misho 3508:
1.1.1.2 ! misho 3509: /(?:(?i)a)b/
! 3510: ab
1.1 misho 3511:
1.1.1.2 ! misho 3512: /((?i)a)b/
! 3513: ab
1.1 misho 3514:
1.1.1.2 ! misho 3515: /(?:(?i)a)b/
! 3516: Ab
1.1 misho 3517:
1.1.1.2 ! misho 3518: /((?i)a)b/
! 3519: Ab
1.1 misho 3520:
1.1.1.2 ! misho 3521: /(?:(?i)a)b/
1.1 misho 3522: *** Failers
1.1.1.2 ! misho 3523: cb
! 3524: aB
1.1 misho 3525:
1.1.1.2 ! misho 3526: /((?i)a)b/
1.1 misho 3527:
1.1.1.2 ! misho 3528: /(?i:a)b/
! 3529: ab
1.1 misho 3530:
1.1.1.2 ! misho 3531: /((?i:a))b/
! 3532: ab
1.1 misho 3533:
1.1.1.2 ! misho 3534: /(?i:a)b/
! 3535: Ab
1.1 misho 3536:
1.1.1.2 ! misho 3537: /((?i:a))b/
! 3538: Ab
! 3539:
! 3540: /(?i:a)b/
1.1 misho 3541: *** Failers
1.1.1.2 ! misho 3542: aB
! 3543: aB
1.1 misho 3544:
1.1.1.2 ! misho 3545: /((?i:a))b/
1.1 misho 3546:
1.1.1.2 ! misho 3547: /(?:(?-i)a)b/i
! 3548: ab
1.1 misho 3549:
1.1.1.2 ! misho 3550: /((?-i)a)b/i
! 3551: ab
1.1 misho 3552:
1.1.1.2 ! misho 3553: /(?:(?-i)a)b/i
! 3554: aB
1.1 misho 3555:
1.1.1.2 ! misho 3556: /((?-i)a)b/i
! 3557: aB
! 3558:
! 3559: /(?:(?-i)a)b/i
1.1 misho 3560: *** Failers
1.1.1.2 ! misho 3561: aB
! 3562: Ab
1.1 misho 3563:
1.1.1.2 ! misho 3564: /((?-i)a)b/i
1.1 misho 3565:
1.1.1.2 ! misho 3566: /(?:(?-i)a)b/i
! 3567: aB
1.1 misho 3568:
1.1.1.2 ! misho 3569: /((?-i)a)b/i
! 3570: aB
1.1 misho 3571:
1.1.1.2 ! misho 3572: /(?:(?-i)a)b/i
! 3573: *** Failers
! 3574: Ab
! 3575: AB
1.1 misho 3576:
1.1.1.2 ! misho 3577: /((?-i)a)b/i
1.1 misho 3578:
1.1.1.2 ! misho 3579: /(?-i:a)b/i
! 3580: ab
1.1 misho 3581:
1.1.1.2 ! misho 3582: /((?-i:a))b/i
! 3583: ab
1.1 misho 3584:
1.1.1.2 ! misho 3585: /(?-i:a)b/i
! 3586: aB
1.1 misho 3587:
1.1.1.2 ! misho 3588: /((?-i:a))b/i
! 3589: aB
1.1 misho 3590:
1.1.1.2 ! misho 3591: /(?-i:a)b/i
! 3592: *** Failers
! 3593: AB
! 3594: Ab
1.1 misho 3595:
1.1.1.2 ! misho 3596: /((?-i:a))b/i
1.1 misho 3597:
1.1.1.2 ! misho 3598: /(?-i:a)b/i
! 3599: aB
1.1 misho 3600:
1.1.1.2 ! misho 3601: /((?-i:a))b/i
! 3602: aB
1.1 misho 3603:
1.1.1.2 ! misho 3604: /(?-i:a)b/i
! 3605: *** Failers
! 3606: Ab
! 3607: AB
1.1 misho 3608:
1.1.1.2 ! misho 3609: /((?-i:a))b/i
1.1 misho 3610:
1.1.1.2 ! misho 3611: /((?-i:a.))b/i
1.1 misho 3612: *** Failers
1.1.1.2 ! misho 3613: AB
! 3614: a\nB
1.1 misho 3615:
1.1.1.2 ! misho 3616: /((?s-i:a.))b/i
! 3617: a\nB
1.1 misho 3618:
1.1.1.2 ! misho 3619: /(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/
! 3620: cabbbb
1.1 misho 3621:
1.1.1.2 ! misho 3622: /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/
! 3623: caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
1.1 misho 3624:
1.1.1.2 ! misho 3625: /foo\w*\d{4}baz/
! 3626: foobar1234baz
1.1 misho 3627:
1.1.1.2 ! misho 3628: /x(~~)*(?:(?:F)?)?/
! 3629: x~~
1.1 misho 3630:
1.1.1.2 ! misho 3631: /^a(?#xxx){3}c/
! 3632: aaac
1.1 misho 3633:
1.1.1.2 ! misho 3634: /^a (?#xxx) (?#yyy) {3}c/x
! 3635: aaac
1.1 misho 3636:
1.1.1.2 ! misho 3637: /(?<![cd])b/
1.1 misho 3638: *** Failers
1.1.1.2 ! misho 3639: B\nB
! 3640: dbcb
1.1 misho 3641:
1.1.1.2 ! misho 3642: /(?<![cd])[ab]/
! 3643: dbaacb
1.1 misho 3644:
1.1.1.2 ! misho 3645: /(?<!(c|d))b/
1.1 misho 3646:
1.1.1.2 ! misho 3647: /(?<!(c|d))[ab]/
! 3648: dbaacb
1.1 misho 3649:
1.1.1.2 ! misho 3650: /(?<!cd)[ab]/
! 3651: cdaccb
1.1 misho 3652:
1.1.1.2 ! misho 3653: /^(?:a?b?)*$/
1.1 misho 3654: *** Failers
1.1.1.2 ! misho 3655: dbcb
! 3656: a--
1.1 misho 3657:
1.1.1.2 ! misho 3658: /((?s)^a(.))((?m)^b$)/
! 3659: a\nb\nc\n
! 3660:
! 3661: /((?m)^b$)/
! 3662: a\nb\nc\n
! 3663:
! 3664: /(?m)^b/
! 3665: a\nb\n
! 3666:
! 3667: /(?m)^(b)/
! 3668: a\nb\n
1.1 misho 3669:
1.1.1.2 ! misho 3670: /((?m)^b)/
! 3671: a\nb\n
! 3672:
! 3673: /\n((?m)^b)/
! 3674: a\nb\n
! 3675:
! 3676: /((?s).)c(?!.)/
! 3677: a\nb\nc\n
! 3678: a\nb\nc\n
! 3679:
! 3680: /((?s)b.)c(?!.)/
! 3681: a\nb\nc\n
! 3682: a\nb\nc\n
! 3683:
! 3684: /^b/
! 3685:
! 3686: /()^b/
1.1 misho 3687: *** Failers
1.1.1.2 ! misho 3688: a\nb\nc\n
! 3689: a\nb\nc\n
! 3690:
! 3691: /((?m)^b)/
! 3692: a\nb\nc\n
! 3693:
! 3694: /(?(?!a)a|b)/
! 3695:
! 3696: /(?(?!a)b|a)/
! 3697: a
1.1 misho 3698:
1.1.1.2 ! misho 3699: /(?(?=a)b|a)/
1.1 misho 3700: *** Failers
1.1.1.2 ! misho 3701: a
! 3702: a
1.1 misho 3703:
1.1.1.2 ! misho 3704: /(?(?=a)a|b)/
! 3705: a
! 3706:
! 3707: /(\w+:)+/
! 3708: one:
! 3709:
! 3710: /$(?<=^(a))/
! 3711: a
! 3712:
! 3713: /([\w:]+::)?(\w+)$/
! 3714: abcd
! 3715: xy:z:::abcd
! 3716:
! 3717: /^[^bcd]*(c+)/
! 3718: aexycd
! 3719:
! 3720: /(a*)b+/
! 3721: caab
! 3722:
! 3723: /([\w:]+::)?(\w+)$/
! 3724: abcd
! 3725: xy:z:::abcd
1.1 misho 3726: *** Failers
1.1.1.2 ! misho 3727: abcd:
! 3728: abcd:
1.1 misho 3729:
1.1.1.2 ! misho 3730: /^[^bcd]*(c+)/
! 3731: aexycd
1.1 misho 3732:
1.1.1.2 ! misho 3733: /(>a+)ab/
1.1 misho 3734:
1.1.1.2 ! misho 3735: /(?>a+)b/
! 3736: aaab
1.1 misho 3737:
1.1.1.2 ! misho 3738: /([[:]+)/
! 3739: a:[b]:
1.1 misho 3740:
1.1.1.2 ! misho 3741: /([[=]+)/
! 3742: a=[b]=
1.1 misho 3743:
1.1.1.2 ! misho 3744: /([[.]+)/
! 3745: a.[b].
1.1 misho 3746:
1.1.1.2 ! misho 3747: /((?>a+)b)/
! 3748: aaab
1.1 misho 3749:
1.1.1.2 ! misho 3750: /(?>(a+))b/
! 3751: aaab
1.1 misho 3752:
1.1.1.2 ! misho 3753: /((?>[^()]+)|\([^()]*\))+/
! 3754: ((abc(ade)ufh()()x
! 3755:
! 3756: /a\Z/
! 3757: *** Failers
! 3758: aaab
! 3759: a\nb\n
1.1 misho 3760:
1.1.1.2 ! misho 3761: /b\Z/
! 3762: a\nb\n
1.1 misho 3763:
1.1.1.2 ! misho 3764: /b\z/
1.1 misho 3765:
1.1.1.2 ! misho 3766: /b\Z/
! 3767: a\nb
1.1 misho 3768:
1.1.1.2 ! misho 3769: /b\z/
! 3770: a\nb
! 3771: *** Failers
! 3772:
! 3773: /(?>.*)(?<=(abcd|wxyz))/
! 3774: alphabetabcd
! 3775: endingwxyz
1.1 misho 3776: *** Failers
1.1.1.2 ! misho 3777: a rather long string that doesn't end with one of them
1.1 misho 3778:
1.1.1.2 ! misho 3779: /word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/
! 3780: word cat dog elephant mussel cow horse canary baboon snake shark otherword
! 3781: word cat dog elephant mussel cow horse canary baboon snake shark
! 3782:
! 3783: /word (?>[a-zA-Z0-9]+ ){0,30}otherword/
! 3784: 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
! 3785:
! 3786: /(?<=\d{3}(?!999))foo/
! 3787: 999foo
! 3788: 123999foo
! 3789: *** Failers
! 3790: 123abcfoo
! 3791:
! 3792: /(?<=(?!...999)\d{3})foo/
! 3793: 999foo
! 3794: 123999foo
1.1 misho 3795: *** Failers
1.1.1.2 ! misho 3796: 123abcfoo
1.1 misho 3797:
1.1.1.2 ! misho 3798: /(?<=\d{3}(?!999)...)foo/
! 3799: 123abcfoo
! 3800: 123456foo
1.1 misho 3801: *** Failers
1.1.1.2 ! misho 3802: 123999foo
! 3803:
! 3804: /(?<=\d{3}...)(?<!999)foo/
! 3805: 123abcfoo
! 3806: 123456foo
! 3807: *** Failers
! 3808: 123999foo
! 3809:
! 3810: /((Z)+|A)*/
! 3811: ZABCDEFG
! 3812:
! 3813: /(Z()|A)*/
! 3814: ZABCDEFG
1.1 misho 3815:
1.1.1.2 ! misho 3816: /(Z(())|A)*/
! 3817: ZABCDEFG
! 3818:
! 3819: /((?>Z)+|A)*/
! 3820: ZABCDEFG
! 3821:
! 3822: /((?>)+|A)*/
! 3823: ZABCDEFG
! 3824:
! 3825: /a*/g
! 3826: abbab
! 3827:
! 3828: /^[a-\d]/
! 3829: abcde
! 3830: -things
! 3831: 0digit
1.1 misho 3832: *** Failers
1.1.1.2 ! misho 3833: bcdef
1.1 misho 3834:
1.1.1.2 ! misho 3835: /^[\d-a]/
! 3836: abcde
! 3837: -things
! 3838: 0digit
1.1 misho 3839: *** Failers
1.1.1.2 ! misho 3840: bcdef
! 3841:
! 3842: /[[:space:]]+/
! 3843: > \x09\x0a\x0c\x0d\x0b<
! 3844:
! 3845: /[[:blank:]]+/
! 3846: > \x09\x0a\x0c\x0d\x0b<
! 3847:
! 3848: /[\s]+/
! 3849: > \x09\x0a\x0c\x0d\x0b<
! 3850:
! 3851: /\s+/
! 3852: > \x09\x0a\x0c\x0d\x0b<
! 3853:
! 3854: /ab/x
! 3855: ab
! 3856:
! 3857: /(?!\A)x/m
! 3858: a\nxb\n
! 3859:
! 3860: /(?!^)x/m
! 3861: a\nxb\n
1.1 misho 3862:
1.1.1.2 ! misho 3863: /abc\Qabc\Eabc/
! 3864: abcabcabc
! 3865:
! 3866: /abc\Q(*+|\Eabc/
! 3867: abc(*+|abc
! 3868:
! 3869: / abc\Q abc\Eabc/x
! 3870: abc abcabc
1.1 misho 3871: *** Failers
1.1.1.2 ! misho 3872: abcabcabc
! 3873:
! 3874: /abc#comment
! 3875: \Q#not comment
! 3876: literal\E/x
! 3877: abc#not comment\n literal
! 3878:
! 3879: /abc#comment
! 3880: \Q#not comment
! 3881: literal/x
! 3882: abc#not comment\n literal
! 3883:
! 3884: /abc#comment
! 3885: \Q#not comment
! 3886: literal\E #more comment
! 3887: /x
! 3888: abc#not comment\n literal
! 3889:
! 3890: /abc#comment
! 3891: \Q#not comment
! 3892: literal\E #more comment/x
! 3893: abc#not comment\n literal
1.1 misho 3894:
1.1.1.2 ! misho 3895: /\Qabc\$xyz\E/
! 3896: abc\\\$xyz
! 3897:
! 3898: /\Qabc\E\$\Qxyz\E/
! 3899: abc\$xyz
! 3900:
! 3901: /\Gabc/
! 3902: abc
1.1 misho 3903: *** Failers
1.1.1.2 ! misho 3904: xyzabc
1.1 misho 3905:
1.1.1.2 ! misho 3906: /\Gabc./g
! 3907: abc1abc2xyzabc3
1.1 misho 3908:
1.1.1.2 ! misho 3909: /abc./g
! 3910: abc1abc2xyzabc3
1.1 misho 3911:
1.1.1.2 ! misho 3912: /a(?x: b c )d/
! 3913: XabcdY
! 3914: *** Failers
! 3915: Xa b c d Y
1.1 misho 3916:
1.1.1.2 ! misho 3917: /((?x)x y z | a b c)/
! 3918: XabcY
! 3919: AxyzB
1.1 misho 3920:
1.1.1.2 ! misho 3921: /(?i)AB(?-i)C/
! 3922: XabCY
! 3923: *** Failers
! 3924: XabcY
1.1 misho 3925:
1.1.1.2 ! misho 3926: /((?i)AB(?-i)C|D)E/
! 3927: abCE
! 3928: DE
! 3929: *** Failers
! 3930: abcE
! 3931: abCe
! 3932: dE
! 3933: De
1.1 misho 3934:
1.1.1.2 ! misho 3935: /[z\Qa-d]\E]/
! 3936: z
! 3937: a
! 3938: -
! 3939: d
! 3940: ]
! 3941: *** Failers
! 3942: b
1.1 misho 3943:
1.1.1.2 ! misho 3944: /[\z\C]/
! 3945: z
! 3946: C
! 3947:
! 3948: /\M/
! 3949: M
! 3950:
! 3951: /(a+)*b/
! 3952: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
! 3953:
! 3954: /(?i)reg(?:ul(?:[a]|ae)r|ex)/
! 3955: REGular
! 3956: regulaer
! 3957: Regex
! 3958: regulr
! 3959:
! 3960: /[--]+/
! 3961:
! 3962:
! 3963:
! 3964:
! 3965:
! 3966: /(?<=Z)X./
! 3967: \x84XAZXB
! 3968:
! 3969: /^(?(2)a|(1)(2))+$/
! 3970: 123a
! 3971:
! 3972: /(?<=a|bbbb)c/
! 3973: ac
! 3974: bbbbc
! 3975:
! 3976: /abc/SS>testsavedregex
! 3977: <testsavedregex
! 3978: abc
! 3979: *** Failers
! 3980: bca
! 3981:
! 3982: /abc/FSS>testsavedregex
! 3983: <testsavedregex
! 3984: abc
! 3985: *** Failers
! 3986: bca
! 3987:
! 3988: /(a|b)/S>testsavedregex
! 3989: <testsavedregex
! 3990: abc
! 3991: *** Failers
! 3992: def
! 3993:
! 3994: /(a|b)/SF>testsavedregex
! 3995: <testsavedregex
! 3996: abc
! 3997: *** Failers
! 3998: def
! 3999:
! 4000: /line\nbreak/
! 4001: this is a line\nbreak
! 4002: line one\nthis is a line\nbreak in the second line
! 4003:
! 4004: /line\nbreak/f
! 4005: this is a line\nbreak
! 4006: ** Failers
! 4007: line one\nthis is a line\nbreak in the second line
1.1 misho 4008:
1.1.1.2 ! misho 4009: /line\nbreak/mf
! 4010: this is a line\nbreak
! 4011: ** Failers
! 4012: line one\nthis is a line\nbreak in the second line
! 4013:
! 4014: /1234/
! 4015: 123\P
! 4016: a4\P\R
! 4017:
! 4018: /1234/
! 4019: 123\P
! 4020: 4\P\R
! 4021:
! 4022: /^/mg
! 4023: a\nb\nc\n
! 4024: \
! 4025:
! 4026: /(?<=C\n)^/mg
! 4027: A\nC\nC\n
! 4028:
! 4029: /(?s)A?B/
! 4030: AB
! 4031: aB
! 4032:
! 4033: /(?s)A*B/
! 4034: AB
! 4035: aB
! 4036:
! 4037: /(?m)A?B/
! 4038: AB
! 4039: aB
! 4040:
! 4041: /(?m)A*B/
! 4042: AB
! 4043: aB
! 4044:
! 4045: /Content-Type\x3A[^\r\n]{6,}/
! 4046: Content-Type:xxxxxyyy
! 4047:
! 4048: /Content-Type\x3A[^\r\n]{6,}z/
! 4049: Content-Type:xxxxxyyyz
! 4050:
! 4051: /Content-Type\x3A[^a]{6,}/
! 4052: Content-Type:xxxyyy
! 4053:
! 4054: /Content-Type\x3A[^a]{6,}z/
! 4055: Content-Type:xxxyyyz
! 4056:
! 4057: /^abc/m
! 4058: xyz\nabc
! 4059: xyz\nabc\<lf>
! 4060: xyz\r\nabc\<lf>
! 4061: xyz\rabc\<cr>
! 4062: xyz\r\nabc\<crlf>
! 4063: ** Failers
! 4064: xyz\nabc\<cr>
! 4065: xyz\r\nabc\<cr>
! 4066: xyz\nabc\<crlf>
! 4067: xyz\rabc\<crlf>
! 4068: xyz\rabc\<lf>
! 4069:
! 4070: /abc$/m<lf>
! 4071: xyzabc
! 4072: xyzabc\n
! 4073: xyzabc\npqr
! 4074: xyzabc\r\<cr>
! 4075: xyzabc\rpqr\<cr>
! 4076: xyzabc\r\n\<crlf>
! 4077: xyzabc\r\npqr\<crlf>
! 4078: ** Failers
! 4079: xyzabc\r
! 4080: xyzabc\rpqr
! 4081: xyzabc\r\n
! 4082: xyzabc\r\npqr
! 4083:
! 4084: /^abc/m<cr>
! 4085: xyz\rabcdef
! 4086: xyz\nabcdef\<lf>
! 4087: ** Failers
! 4088: xyz\nabcdef
! 4089:
! 4090: /^abc/m<lf>
! 4091: xyz\nabcdef
! 4092: xyz\rabcdef\<cr>
! 4093: ** Failers
! 4094: xyz\rabcdef
! 4095:
! 4096: /^abc/m<crlf>
! 4097: xyz\r\nabcdef
! 4098: xyz\rabcdef\<cr>
! 4099: ** Failers
! 4100: xyz\rabcdef
! 4101:
! 4102: /.*/<lf>
! 4103: abc\ndef
! 4104: abc\rdef
! 4105: abc\r\ndef
! 4106: \<cr>abc\ndef
! 4107: \<cr>abc\rdef
! 4108: \<cr>abc\r\ndef
! 4109: \<crlf>abc\ndef
! 4110: \<crlf>abc\rdef
! 4111: \<crlf>abc\r\ndef
! 4112:
! 4113: /\w+(.)(.)?def/s
! 4114: abc\ndef
! 4115: abc\rdef
! 4116: abc\r\ndef
! 4117:
! 4118: /^\w+=.*(\\\n.*)*/
! 4119: abc=xyz\\\npqr
! 4120:
! 4121: /^(a()*)*/
! 4122: aaaa
! 4123:
! 4124: /^(?:a(?:(?:))*)*/
! 4125: aaaa
! 4126:
! 4127: /^(a()+)+/
! 4128: aaaa
! 4129:
! 4130: /^(?:a(?:(?:))+)+/
! 4131: aaaa
! 4132:
! 4133: /(a|)*\d/
! 4134: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
! 4135: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
! 4136:
! 4137: /(?>a|)*\d/
! 4138: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
! 4139: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
! 4140:
! 4141: /(?:a|)*\d/
! 4142: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
! 4143: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
1.1 misho 4144:
1.1.1.2 ! misho 4145: /^a.b/<lf>
! 4146: a\rb
! 4147: a\nb\<cr>
! 4148: ** Failers
! 4149: a\nb
! 4150: a\nb\<any>
! 4151: a\rb\<cr>
! 4152: a\rb\<any>
1.1 misho 4153:
1.1.1.2 ! misho 4154: /^abc./mgx<any>
! 4155: abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x85abc7 JUNK
1.1 misho 4156:
1.1.1.2 ! misho 4157: /abc.$/mgx<any>
! 4158: abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc9
1.1 misho 4159:
1.1.1.2 ! misho 4160: /^a\Rb/<bsr_unicode>
1.1 misho 4161: a\nb
4162: a\rb
4163: a\r\nb
4164: a\x0bb
4165: a\x0cb
1.1.1.2 ! misho 4166: a\x85b
1.1 misho 4167: ** Failers
4168: a\n\rb
4169:
1.1.1.2 ! misho 4170: /^a\R*b/<bsr_unicode>
1.1 misho 4171: ab
4172: a\nb
4173: a\rb
4174: a\r\nb
4175: a\x0bb
1.1.1.2 ! misho 4176: a\x0cb
! 4177: a\x85b
1.1 misho 4178: a\n\rb
1.1.1.2 ! misho 4179: a\n\r\x85\x0cb
1.1 misho 4180:
1.1.1.2 ! misho 4181: /^a\R+b/<bsr_unicode>
1.1 misho 4182: a\nb
4183: a\rb
4184: a\r\nb
4185: a\x0bb
1.1.1.2 ! misho 4186: a\x0cb
! 4187: a\x85b
1.1 misho 4188: a\n\rb
1.1.1.2 ! misho 4189: a\n\r\x85\x0cb
1.1 misho 4190: ** Failers
4191: ab
1.1.1.2 ! misho 4192:
! 4193: /^a\R{1,3}b/<bsr_unicode>
1.1 misho 4194: a\nb
4195: a\n\rb
1.1.1.2 ! misho 4196: a\n\r\x85b
1.1 misho 4197: a\r\n\r\nb
4198: a\r\n\r\n\r\nb
4199: a\n\r\n\rb
4200: a\n\n\r\nb
4201: ** Failers
4202: a\n\n\n\rb
4203: a\r
4204:
1.1.1.2 ! misho 4205: /^a[\R]b/<bsr_unicode>
! 4206: aRb
! 4207: ** Failers
! 4208: a\nb
! 4209:
! 4210: /.+foo/
! 4211: afoo
! 4212: ** Failers
! 4213: \r\nfoo
! 4214: \nfoo
! 4215:
! 4216: /.+foo/<crlf>
! 4217: afoo
! 4218: \nfoo
! 4219: ** Failers
! 4220: \r\nfoo
! 4221:
! 4222: /.+foo/<any>
! 4223: afoo
! 4224: ** Failers
! 4225: \nfoo
! 4226: \r\nfoo
! 4227:
! 4228: /.+foo/s
! 4229: afoo
! 4230: \r\nfoo
! 4231: \nfoo
! 4232:
! 4233: /^$/mg<any>
! 4234: abc\r\rxyz
! 4235: abc\n\rxyz
! 4236: ** Failers
! 4237: abc\r\nxyz
1.1 misho 4238:
1.1.1.2 ! misho 4239: /^X/m
! 4240: XABC
! 4241: ** Failers
! 4242: XABC\B
1.1 misho 4243:
1.1.1.2 ! misho 4244: /(?m)^$/<any>g+
! 4245: abc\r\n\r\n
1.1 misho 4246:
1.1.1.2 ! misho 4247: /(?m)^$|^\r\n/<any>g+
! 4248: abc\r\n\r\n
! 4249:
! 4250: /(?m)$/<any>g+
! 4251: abc\r\n\r\n
1.1 misho 4252:
1.1.1.2 ! misho 4253: /(?|(abc)|(xyz))/
! 4254: >abc<
! 4255: >xyz<
! 4256:
! 4257: /(x)(?|(abc)|(xyz))(x)/
! 4258: xabcx
! 4259: xxyzx
! 4260:
! 4261: /(x)(?|(abc)(pqr)|(xyz))(x)/
! 4262: xabcpqrx
! 4263: xxyzx
! 4264:
! 4265: /(?|(abc)|(xyz))(?1)/
! 4266: abcabc
! 4267: xyzabc
! 4268: ** Failers
! 4269: xyzxyz
! 4270:
! 4271: /\H\h\V\v/
1.1 misho 4272: X X\x0a
4273: X\x09X\x0b
4274: ** Failers
1.1.1.2 ! misho 4275: \xa0 X\x0a
1.1 misho 4276:
1.1.1.2 ! misho 4277: /\H*\h+\V?\v{3,4}/
! 4278: \x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a
! 4279: \x09\x20\xa0\x0a\x0b\x0c\x0d\x0a
! 4280: \x09\x20\xa0\x0a\x0b\x0c
1.1 misho 4281: ** Failers
1.1.1.2 ! misho 4282: \x09\x20\xa0\x0a\x0b
1.1 misho 4283:
1.1.1.2 ! misho 4284: /\H{3,4}/
! 4285: XY ABCDE
! 4286: XY PQR ST
! 4287:
! 4288: /.\h{3,4}./
! 4289: XY AB PQRS
! 4290:
! 4291: /\h*X\h?\H+Y\H?Z/
! 4292: >XNNNYZ
! 4293: > X NYQZ
! 4294: ** Failers
! 4295: >XYZ
! 4296: > X NY Z
! 4297:
! 4298: /\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/
! 4299: >XY\x0aZ\x0aA\x0bNN\x0c
! 4300: >\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
! 4301:
! 4302: /.+A/<crlf>
! 4303: \r\nA
! 4304:
! 4305: /\nA/<crlf>
! 4306: \r\nA
! 4307:
! 4308: /[\r\n]A/<crlf>
! 4309: \r\nA
! 4310:
! 4311: /(\r|\n)A/<crlf>
! 4312: \r\nA
! 4313:
! 4314: /a\Rb/I<bsr_anycrlf>
1.1 misho 4315: a\rb
4316: a\nb
4317: a\r\nb
4318: ** Failers
1.1.1.2 ! misho 4319: a\x85b
1.1 misho 4320: a\x0bb
4321:
1.1.1.2 ! misho 4322: /a\Rb/I<bsr_unicode>
1.1 misho 4323: a\rb
4324: a\nb
4325: a\r\nb
1.1.1.2 ! misho 4326: a\x85b
1.1 misho 4327: a\x0bb
4328: ** Failers
1.1.1.2 ! misho 4329: a\x85b\<bsr_anycrlf>
1.1 misho 4330: a\x0bb\<bsr_anycrlf>
4331:
1.1.1.2 ! misho 4332: /a\R?b/I<bsr_anycrlf>
1.1 misho 4333: a\rb
4334: a\nb
4335: a\r\nb
4336: ** Failers
1.1.1.2 ! misho 4337: a\x85b
1.1 misho 4338: a\x0bb
4339:
1.1.1.2 ! misho 4340: /a\R?b/I<bsr_unicode>
1.1 misho 4341: a\rb
4342: a\nb
4343: a\r\nb
1.1.1.2 ! misho 4344: a\x85b
1.1 misho 4345: a\x0bb
4346: ** Failers
1.1.1.2 ! misho 4347: a\x85b\<bsr_anycrlf>
1.1 misho 4348: a\x0bb\<bsr_anycrlf>
1.1.1.2 ! misho 4349:
! 4350: /a\R{2,4}b/I<bsr_anycrlf>
! 4351: a\r\n\nb
! 4352: a\n\r\rb
! 4353: a\r\n\r\n\r\n\r\nb
! 4354: ** Failers
! 4355: a\x85\85b
! 4356: a\x0b\0bb
! 4357:
! 4358: /a\R{2,4}b/I<bsr_unicode>
! 4359: a\r\rb
! 4360: a\n\n\nb
! 4361: a\r\n\n\r\rb
! 4362: a\x85\85b
! 4363: a\x0b\0bb
! 4364: ** Failers
! 4365: a\r\r\r\r\rb
! 4366: a\x85\85b\<bsr_anycrlf>
! 4367: a\x0b\0bb\<bsr_anycrlf>
! 4368:
! 4369: /a(?!)|\wbc/
! 4370: abc
! 4371:
! 4372: /a[]b/<JS>
! 4373: ** Failers
! 4374: ab
! 4375:
! 4376: /a[]+b/<JS>
! 4377: ** Failers
! 4378: ab
! 4379:
! 4380: /a[]*+b/<JS>
! 4381: ** Failers
! 4382: ab
! 4383:
! 4384: /a[^]b/<JS>
! 4385: aXb
! 4386: a\nb
! 4387: ** Failers
! 4388: ab
! 4389:
! 4390: /a[^]+b/<JS>
! 4391: aXb
! 4392: a\nX\nXb
! 4393: ** Failers
! 4394: ab
! 4395:
! 4396: /X$/E
! 4397: X
! 4398: ** Failers
! 4399: X\n
! 4400:
! 4401: /X$/
! 4402: X
! 4403: X\n
! 4404:
! 4405: /xyz/C
! 4406: xyz
! 4407: abcxyz
! 4408: abcxyz\Y
! 4409: ** Failers
! 4410: abc
! 4411: abc\Y
! 4412: abcxypqr
! 4413: abcxypqr\Y
! 4414:
! 4415: /(*NO_START_OPT)xyz/C
! 4416: abcxyz
! 4417:
! 4418: /(?C)ab/
! 4419: ab
! 4420: \C-ab
! 4421:
! 4422: /ab/C
! 4423: ab
! 4424: \C-ab
! 4425:
! 4426: /^"((?(?=[a])[^"])|b)*"$/C
! 4427: "ab"
! 4428: \C-"ab"
! 4429:
! 4430: /\d+X|9+Y/
! 4431: ++++123999\P
! 4432: ++++123999Y\P
! 4433:
! 4434: /Z(*F)/
! 4435: Z\P
! 4436: ZA\P
! 4437:
! 4438: /Z(?!)/
! 4439: Z\P
! 4440: ZA\P
! 4441:
! 4442: /dog(sbody)?/
! 4443: dogs\P
! 4444: dogs\P\P
! 4445:
! 4446: /dog(sbody)??/
! 4447: dogs\P
! 4448: dogs\P\P
! 4449:
! 4450: /dog|dogsbody/
! 4451: dogs\P
! 4452: dogs\P\P
1.1 misho 4453:
1.1.1.2 ! misho 4454: /dogsbody|dog/
! 4455: dogs\P
! 4456: dogs\P\P
! 4457:
! 4458: /Z(*F)Q|ZXY/
! 4459: Z\P
! 4460: ZA\P
! 4461: X\P
! 4462:
! 4463: /\bthe cat\b/
! 4464: the cat\P
! 4465: the cat\P\P
! 4466:
! 4467: /dog(sbody)?/
! 4468: dogs\D\P
! 4469: body\D\R
! 4470:
! 4471: /dog(sbody)?/
! 4472: dogs\D\P\P
! 4473: body\D\R
! 4474:
! 4475: /abc/
! 4476: abc\P
! 4477: abc\P\P
! 4478:
! 4479: /abc\K123/
! 4480: xyzabc123pqr
! 4481:
! 4482: /(?<=abc)123/
! 4483: xyzabc123pqr
! 4484: xyzabc12\P
! 4485: xyzabc12\P\P
! 4486:
! 4487: /\babc\b/
! 4488: +++abc+++
! 4489: +++ab\P
! 4490: +++ab\P\P
! 4491:
! 4492: /(?=C)/g+
! 4493: ABCDECBA
! 4494:
! 4495: /(abc|def|xyz)/I
! 4496: terhjk;abcdaadsfe
! 4497: the quick xyz brown fox
! 4498: \Yterhjk;abcdaadsfe
! 4499: \Ythe quick xyz brown fox
! 4500: ** Failers
! 4501: thejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
! 4502: \Ythejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
! 4503:
! 4504: /(abc|def|xyz)/SI
! 4505: terhjk;abcdaadsfe
! 4506: the quick xyz brown fox
! 4507: \Yterhjk;abcdaadsfe
! 4508: \Ythe quick xyz brown fox
! 4509: ** Failers
! 4510: thejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
! 4511: \Ythejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
1.1 misho 4512:
1.1.1.2 ! misho 4513: /abcd*/+
1.1 misho 4514: xxxxabcd\P
4515: xxxxabcd\P\P
1.1.1.2 ! misho 4516: dddxxx\R
! 4517: xxxxabcd\P\P
! 4518: xxx\R
1.1 misho 4519:
1.1.1.2 ! misho 4520: /abcd*/i
1.1 misho 4521: xxxxabcd\P
4522: xxxxabcd\P\P
4523: XXXXABCD\P
4524: XXXXABCD\P\P
4525:
1.1.1.2 ! misho 4526: /abc\d*/
1.1 misho 4527: xxxxabc1\P
4528: xxxxabc1\P\P
4529:
1.1.1.2 ! misho 4530: /abc[de]*/
1.1 misho 4531: xxxxabcde\P
4532: xxxxabcde\P\P
4533:
1.1.1.2 ! misho 4534: /(?:(?1)|B)(A(*F)|C)/
! 4535: ABCD
! 4536: CCD
! 4537: ** Failers
! 4538: CAD
! 4539:
! 4540: /^(?:(?1)|B)(A(*F)|C)/
! 4541: CCD
! 4542: BCD
! 4543: ** Failers
! 4544: ABCD
! 4545: CAD
! 4546: BAD
! 4547:
! 4548: /^(?!a(*SKIP)b)/
! 4549: ac
! 4550:
! 4551: /^(?=a(*SKIP)b|ac)/
! 4552: ** Failers
! 4553: ac
! 4554:
! 4555: /^(?=a(*THEN)b|ac)/
! 4556: ac
! 4557:
! 4558: /^(?=a(*PRUNE)b)/
! 4559: ab
! 4560: ** Failers
! 4561: ac
! 4562:
! 4563: /^(?(?!a(*SKIP)b))/
! 4564: ac
! 4565:
! 4566: /(?<=abc)def/
! 4567: abc\P\P
! 4568:
! 4569: /abc$/
! 4570: abc
! 4571: abc\P
! 4572: abc\P\P
! 4573:
! 4574: /abc$/m
! 4575: abc
! 4576: abc\n
! 4577: abc\P\P
! 4578: abc\n\P\P
! 4579: abc\P
! 4580: abc\n\P
! 4581:
! 4582: /abc\z/
! 4583: abc
! 4584: abc\P
! 4585: abc\P\P
! 4586:
! 4587: /abc\Z/
! 4588: abc
! 4589: abc\P
! 4590: abc\P\P
! 4591:
! 4592: /abc\b/
! 4593: abc
! 4594: abc\P
! 4595: abc\P\P
! 4596:
! 4597: /abc\B/
! 4598: abc
! 4599: abc\P
! 4600: abc\P\P
! 4601:
! 4602: /.+/
! 4603: abc\>0
! 4604: abc\>1
! 4605: abc\>2
! 4606: abc\>3
! 4607: abc\>4
! 4608: abc\>-4
! 4609:
! 4610: /^(?:a)++\w/
! 4611: aaaab
! 4612: ** Failers
! 4613: aaaa
! 4614: bbb
! 4615:
! 4616: /^(?:aa|(?:a)++\w)/
! 4617: aaaab
! 4618: aaaa
! 4619: ** Failers
! 4620: bbb
! 4621:
! 4622: /^(?:a)*+\w/
! 4623: aaaab
! 4624: bbb
! 4625: ** Failers
! 4626: aaaa
! 4627:
! 4628: /^(a)++\w/
! 4629: aaaab
! 4630: ** Failers
! 4631: aaaa
! 4632: bbb
! 4633:
! 4634: /^(a|)++\w/
! 4635: aaaab
! 4636: ** Failers
! 4637: aaaa
! 4638: bbb
! 4639:
! 4640: /(?=abc){3}abc/+
! 4641: abcabcabc
! 4642: ** Failers
! 4643: xyz
! 4644:
! 4645: /(?=abc)+abc/+
! 4646: abcabcabc
! 4647: ** Failers
! 4648: xyz
! 4649:
! 4650: /(?=abc)++abc/+
! 4651: abcabcabc
! 4652: ** Failers
! 4653: xyz
! 4654:
! 4655: /(?=abc){0}xyz/
! 4656: xyz
! 4657:
! 4658: /(?=abc){1}xyz/
! 4659: ** Failers
! 4660: xyz
! 4661:
! 4662: /(?=(a))?./
! 4663: ab
! 4664: bc
! 4665:
! 4666: /(?=(a))??./
! 4667: ab
! 4668: bc
1.1 misho 4669:
1.1.1.2 ! misho 4670: /^(?=(a)){0}b(?1)/
! 4671: backgammon
! 4672:
! 4673: /^(?=(?1))?[az]([abc])d/
! 4674: abd
! 4675: zcdxx
! 4676:
! 4677: /^(?!a){0}\w+/
! 4678: aaaaa
! 4679:
! 4680: /(?<=(abc))?xyz/
! 4681: abcxyz
! 4682: pqrxyz
! 4683:
! 4684: /((?2))((?1))/
! 4685: abc
! 4686:
! 4687: /(?(R)a+|(?R)b)/
! 4688: aaaabcde
! 4689:
! 4690: /(?(R)a+|((?R))b)/
! 4691: aaaabcde
! 4692:
! 4693: /((?(R)a+|(?1)b))/
! 4694: aaaabcde
! 4695:
! 4696: /((?(R2)a+|(?1)b))/
! 4697: aaaabcde
! 4698:
! 4699: /(?(R)a*(?1)|((?R))b)/
! 4700: aaaabcde
! 4701:
! 4702: /(a+)/
! 4703: \O6aaaa
! 4704: \O8aaaa
! 4705:
! 4706: /ab\Cde/
! 4707: abXde
! 4708:
! 4709: /(?<=ab\Cde)X/
! 4710: abZdeX
! 4711:
! 4712: /^\R/
! 4713: \r\P
! 4714: \r\P\P
! 4715:
! 4716: /^\R{2,3}x/
! 4717: \r\P
! 4718: \r\P\P
! 4719: \r\r\P
! 4720: \r\r\P\P
! 4721: \r\r\r\P
! 4722: \r\r\r\P\P
! 4723: \r\rx
! 4724: \r\r\rx
! 4725:
! 4726: /^\R{2,3}?x/
! 4727: \r\P
! 4728: \r\P\P
! 4729: \r\r\P
! 4730: \r\r\P\P
! 4731: \r\r\r\P
! 4732: \r\r\r\P\P
! 4733: \r\rx
! 4734: \r\r\rx
! 4735:
! 4736: /^\R?x/
! 4737: \r\P
! 4738: \r\P\P
! 4739: x
! 4740: \rx
! 4741:
! 4742: /^\R+x/
! 4743: \r\P
! 4744: \r\P\P
! 4745: \r\n\P
! 4746: \r\n\P\P
! 4747: \rx
! 4748:
! 4749: /^a$/<CRLF>
! 4750: a\r\P
! 4751: a\r\P\P
! 4752:
! 4753: /^a$/m<CRLF>
! 4754: a\r\P
! 4755: a\r\P\P
! 4756:
! 4757: /^(a$|a\r)/<CRLF>
! 4758: a\r\P
! 4759: a\r\P\P
! 4760:
! 4761: /^(a$|a\r)/m<CRLF>
! 4762: a\r\P
! 4763: a\r\P\P
! 4764:
! 4765: /./<CRLF>
! 4766: \r\P
! 4767: \r\P\P
! 4768:
! 4769: /.{2,3}/<CRLF>
! 4770: \r\P
! 4771: \r\P\P
! 4772: \r\r\P
! 4773: \r\r\P\P
! 4774: \r\r\r\P
! 4775: \r\r\r\P\P
! 4776:
! 4777: /.{2,3}?/<CRLF>
! 4778: \r\P
! 4779: \r\P\P
! 4780: \r\r\P
! 4781: \r\r\P\P
! 4782: \r\r\r\P
! 4783: \r\r\r\P\P
! 4784:
! 4785: /-- Test simple validity check for restarts --/
! 4786:
! 4787: /abcdef/
! 4788: abc\R
! 4789:
! 4790: /<H((?(?!<H|F>)(.)|(?R))++)*F>/
! 4791: text <H more text <H texting more hexA0-"\xA0" hex above 7F-"\xBC" F> text xxxxx <H text F> text F> text2 <H text sample F> more text.
! 4792:
! 4793: /^(?>.{4})abc|^\w\w.xabcd/
! 4794: xxxxabcd
! 4795: xx\xa0xabcd
! 4796:
! 4797: /^(.{4}){2}+abc|^\w\w.x\w\w\w\wabcd/
! 4798: xxxxxxxxabcd
! 4799: xx\xa0xxxxxabcd
1.1 misho 4800:
1.1.1.2 ! misho 4801: /-- End of testinput8 --/
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>