Annotation of embedaddon/pcre/testdata/testinput1, revision 1.1.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>