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