/[pcre]/code/branches/pcre16/testdata/testoutput8
ViewVC logotype

Diff of /code/branches/pcre16/testdata/testoutput8

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 813 by ph10, Mon Dec 19 13:34:10 2011 UTC revision 814 by ph10, Wed Dec 21 12:05:24 2011 UTC
# Line 1  Line 1 
1  /-- This set of tests checks UTF-8 support with the DFA matching functionality  /-- This set of tests check the DFA matching functionality of pcre_dfa_exec().
2      of pcre_dfa_exec(). The -dfa flag must be used with pcretest when running      The -dfa flag must be used with pcretest when running it. --/
3      it. --/  
4    /abc/
5  /\x{100}ab/8      abc
6    \x{100}ab   0: abc
7   0: \x{100}ab  
8    /ab*c/
9  /a\x{100}*b/8      abc
10      ab   0: abc
11   0: ab      abbbbc
12      a\x{100}b   0: abbbbc
13   0: a\x{100}b      ac
14      a\x{100}\x{100}b   0: ac
15   0: a\x{100}\x{100}b  
16    /ab+c/
17  /a\x{100}+b/8      abc
18      a\x{100}b   0: abc
19   0: a\x{100}b      abbbbbbc
20      a\x{100}\x{100}b   0: abbbbbbc
  0: a\x{100}\x{100}b  
21      *** Failers      *** Failers
22  No match  No match
23        ac
24    No match
25      ab      ab
26  No match  No match
27    
28  /\bX/8  /a*/
29      Xoanon      a
30   0: X   0: a
31      +Xoanon   1:
32   0: X      aaaaaaaaaaaaaaaaa
33      \x{300}Xoanon   0: aaaaaaaaaaaaaaaaa
34   0: X   1: aaaaaaaaaaaaaaaa
35      *** Failers   2: aaaaaaaaaaaaaaa
36     3: aaaaaaaaaaaaaa
37     4: aaaaaaaaaaaaa
38     5: aaaaaaaaaaaa
39     6: aaaaaaaaaaa
40     7: aaaaaaaaaa
41     8: aaaaaaaaa
42     9: aaaaaaaa
43    10: aaaaaaa
44    11: aaaaaa
45    12: aaaaa
46    13: aaaa
47    14: aaa
48    15: aa
49    16: a
50    17:
51        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
52    Matched, but too many subsidiary matches
53     0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
54     1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaa
55     2: aaaaaaaaaaaaaaaaaaaaaaaaaaaa
56     3: aaaaaaaaaaaaaaaaaaaaaaaaaaa
57     4: aaaaaaaaaaaaaaaaaaaaaaaaaa
58     5: aaaaaaaaaaaaaaaaaaaaaaaaa
59     6: aaaaaaaaaaaaaaaaaaaaaaaa
60     7: aaaaaaaaaaaaaaaaaaaaaaa
61     8: aaaaaaaaaaaaaaaaaaaaaa
62     9: aaaaaaaaaaaaaaaaaaaaa
63    10: aaaaaaaaaaaaaaaaaaaa
64    11: aaaaaaaaaaaaaaaaaaa
65    12: aaaaaaaaaaaaaaaaaa
66    13: aaaaaaaaaaaaaaaaa
67    14: aaaaaaaaaaaaaaaa
68    15: aaaaaaaaaaaaaaa
69    16: aaaaaaaaaaaaaa
70    17: aaaaaaaaaaaaa
71    18: aaaaaaaaaaaa
72    19: aaaaaaaaaaa
73    20: aaaaaaaaaa
74    21: aaaaaaaaa
75        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\F
76     0:
77    
78    /(a|abcd|african)/
79        a
80     0: a
81        abcd
82     0: abcd
83     1: a
84        african
85     0: african
86     1: a
87    
88    /^abc/
89        abcdef
90     0: abc
91        *** Failers
92    No match
93        xyzabc
94  No match  No match
95      YXoanon      xyz\nabc
96  No match  No match
97    
98  /\BX/8  /^abc/m
99      YXoanon      abcdef
100   0: X   0: abc
101        xyz\nabc
102     0: abc
103      *** Failers      *** Failers
104  No match  No match
105      Xoanon      xyzabc
106  No match  No match
107      +Xoanon  
108    /\Aabc/
109        abcdef
110     0: abc
111        *** Failers
112  No match  No match
113      \x{300}Xoanon      xyzabc
114  No match  No match
115        xyz\nabc
116  /X\b/8  No match
117      X+oanon  
118   0: X  /\Aabc/m
119      ZX\x{300}oanon      abcdef
120   0: X   0: abc
121      FAX      *** Failers
122   0: X  No match
123      *** Failers      xyzabc
124  No match  No match
125      Xoanon      xyz\nabc
126  No match  No match
127    
128  /X\B/8  /\Gabc/
129      Xoanon      abcdef
130   0: X   0: abc
131        xyzabc\>3
132     0: abc
133      *** Failers      *** Failers
134  No match  No match
135      X+oanon      xyzabc
136    No match
137        xyzabc\>2
138    No match
139    
140    /x\dy\Dz/
141        x9yzz
142     0: x9yzz
143        x0y+z
144     0: x0y+z
145        *** Failers
146  No match  No match
147      ZX\x{300}oanon      xyz
148  No match  No match
149      FAX      xxy0z
150  No match  No match
151    
152  /[^a]/8  /x\sy\Sz/
153      abcd      x yzz
154   0: b   0: x yzz
155      a\x{100}      x y+z
156   0: \x{100}   0: x y+z
   
 /^[abc\x{123}\x{400}-\x{402}]{2,3}\d/8  
     ab99  
  0: ab9  
     \x{123}\x{123}45  
  0: \x{123}\x{123}4  
     \x{400}\x{401}\x{402}6  
  0: \x{400}\x{401}\x{402}6  
157      *** Failers      *** Failers
158  No match  No match
159      d99      xyz
160  No match  No match
161      \x{123}\x{122}4      xxyyz
162  No match  No match
163      \x{400}\x{403}6  
164    /x\wy\Wz/
165        xxy+z
166     0: xxy+z
167        *** Failers
168  No match  No match
169      \x{400}\x{401}\x{402}\x{402}6      xxy0z
170  No match  No match
171        x+y+z
 /abc/8  
     ]  
 Error -10 (bad UTF-8 string) offset=0 reason=6  
       
 Error -10 (bad UTF-8 string) offset=0 reason=1  
       
 Error -10 (bad UTF-8 string) offset=0 reason=6  
     \?  
172  No match  No match
173      \xe1\x88  
174  Error -10 (bad UTF-8 string) offset=0 reason=1  /x.y/
175      \P\xe1\x88      x+y
176  Error -10 (bad UTF-8 string) offset=0 reason=1   0: x+y
177      \P\P\xe1\x88      x-y
178  Error -25 (short UTF-8 string) offset=0 reason=1   0: x-y
   
 /a.b/8  
     acb  
  0: acb  
     a\x7fb  
  0: a\x{7f}b  
     a\x{100}b  
  0: a\x{100}b  
179      *** Failers      *** Failers
180  No match  No match
181      a\nb      x\ny
182    No match
183    
184    /x.y/s
185        x+y
186     0: x+y
187        x-y
188     0: x-y
189        x\ny
190     0: x\x0ay
191    
192    /(a.b(?s)c.d|x.y)p.q/
193        a+bc+dp+q
194     0: a+bc+dp+q
195        a+bc\ndp+q
196     0: a+bc\x0adp+q
197        x\nyp+q
198     0: x\x0ayp+q
199        *** Failers
200    No match
201        a\nbc\ndp+q
202    No match
203        a+bc\ndp\nq
204    No match
205        x\nyp\nq
206  No match  No match
207    
208  /a(.{3})b/8  /a\d\z/
209      a\x{4000}xyb      ba0
210   0: a\x{4000}xyb   0: a0
     a\x{4000}\x7fyb  
  0: a\x{4000}\x{7f}yb  
     a\x{4000}\x{100}yb  
  0: a\x{4000}\x{100}yb  
211      *** Failers      *** Failers
212  No match  No match
213      a\x{4000}b      ba0\n
214  No match  No match
215      ac\ncb      ba0\ncd
216  No match  No match
217    
218  /a(.*?)(.)/  /a\d\z/m
219      a\xc0\x88b      ba0
220   0: a\xc0\x88b   0: a0
  1: a\xc0\x88  
  2: a\xc0  
   
 /a(.*?)(.)/8  
     a\x{100}b  
  0: a\x{100}b  
  1: a\x{100}  
   
 /a(.*)(.)/  
     a\xc0\x88b  
  0: a\xc0\x88b  
  1: a\xc0\x88  
  2: a\xc0  
   
 /a(.*)(.)/8  
     a\x{100}b  
  0: a\x{100}b  
  1: a\x{100}  
   
 /a(.)(.)/  
     a\xc0\x92bcd  
  0: a\xc0\x92  
   
 /a(.)(.)/8  
     a\x{240}bcd  
  0: a\x{240}b  
   
 /a(.?)(.)/  
     a\xc0\x92bcd  
  0: a\xc0\x92  
  1: a\xc0  
   
 /a(.?)(.)/8  
     a\x{240}bcd  
  0: a\x{240}b  
  1: a\x{240}  
   
 /a(.??)(.)/  
     a\xc0\x92bcd  
  0: a\xc0\x92  
  1: a\xc0  
   
 /a(.??)(.)/8  
     a\x{240}bcd  
  0: a\x{240}b  
  1: a\x{240}  
   
 /a(.{3})b/8  
     a\x{1234}xyb  
  0: a\x{1234}xyb  
     a\x{1234}\x{4321}yb  
  0: a\x{1234}\x{4321}yb  
     a\x{1234}\x{4321}\x{3412}b  
  0: a\x{1234}\x{4321}\x{3412}b  
221      *** Failers      *** Failers
222  No match  No match
223      a\x{1234}b      ba0\n
224  No match  No match
225      ac\ncb      ba0\ncd
226  No match  No match
227    
228  /a(.{3,})b/8  /a\d\Z/
229      a\x{1234}xyb      ba0
230   0: a\x{1234}xyb   0: a0
231      a\x{1234}\x{4321}yb      ba0\n
232   0: a\x{1234}\x{4321}yb   0: a0
     a\x{1234}\x{4321}\x{3412}b  
  0: a\x{1234}\x{4321}\x{3412}b  
     axxxxbcdefghijb  
  0: axxxxbcdefghijb  
  1: axxxxb  
     a\x{1234}\x{4321}\x{3412}\x{3421}b  
  0: a\x{1234}\x{4321}\x{3412}\x{3421}b  
233      *** Failers      *** Failers
234  No match  No match
235      a\x{1234}b      ba0\ncd
236  No match  No match
237    
238  /a(.{3,}?)b/8  /a\d\Z/m
239      a\x{1234}xyb      ba0
240   0: a\x{1234}xyb   0: a0
241      a\x{1234}\x{4321}yb      ba0\n
242   0: a\x{1234}\x{4321}yb   0: a0
     a\x{1234}\x{4321}\x{3412}b  
  0: a\x{1234}\x{4321}\x{3412}b  
     axxxxbcdefghijb  
  0: axxxxbcdefghijb  
  1: axxxxb  
     a\x{1234}\x{4321}\x{3412}\x{3421}b  
  0: a\x{1234}\x{4321}\x{3412}\x{3421}b  
243      *** Failers      *** Failers
244  No match  No match
245      a\x{1234}b      ba0\ncd
246  No match  No match
247    
248  /a(.{3,5})b/8  /a\d$/
249      a\x{1234}xyb      ba0
250   0: a\x{1234}xyb   0: a0
251      a\x{1234}\x{4321}yb      ba0\n
252   0: a\x{1234}\x{4321}yb   0: a0
     a\x{1234}\x{4321}\x{3412}b  
  0: a\x{1234}\x{4321}\x{3412}b  
     axxxxbcdefghijb  
  0: axxxxb  
     a\x{1234}\x{4321}\x{3412}\x{3421}b  
  0: a\x{1234}\x{4321}\x{3412}\x{3421}b  
     axbxxbcdefghijb  
  0: axbxxb  
     axxxxxbcdefghijb  
  0: axxxxxb  
253      *** Failers      *** Failers
254  No match  No match
255      a\x{1234}b      ba0\ncd
256  No match  No match
257      axxxxxxbcdefghijb  
258    /a\d$/m
259        ba0
260     0: a0
261        ba0\n
262     0: a0
263        ba0\ncd
264     0: a0
265        *** Failers
266  No match  No match
267    
268  /a(.{3,5}?)b/8  /abc/i
269      a\x{1234}xyb      abc
270   0: a\x{1234}xyb   0: abc
271      a\x{1234}\x{4321}yb      aBc
272   0: a\x{1234}\x{4321}yb   0: aBc
273      a\x{1234}\x{4321}\x{3412}b      ABC
274   0: a\x{1234}\x{4321}\x{3412}b   0: ABC
275      axxxxbcdefghijb  
276   0: axxxxb  /[^a]/
277      a\x{1234}\x{4321}\x{3412}\x{3421}b      abcd
278   0: a\x{1234}\x{4321}\x{3412}\x{3421}b   0: b
279      axbxxbcdefghijb  
280   0: axbxxb  /ab?\w/
281      axxxxxbcdefghijb      abz
282   0: axxxxxb   0: abz
283     1: ab
284        abbz
285     0: abb
286     1: ab
287        azz
288     0: az
289    
290    /x{0,3}yz/
291        ayzq
292     0: yz
293        axyzq
294     0: xyz
295        axxyz
296     0: xxyz
297        axxxyzq
298     0: xxxyz
299        axxxxyzq
300     0: xxxyz
301      *** Failers      *** Failers
302  No match  No match
303      a\x{1234}b      ax
304  No match  No match
305      axxxxxxbcdefghijb      axx
306  No match  No match
307    
308  /^[a\x{c0}]/8  /x{3}yz/
309        axxxyzq
310     0: xxxyz
311        axxxxyzq
312     0: xxxyz
313      *** Failers      *** Failers
314  No match  No match
315      \x{100}      ax
316  No match  No match
317        axx
 /(?<=aXb)cd/8  
     aXbcd  
  0: cd  
   
 /(?<=a\x{100}b)cd/8  
     a\x{100}bcd  
  0: cd  
   
 /(?<=a\x{100000}b)cd/8  
     a\x{100000}bcd  
  0: cd  
   
 /(?:\x{100}){3}b/8  
     \x{100}\x{100}\x{100}b  
  0: \x{100}\x{100}\x{100}b  
     *** Failers  
318  No match  No match
319      \x{100}\x{100}b      ayzq
320  No match  No match
321        axyzq
 /\x{ab}/8  
     \x{ab}  
  0: \x{ab}  
     \xc2\xab  
  0: \x{ab}  
     *** Failers  
322  No match  No match
323      \x00{ab}      axxyz
324  No match  No match
325    
326  /(?<=(.))X/8  /x{2,3}yz/
327      WXYZ      axxyz
328   0: X   0: xxyz
329      \x{256}XYZ      axxxyzq
330   0: X   0: xxxyz
331        axxxxyzq
332     0: xxxyz
333      *** Failers      *** Failers
334  No match  No match
335      XYZ      ax
336    No match
337        axx
338    No match
339        ayzq
340    No match
341        axyzq
342    No match
343    
344    /[^a]+/
345        bac
346     0: b
347        bcdefax
348     0: bcdef
349     1: bcde
350     2: bcd
351     3: bc
352     4: b
353        *** Failers
354     0: *** F
355     1: ***
356     2: ***
357     3: **
358     4: *
359        aaaaa
360  No match  No match
361    
362  /[^a]+/8g  /[^a]*/
363      bcd      bac
364   0: bcd   0: b
  1: bc  
  2: b  
     \x{100}aY\x{256}Z  
  0: \x{100}  
  0: Y\x{256}Z  
  1: Y\x{256}  
  2: Y  
   
 /^[^a]{2}/8  
     \x{100}bc  
  0: \x{100}b  
   
 /^[^a]{2,}/8  
     \x{100}bcAa  
  0: \x{100}bcA  
  1: \x{100}bc  
  2: \x{100}b  
   
 /^[^a]{2,}?/8  
     \x{100}bca  
  0: \x{100}bc  
  1: \x{100}b  
   
 /[^a]+/8ig  
     bcd  
  0: bcd  
  1: bc  
  2: b  
     \x{100}aY\x{256}Z  
  0: \x{100}  
  0: Y\x{256}Z  
  1: Y\x{256}  
  2: Y  
   
 /^[^a]{2}/8i  
     \x{100}bc  
  0: \x{100}b  
   
 /^[^a]{2,}/8i  
     \x{100}bcAa  
  0: \x{100}bc  
  1: \x{100}b  
   
 /^[^a]{2,}?/8i  
     \x{100}bca  
  0: \x{100}bc  
  1: \x{100}b  
   
 /\x{100}{0,0}/8  
     abcd  
  0:  
   
 /\x{100}?/8  
     abcd  
  0:  
     \x{100}\x{100}  
  0: \x{100}  
365   1:   1:
366        bcdefax
367  /\x{100}{0,3}/8   0: bcdef
368      \x{100}\x{100}   1: bcde
369   0: \x{100}\x{100}   2: bcd
370   1: \x{100}   3: bc
371   2:   4: b
372      \x{100}\x{100}\x{100}\x{100}   5:
373   0: \x{100}\x{100}\x{100}      *** Failers
374   1: \x{100}\x{100}   0: *** F
375   2: \x{100}   1: ***
376   3:   2: ***
377     3: **
378  /\x{100}*/8   4: *
379      abce   5:
380        aaaaa
381   0:   0:
382      \x{100}\x{100}\x{100}\x{100}  
383   0: \x{100}\x{100}\x{100}\x{100}  /[^a]{3,5}/
384   1: \x{100}\x{100}\x{100}      xyz
385   2: \x{100}\x{100}   0: xyz
386   3: \x{100}      awxyza
387     0: wxyz
388     1: wxy
389        abcdefa
390     0: bcdef
391     1: bcde
392     2: bcd
393        abcdefghijk
394     0: bcdef
395     1: bcde
396     2: bcd
397        *** Failers
398     0: *** F
399     1: ***
400     2: ***
401        axya
402    No match
403        axa
404    No match
405        aaaaa
406    No match
407    
408    /\d*/
409        1234b567
410     0: 1234
411     1: 123
412     2: 12
413     3: 1
414   4:   4:
415        xyz
416  /\x{100}{1,1}/8   0:
     abcd\x{100}\x{100}\x{100}\x{100}  
  0: \x{100}  
   
 /\x{100}{1,3}/8  
     abcd\x{100}\x{100}\x{100}\x{100}  
  0: \x{100}\x{100}\x{100}  
  1: \x{100}\x{100}  
  2: \x{100}  
   
 /\x{100}+/8  
     abcd\x{100}\x{100}\x{100}\x{100}  
  0: \x{100}\x{100}\x{100}\x{100}  
  1: \x{100}\x{100}\x{100}  
  2: \x{100}\x{100}  
  3: \x{100}  
   
 /\x{100}{3}/8  
     abcd\x{100}\x{100}\x{100}XX  
  0: \x{100}\x{100}\x{100}  
   
 /\x{100}{3,5}/8  
     abcd\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}XX  
  0: \x{100}\x{100}\x{100}\x{100}\x{100}  
  1: \x{100}\x{100}\x{100}\x{100}  
  2: \x{100}\x{100}\x{100}  
   
 /\x{100}{3,}/8  
     abcd\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}XX  
  0: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}  
  1: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}  
  2: \x{100}\x{100}\x{100}\x{100}\x{100}  
  3: \x{100}\x{100}\x{100}\x{100}  
  4: \x{100}\x{100}\x{100}  
   
 /(?<=a\x{100}{2}b)X/8  
     Xyyya\x{100}\x{100}bXzzz  
  0: X  
   
 /\D*/8  
   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
 Matched, but too many subsidiary matches  
  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
  1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
  2: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
  3: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
  4: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
  5: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
  6: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
  7: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
  8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
  9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
 10: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
 11: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
 12: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
 13: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
 14: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
 15: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
 16: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
 17: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
 18: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
 19: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
 20: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
 21: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
   
 /\D*/8  
   \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}  
 Matched, but too many subsidiary matches  
  0: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}  
  1: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}  
  2: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}  
  3: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}  
  4: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}  
  5: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}  
  6: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}  
  7: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}  
  8: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}  
  9: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}  
 10: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}  
 11: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}  
 12: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}  
 13: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}  
 14: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}  
 15: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}  
 16: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}  
 17: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}  
 18: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}  
 19: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}  
 20: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}  
 21: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}  
   
 /\D/8  
     1X2  
  0: X  
     1\x{100}2  
  0: \x{100}  
   
 />\S/8  
     > >X Y  
  0: >X  
     > >\x{100} Y  
  0: >\x{100}  
   
 /\d/8  
     \x{100}3  
  0: 3  
417    
418  /\s/8  /\D*/
419      \x{100} X      a1234b567
420   0:   0: a
421     1:
422        xyz
423     0: xyz
424     1: xy
425     2: x
426     3:
427    
428    /\d+/
429        ab1234c56
430     0: 1234
431     1: 123
432     2: 12
433     3: 1
434        *** Failers
435    No match
436        xyz
437    No match
438    
439  /\D+/8  /\D+/
440      12abcd34      ab123c56
441   0: abcd   0: ab
442   1: abc   1: a
  2: ab  
  3: a  
443      *** Failers      *** Failers
444   0: *** Failers   0: *** Failers
445   1: *** Failer   1: *** Failer
# Line 538  Matched, but too many subsidiary matches Line 452  Matched, but too many subsidiary matches
452   8: ***   8: ***
453   9: **   9: **
454  10: *  10: *
455      1234      789
 No match  
   
 /\D{2,3}/8  
     12abcd34  
  0: abc  
  1: ab  
     12ab34  
  0: ab  
     *** Failers  
  0: ***  
  1: **  
     1234  
456  No match  No match
457      12a34  
458    /\d?A/
459        045ABC
460     0: 5A
461        ABC
462     0: A
463        *** Failers
464  No match  No match
465        XYZ
 /\D{2,3}?/8  
     12abcd34  
  0: abc  
  1: ab  
     12ab34  
  0: ab  
     *** Failers  
  0: ***  
  1: **  
     1234  
466  No match  No match
467      12a34  
468    /\D?A/
469        ABC
470     0: A
471        BAC
472     0: BA
473        9ABC
474     0: A
475        *** Failers
476  No match  No match
477    
478  /\d+/8  /a+/
479      12abcd34      aaaa
480   0: 12   0: aaaa
481   1: 1   1: aaa
482     2: aa
483     3: a
484    
485    /^.*xyz/
486        xyz
487     0: xyz
488        ggggggggxyz
489     0: ggggggggxyz
490    
491    /^.+xyz/
492        abcdxyz
493     0: abcdxyz
494        axyz
495     0: axyz
496      *** Failers      *** Failers
497  No match  No match
498        xyz
 /\d{2,3}/8  
     12abcd34  
  0: 12  
     1234abcd  
  0: 123  
  1: 12  
     *** Failers  
499  No match  No match
500      1.4  
501    /^.?xyz/
502        xyz
503     0: xyz
504        cxyz
505     0: cxyz
506    
507    /^\d{2,3}X/
508        12X
509     0: 12X
510        123X
511     0: 123X
512        *** Failers
513  No match  No match
514        X
 /\d{2,3}?/8  
     12abcd34  
  0: 12  
     1234abcd  
  0: 123  
  1: 12  
     *** Failers  
515  No match  No match
516      1.4      1X
517    No match
518        1234X
519  No match  No match
520    
521  /\S+/8  /^[abcd]\d/
522      12abcd34      a45
523   0: 12abcd34   0: a4
524   1: 12abcd3      b93
525   2: 12abcd   0: b9
526   3: 12abc      c99z
527   4: 12ab   0: c9
528   5: 12a      d04
529   6: 12   0: d0
  7: 1  
     *** Failers  
  0: ***  
  1: **  
  2: *  
     \    \  
 No match  
   
 /\S{2,3}/8  
     12abcd34  
  0: 12a  
  1: 12  
     1234abcd  
  0: 123  
  1: 12  
530      *** Failers      *** Failers
531   0: ***  No match
532   1: **      e45
533      \     \  No match
534        abcd
535    No match
536        abcd1234
537    No match
538        1234
539  No match  No match
540    
541  /\S{2,3}?/8  /^[abcd]*\d/
542      12abcd34      a45
543   0: 12a   0: a4
544   1: 12      b93
545      1234abcd   0: b9
546   0: 123      c99z
547   1: 12   0: c9
548        d04
549     0: d0
550        abcd1234
551     0: abcd1
552        1234
553     0: 1
554      *** Failers      *** Failers
555   0: ***  No match
556   1: **      e45
557      \     \  No match
558        abcd
559  No match  No match
560    
561  />\s+</8  /^[abcd]+\d/
562      12>      <34      a45
563   0: >      <   0: a4
564        b93
565     0: b9
566        c99z
567     0: c9
568        d04
569     0: d0
570        abcd1234
571     0: abcd1
572      *** Failers      *** Failers
573  No match  No match
574        1234
575    No match
576        e45
577    No match
578        abcd
579    No match
580    
581  />\s{2,3}</8  /^a+X/
582      ab>  <cd      aX
583   0: >  <   0: aX
584      ab>   <ce      aaX
585   0: >   <   0: aaX
586    
587    /^[abcd]?\d/
588        a45
589     0: a4
590        b93
591     0: b9
592        c99z
593     0: c9
594        d04
595     0: d0
596        1234
597     0: 1
598      *** Failers      *** Failers
599  No match  No match
600      ab>    <cd      abcd1234
601    No match
602        e45
603  No match  No match
604    
605  />\s{2,3}?</8  /^[abcd]{2,3}\d/
606      ab>  <cd      ab45
607   0: >  <   0: ab4
608      ab>   <ce      bcd93
609   0: >   <   0: bcd9
610      *** Failers      *** Failers
611  No match  No match
612      ab>    <cd      1234
613    No match
614        a36
615    No match
616        abcd1234
617    No match
618        ee45
619  No match  No match
620    
621  /\w+/8  /^(abc)*\d/
622      12      34      abc45
623   0: 12   0: abc4
624   1: 1      abcabcabc45
625     0: abcabcabc4
626        42xyz
627     0: 4
628      *** Failers      *** Failers
  0: Failers  
  1: Failer  
  2: Faile  
  3: Fail  
  4: Fai  
  5: Fa  
  6: F  
     +++=*!  
629  No match  No match
630    
631  /\w{2,3}/8  /^(abc)+\d/
632      ab  cd      abc45
633   0: ab   0: abc4
634      abcd ce      abcabcabc45
635   0: abc   0: abcabcabc4
  1: ab  
636      *** Failers      *** Failers
637   0: Fai  No match
638   1: Fa      42xyz
     a.b.c  
639  No match  No match
640    
641  /\w{2,3}?/8  /^(abc)?\d/
642      ab  cd      abc45
643   0: ab   0: abc4
644      abcd ce      42xyz
645   0: abc   0: 4
  1: ab  
646      *** Failers      *** Failers
  0: Fai  
  1: Fa  
     a.b.c  
 No match  
   
 /\W+/8  
     12====34  
  0: ====  
  1: ===  
  2: ==  
  3: =  
     *** Failers  
  0: ***  
  1: ***  
  2: **  
  3: *  
     abcd  
 No match  
   
 /\W{2,3}/8  
     ab====cd  
  0: ===  
  1: ==  
     ab==cd  
  0: ==  
     *** Failers  
  0: ***  
  1: **  
     a.b.c  
 No match  
   
 /\W{2,3}?/8  
     ab====cd  
  0: ===  
  1: ==  
     ab==cd  
  0: ==  
     *** Failers  
  0: ***  
  1: **  
     a.b.c  
 No match  
   
 /[\x{100}]/8  
     \x{100}  
  0: \x{100}  
     Z\x{100}  
  0: \x{100}  
     \x{100}Z  
  0: \x{100}  
     *** Failers  
647  No match  No match
648        abcabcabc45
 /[Z\x{100}]/8  
     Z\x{100}  
  0: Z  
     \x{100}  
  0: \x{100}  
     \x{100}Z  
  0: \x{100}  
     *** Failers  
649  No match  No match
650    
651  /[\x{100}\x{200}]/8  /^(abc){2,3}\d/
652     ab\x{100}cd      abcabc45
653   0: \x{100}   0: abcabc4
654     ab\x{200}cd      abcabcabc45
655   0: \x{200}   0: abcabcabc4
656     *** Failers      *** Failers
657  No match  No match
658        abcabcabcabc45
659  /[\x{100}-\x{200}]/8  No match
660     ab\x{100}cd      abc45
661   0: \x{100}  No match
662     ab\x{200}cd      42xyz
  0: \x{200}  
    ab\x{111}cd  
  0: \x{111}  
    *** Failers  
 No match  
   
 /[z-\x{200}]/8  
    ab\x{100}cd  
  0: \x{100}  
    ab\x{200}cd  
  0: \x{200}  
    ab\x{111}cd  
  0: \x{111}  
    abzcd  
  0: z  
    ab|cd  
  0: |  
    *** Failers  
 No match  
   
 /[Q\x{100}\x{200}]/8  
    ab\x{100}cd  
  0: \x{100}  
    ab\x{200}cd  
  0: \x{200}  
    Q?  
  0: Q  
    *** Failers  
 No match  
   
 /[Q\x{100}-\x{200}]/8  
    ab\x{100}cd  
  0: \x{100}  
    ab\x{200}cd  
  0: \x{200}  
    ab\x{111}cd  
  0: \x{111}  
    Q?  
  0: Q  
    *** Failers  
 No match  
   
 /[Qz-\x{200}]/8  
    ab\x{100}cd  
  0: \x{100}  
    ab\x{200}cd  
  0: \x{200}  
    ab\x{111}cd  
  0: \x{111}  
    abzcd  
  0: z  
    ab|cd  
  0: |  
    Q?  
  0: Q  
    *** Failers  
 No match  
   
 /[\x{100}\x{200}]{1,3}/8  
    ab\x{100}cd  
  0: \x{100}  
    ab\x{200}cd  
  0: \x{200}  
    ab\x{200}\x{100}\x{200}\x{100}cd  
  0: \x{200}\x{100}\x{200}  
  1: \x{200}\x{100}  
  2: \x{200}  
    *** Failers  
 No match  
   
 /[\x{100}\x{200}]{1,3}?/8  
    ab\x{100}cd  
  0: \x{100}  
    ab\x{200}cd  
  0: \x{200}  
    ab\x{200}\x{100}\x{200}\x{100}cd  
  0: \x{200}\x{100}\x{200}  
  1: \x{200}\x{100}  
  2: \x{200}  
    *** Failers  
 No match  
   
 /[Q\x{100}\x{200}]{1,3}/8  
    ab\x{100}cd  
  0: \x{100}  
    ab\x{200}cd  
  0: \x{200}  
    ab\x{200}\x{100}\x{200}\x{100}cd  
  0: \x{200}\x{100}\x{200}  
  1: \x{200}\x{100}  
  2: \x{200}  
    *** Failers  
 No match  
   
 /[Q\x{100}\x{200}]{1,3}?/8  
    ab\x{100}cd  
  0: \x{100}  
    ab\x{200}cd  
  0: \x{200}  
    ab\x{200}\x{100}\x{200}\x{100}cd  
  0: \x{200}\x{100}\x{200}  
  1: \x{200}\x{100}  
  2: \x{200}  
    *** Failers  
663  No match  No match
664    
665  /(?<=[\x{100}\x{200}])X/8  /1(abc|xyz)2(?1)3/
666      abc\x{200}X      1abc2abc3456
667   0: X   0: 1abc2abc3
668      abc\x{100}X      1abc2xyz3456
669   0: X   0: 1abc2xyz3
670      *** Failers  
671    /^(a*\w|ab)=(a*\w|ab)/
672        ab=ab
673     0: ab=ab
674     1: ab=a
675    
676    /^(a*\w|ab)=(?1)/
677        ab=ab
678     0: ab=ab
679     1: ab=a
680    
681    /^([^()]|\((?1)*\))*$/
682        abc
683     0: abc
684        a(b)c
685     0: a(b)c
686        a(b(c))d
687     0: a(b(c))d
688        *** Failers)
689    No match
690        a(b(c)d
691    No match
692    
693    /^>abc>([^()]|\((?1)*\))*<xyz<$/
694        >abc>123<xyz<
695     0: >abc>123<xyz<
696        >abc>1(2)3<xyz<
697     0: >abc>1(2)3<xyz<
698        >abc>(1(2)3)<xyz<
699     0: >abc>(1(2)3)<xyz<
700    
701    /^(?>a*)\d/
702        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9876
703     0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9
704        *** Failers
705  No match  No match
706      X      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
707  No match  No match
708    
709  /(?<=[Q\x{100}\x{200}])X/8  /< (?: (?(R) \d++  | [^<>]*+) | (?R)) * >/x
710      abc\x{200}X      <>
711   0: X   0: <>
712      abc\x{100}X      <abcd>
713   0: X   0: <abcd>
714      abQX      <abc <123> hij>
715   0: X   0: <abc <123> hij>
716        <abc <def> hij>
717     0: <def>
718        <abc<>def>
719     0: <abc<>def>
720        <abc<>
721     0: <>
722      *** Failers      *** Failers
723  No match  No match
724      X      <abc
725  No match  No match
726    
727  /(?<=[\x{100}\x{200}]{3})X/8  /^(?(?=abc)\w{3}:|\d\d)$/
728      abc\x{100}\x{200}\x{100}X      abc:
729   0: X   0: abc:
730      *** Failers      12
731     0: 12
732        *** Failers
733  No match  No match
734      abc\x{200}X      123
735  No match  No match
736      X      xyz
737  No match  No match
738    
739  /[^\x{100}\x{200}]X/8  /^(?(?!abc)\d\d|\w{3}:)$/
740      AX      abc:
741   0: AX   0: abc:
742      \x{150}X      12
743   0: \x{150}X   0: 12
     \x{500}X  
  0: \x{500}X  
744      *** Failers      *** Failers
745  No match  No match
746      \x{100}X      123
747  No match  No match
748      \x{200}X      xyz
749  No match  No match
750    
751  /[^Q\x{100}\x{200}]X/8  /^(?=abc)\w{5}:$/
752      AX      abcde:
753   0: AX   0: abcde:
754      \x{150}X      *** Failers
  0: \x{150}X  
     \x{500}X  
  0: \x{500}X  
     *** Failers  
755  No match  No match
756      \x{100}X      abc..
757  No match  No match
758      \x{200}X      123
759  No match  No match
760      QX      vwxyz
761  No match  No match
762    
763  /[^\x{100}-\x{200}]X/8  /^(?!abc)\d\d$/
764      AX      12
765   0: AX   0: 12
     \x{500}X  
  0: \x{500}X  
766      *** Failers      *** Failers
767  No match  No match
768      \x{100}X      abcde:
769    No match
770        abc..
771  No match  No match
772      \x{150}X      123
773  No match  No match
774      \x{200}X      vwxyz
775  No match  No match
776    
777  /[z-\x{100}]/8i  /(?<=abc|xy)123/
778      z      abc12345
779   0: z   0: 123
780      Z      wxy123z
781   0: Z   0: 123
     \x{100}  
  0: \x{100}  
782      *** Failers      *** Failers
783  No match  No match
784      \x{102}      123abc
 No match  
     y  
785  No match  No match
786    
787  /[\xFF]/  /(?<!abc|xy)123/
788      >\xff<      123abc
789   0: \xff   0: 123
790        mno123456
791  /[\xff]/8   0: 123
792      >\x{ff}<      *** Failers
793   0: \x{ff}  No match
794        abc12345
795    No match
796        wxy123z
797    No match
798    
799    /abc(?C1)xyz/
800        abcxyz
801    --->abcxyz
802      1 ^  ^       x
803     0: abcxyz
804        123abcxyz999
805    --->123abcxyz999
806      1    ^  ^          x
807     0: abcxyz
808    
809    /(ab|cd){3,4}/C
810      ababab
811    --->ababab
812     +0 ^          (ab|cd){3,4}
813     +1 ^          a
814     +4 ^          c
815     +2 ^^         b
816     +3 ^ ^        |
817     +1 ^ ^        a
818     +4 ^ ^        c
819     +2 ^  ^       b
820     +3 ^   ^      |
821     +1 ^   ^      a
822     +4 ^   ^      c
823     +2 ^    ^     b
824     +3 ^     ^    |
825    +12 ^     ^
826     +1 ^     ^    a
827     +4 ^     ^    c
828     0: ababab
829      abcdabcd
830    --->abcdabcd
831     +0 ^            (ab|cd){3,4}
832     +1 ^            a
833     +4 ^            c
834     +2 ^^           b
835     +3 ^ ^          |
836     +1 ^ ^          a
837     +4 ^ ^          c
838     +5 ^  ^         d
839     +6 ^   ^        )
840     +1 ^   ^        a
841     +4 ^   ^        c
842     +2 ^    ^       b
843     +3 ^     ^      |
844    +12 ^     ^
845     +1 ^     ^      a
846     +4 ^     ^      c
847     +5 ^      ^     d
848     +6 ^       ^    )
849    +12 ^       ^
850     0: abcdabcd
851     1: abcdab
852      abcdcdcdcdcd
853    --->abcdcdcdcdcd
854     +0 ^                (ab|cd){3,4}
855     +1 ^                a
856     +4 ^                c
857     +2 ^^               b
858     +3 ^ ^              |
859     +1 ^ ^              a
860     +4 ^ ^              c
861     +5 ^  ^             d
862     +6 ^   ^            )
863     +1 ^   ^            a
864     +4 ^   ^            c
865     +5 ^    ^           d
866     +6 ^     ^          )
867    +12 ^     ^
868     +1 ^     ^          a
869     +4 ^     ^          c
870     +5 ^      ^         d
871     +6 ^       ^        )
872    +12 ^       ^
873     0: abcdcdcd
874     1: abcdcd
875    
876    /^abc/
877        abcdef
878     0: abc
879        *** Failers
880    No match
881        abcdef\B
882    No match
883    
884    /^(a*|xyz)/
885        bcd
886     0:
887        aaabcd
888     0: aaa
889     1: aa
890     2: a
891     3:
892        xyz
893     0: xyz
894     1:
895        xyz\N
896     0: xyz
897        *** Failers
898     0:
899        bcd\N
900    No match
901    
902    /xyz$/
903        xyz
904     0: xyz
905        xyz\n
906     0: xyz
907        *** Failers
908    No match
909        xyz\Z
910    No match
911        xyz\n\Z
912    No match
913    
914    /xyz$/m
915        xyz
916     0: xyz
917        xyz\n
918     0: xyz
919        abcxyz\npqr
920     0: xyz
921        abcxyz\npqr\Z
922     0: xyz
923        xyz\n\Z
924     0: xyz
925        *** Failers
926    No match
927        xyz\Z
928    No match
929    
930    /\Gabc/
931        abcdef
932     0: abc
933        defabcxyz\>3
934     0: abc
935        *** Failers
936    No match
937        defabcxyz
938    No match
939    
940    /^abcdef/
941        ab\P
942    Partial match: ab
943        abcde\P
944    Partial match: abcde
945        abcdef\P
946     0: abcdef
947        *** Failers
948    No match
949        abx\P
950    No match
951    
952    /^a{2,4}\d+z/
953        a\P
954    Partial match: a
955        aa\P
956    Partial match: aa
957        aa2\P
958    Partial match: aa2
959        aaa\P
960    Partial match: aaa
961        aaa23\P
962    Partial match: aaa23
963        aaaa12345\P
964    Partial match: aaaa12345
965        aa0z\P
966     0: aa0z
967        aaaa4444444444444z\P
968     0: aaaa4444444444444z
969        *** Failers
970    No match
971        az\P
972    No match
973        aaaaa\P
974    No match
975        a56\P
976    No match
977    
978    /^abcdef/
979       abc\P
980    Partial match: abc
981       def\R
982     0: def
983    
984    /(?<=foo)bar/
985       xyzfo\P
986    No match
987       foob\P\>2
988    Partial match: foob
989       foobar...\R\P\>4
990     0: ar
991       xyzfo\P
992    No match
993       foobar\>2
994     0: bar
995       *** Failers
996    No match
997       xyzfo\P
998    No match
999       obar\R
1000    No match
1001    
1002    /(ab*(cd|ef))+X/
1003        adfadadaklhlkalkajhlkjahdfasdfasdfladsfjkj\P\Z
1004    No match
1005        lkjhlkjhlkjhlkjhabbbbbbcdaefabbbbbbbefa\P\B\Z
1006    Partial match: abbbbbbcdaefabbbbbbbefa
1007        cdabbbbbbbb\P\R\B\Z
1008    Partial match: cdabbbbbbbb
1009        efabbbbbbbbbbbbbbbb\P\R\B\Z
1010    Partial match: efabbbbbbbbbbbbbbbb
1011        bbbbbbbbbbbbcdXyasdfadf\P\R\B\Z
1012     0: bbbbbbbbbbbbcdX
1013    
1014    /(a|b)/SF>testsavedregex
1015    Compiled pattern written to testsavedregex
1016    Study data written to testsavedregex
1017    <testsavedregex
1018    Compiled pattern (byte-inverted) loaded from testsavedregex
1019    Study data loaded from testsavedregex
1020        abc
1021     0: a
1022        ** Failers
1023     0: a
1024        def
1025    No match
1026    
1027    /the quick brown fox/
1028        the quick brown fox
1029     0: the quick brown fox
1030        The quick brown FOX
1031    No match
1032        What do you know about the quick brown fox?
1033     0: the quick brown fox
1034        What do you know about THE QUICK BROWN FOX?
1035    No match
1036    
1037    /The quick brown fox/i
1038        the quick brown fox
1039     0: the quick brown fox
1040        The quick brown FOX
1041     0: The quick brown FOX
1042        What do you know about the quick brown fox?
1043     0: the quick brown fox
1044        What do you know about THE QUICK BROWN FOX?
1045     0: THE QUICK BROWN FOX
1046    
1047    /abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
1048        abcd\t\n\r\f\a\e9;\$\\?caxyz
1049     0: abcd\x09\x0a\x0d\x0c\x07\x1b9;$\?caxyz
1050    
1051    /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
1052        abxyzpqrrrabbxyyyypqAzz
1053     0: abxyzpqrrrabbxyyyypqAzz
1054        abxyzpqrrrabbxyyyypqAzz
1055     0: abxyzpqrrrabbxyyyypqAzz
1056        aabxyzpqrrrabbxyyyypqAzz
1057     0: aabxyzpqrrrabbxyyyypqAzz
1058        aaabxyzpqrrrabbxyyyypqAzz
1059     0: aaabxyzpqrrrabbxyyyypqAzz
1060        aaaabxyzpqrrrabbxyyyypqAzz
1061     0: aaaabxyzpqrrrabbxyyyypqAzz
1062        abcxyzpqrrrabbxyyyypqAzz
1063     0: abcxyzpqrrrabbxyyyypqAzz
1064        aabcxyzpqrrrabbxyyyypqAzz
1065     0: aabcxyzpqrrrabbxyyyypqAzz
1066        aaabcxyzpqrrrabbxyyyypAzz
1067     0: aaabcxyzpqrrrabbxyyyypAzz
1068        aaabcxyzpqrrrabbxyyyypqAzz
1069     0: aaabcxyzpqrrrabbxyyyypqAzz
1070        aaabcxyzpqrrrabbxyyyypqqAzz
1071     0: aaabcxyzpqrrrabbxyyyypqqAzz
1072        aaabcxyzpqrrrabbxyyyypqqqAzz
1073     0: aaabcxyzpqrrrabbxyyyypqqqAzz
1074        aaabcxyzpqrrrabbxyyyypqqqqAzz
1075     0: aaabcxyzpqrrrabbxyyyypqqqqAzz
1076        aaabcxyzpqrrrabbxyyyypqqqqqAzz
1077     0: aaabcxyzpqrrrabbxyyyypqqqqqAzz
1078        aaabcxyzpqrrrabbxyyyypqqqqqqAzz
1079     0: aaabcxyzpqrrrabbxyyyypqqqqqqAzz
1080        aaaabcxyzpqrrrabbxyyyypqAzz
1081     0: aaaabcxyzpqrrrabbxyyyypqAzz
1082        abxyzzpqrrrabbxyyyypqAzz
1083     0: abxyzzpqrrrabbxyyyypqAzz
1084        aabxyzzzpqrrrabbxyyyypqAzz
1085     0: aabxyzzzpqrrrabbxyyyypqAzz
1086        aaabxyzzzzpqrrrabbxyyyypqAzz
1087     0: aaabxyzzzzpqrrrabbxyyyypqAzz
1088        aaaabxyzzzzpqrrrabbxyyyypqAzz
1089     0: aaaabxyzzzzpqrrrabbxyyyypqAzz
1090        abcxyzzpqrrrabbxyyyypqAzz
1091     0: abcxyzzpqrrrabbxyyyypqAzz
1092        aabcxyzzzpqrrrabbxyyyypqAzz
1093     0: aabcxyzzzpqrrrabbxyyyypqAzz
1094        aaabcxyzzzzpqrrrabbxyyyypqAzz
1095     0: aaabcxyzzzzpqrrrabbxyyyypqAzz
1096        aaaabcxyzzzzpqrrrabbxyyyypqAzz
1097     0: aaaabcxyzzzzpqrrrabbxyyyypqAzz
1098        aaaabcxyzzzzpqrrrabbbxyyyypqAzz
1099     0: aaaabcxyzzzzpqrrrabbbxyyyypqAzz
1100        aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
1101     0: aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
1102        aaabcxyzpqrrrabbxyyyypABzz
1103     0: aaabcxyzpqrrrabbxyyyypABzz
1104        aaabcxyzpqrrrabbxyyyypABBzz
1105     0: aaabcxyzpqrrrabbxyyyypABBzz
1106        >>>aaabxyzpqrrrabbxyyyypqAzz
1107     0: aaabxyzpqrrrabbxyyyypqAzz
1108        >aaaabxyzpqrrrabbxyyyypqAzz
1109     0: aaaabxyzpqrrrabbxyyyypqAzz
1110        >>>>abcxyzpqrrrabbxyyyypqAzz
1111     0: abcxyzpqrrrabbxyyyypqAzz
1112        *** Failers
1113    No match
1114        abxyzpqrrabbxyyyypqAzz
1115    No match
1116        abxyzpqrrrrabbxyyyypqAzz
1117    No match
1118        abxyzpqrrrabxyyyypqAzz
1119    No match
1120        aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
1121    No match
1122        aaaabcxyzzzzpqrrrabbbxyyypqAzz
1123    No match
1124        aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
1125    No match
1126    
1127    /^(abc){1,2}zz/
1128        abczz
1129     0: abczz
1130        abcabczz
1131     0: abcabczz
1132        *** Failers
1133    No match
1134        zz
1135    No match
1136        abcabcabczz
1137    No match
1138        >>abczz
1139    No match
1140    
1141    /^(b+?|a){1,2}?c/
1142        bc
1143     0: bc
1144        bbc
1145     0: bbc
1146        bbbc
1147     0: bbbc
1148        bac
1149     0: bac
1150        bbac
1151     0: bbac
1152        aac
1153     0: aac
1154        abbbbbbbbbbbc
1155     0: abbbbbbbbbbbc
1156        bbbbbbbbbbbac
1157     0: bbbbbbbbbbbac
1158        *** Failers
1159    No match
1160        aaac
1161    No match
1162        abbbbbbbbbbbac
1163    No match
1164    
1165    /^(b+|a){1,2}c/
1166        bc
1167     0: bc
1168        bbc
1169     0: bbc
1170        bbbc
1171     0: bbbc
1172        bac
1173     0: bac
1174        bbac
1175     0: bbac
1176        aac
1177     0: aac
1178        abbbbbbbbbbbc
1179     0: abbbbbbbbbbbc
1180        bbbbbbbbbbbac
1181     0: bbbbbbbbbbbac
1182        *** Failers
1183    No match
1184        aaac
1185    No match
1186        abbbbbbbbbbbac
1187    No match
1188    
1189    /^(b+|a){1,2}?bc/
1190        bbc
1191     0: bbc
1192    
1193    /^(b*|ba){1,2}?bc/
1194        babc
1195     0: babc
1196        bbabc
1197     0: bbabc
1198        bababc
1199     0: bababc
1200        *** Failers
1201    No match
1202        bababbc
1203    No match
1204        babababc
1205    No match
1206    
1207    /^(ba|b*){1,2}?bc/
1208        babc
1209     0: babc
1210        bbabc
1211     0: bbabc
1212        bababc
1213     0: bababc
1214        *** Failers
1215    No match
1216        bababbc
1217    No match
1218        babababc
1219    No match
1220    
1221    /^\ca\cA\c[\c{\c:/
1222        \x01\x01\e;z
1223     0: \x01\x01\x1b;z
1224    
1225    /^[ab\]cde]/
1226        athing
1227     0: a
1228        bthing
1229     0: b
1230        ]thing
1231     0: ]
1232        cthing
1233     0: c
1234        dthing
1235     0: d
1236        ething
1237     0: e
1238        *** Failers
1239    No match
1240        fthing
1241    No match
1242        [thing
1243    No match
1244        \\thing
1245    No match
1246    
1247    /^[]cde]/
1248        ]thing
1249     0: ]
1250        cthing
1251     0: c
1252        dthing
1253     0: d
1254        ething
1255     0: e
1256        *** Failers
1257    No match
1258        athing
1259    No match
1260        fthing
1261    No match
1262    
1263    /^[^ab\]cde]/
1264        fthing
1265     0: f
1266        [thing
1267     0: [
1268        \\thing
1269     0: \
1270        *** Failers
1271     0: *
1272        athing
1273    No match
1274        bthing
1275    No match
1276        ]thing
1277    No match
1278        cthing
1279    No match
1280        dthing
1281    No match
1282        ething
1283    No match
1284    
1285    /^[^]cde]/
1286        athing
1287     0: a
1288        fthing
1289     0: f
1290        *** Failers
1291     0: *
1292        ]thing
1293    No match
1294        cthing
1295    No match
1296        dthing
1297    No match
1298        ething
1299    No match
1300    
1301    /^\/
1302        
1303     0: \x81
1304    
1305    /^/
1306        
1307     0: \xff
1308    
1309    /^[0-9]+$/
1310        0
1311     0: 0
1312        1
1313     0: 1
1314        2
1315     0: 2
1316        3
1317     0: 3
1318        4
1319     0: 4
1320        5
1321     0: 5
1322        6
1323     0: 6
1324        7
1325     0: 7
1326        8
1327     0: 8
1328        9
1329     0: 9
1330        10
1331     0: 10
1332        100
1333     0: 100
1334        *** Failers
1335    No match
1336        abc
1337    No match
1338    
1339    /^.*nter/
1340        enter
1341     0: enter
1342        inter
1343     0: inter
1344        uponter
1345     0: uponter
1346    
1347    /^xxx[0-9]+$/
1348        xxx0
1349     0: xxx0
1350        xxx1234
1351     0: xxx1234
1352        *** Failers
1353    No match
1354        xxx
1355    No match
1356    
1357    /^.+[0-9][0-9][0-9]$/
1358        x123
1359     0: x123
1360        xx123
1361     0: xx123
1362        123456
1363     0: 123456
1364        *** Failers
1365    No match
1366        123
1367    No match
1368        x1234
1369     0: x1234
1370    
1371    /^.+?[0-9][0-9][0-9]$/
1372        x123
1373     0: x123
1374        xx123
1375     0: xx123
1376        123456
1377     0: 123456
1378        *** Failers
1379    No match
1380        123
1381    No match
1382        x1234
1383     0: x1234
1384    
1385    /^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
1386        abc!pqr=apquxz.ixr.zzz.ac.uk
1387     0: abc!pqr=apquxz.ixr.zzz.ac.uk
1388        *** Failers
1389    No match
1390        !pqr=apquxz.ixr.zzz.ac.uk
1391    No match
1392        abc!=apquxz.ixr.zzz.ac.uk
1393    No match
1394        abc!pqr=apquxz:ixr.zzz.ac.uk
1395    No match
1396        abc!pqr=apquxz.ixr.zzz.ac.ukk
1397    No match
1398    
1399    /:/
1400        Well, we need a colon: somewhere
1401     0: :
1402        *** Fail if we don't
1403    No match
1404    
1405    /([\da-f:]+)$/i
1406        0abc
1407     0: 0abc
1408        abc
1409     0: abc
1410        fed
1411     0: fed
1412        E
1413     0: E
1414        ::
1415     0: ::
1416        5f03:12C0::932e
1417     0: 5f03:12C0::932e
1418        fed def
1419     0: def
1420        Any old stuff
1421     0: ff
1422        *** Failers
1423    No match
1424        0zzz
1425    No match
1426        gzzz
1427    No match
1428        fed\x20
1429    No match
1430        Any old rubbish
1431    No match
1432    
1433    /^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
1434        .1.2.3
1435     0: .1.2.3
1436        A.12.123.0
1437     0: A.12.123.0
1438        *** Failers
1439    No match
1440        .1.2.3333
1441    No match
1442        1.2.3
1443    No match
1444        1234.2.3
1445    No match
1446    
1447    /^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
1448        1 IN SOA non-sp1 non-sp2(
1449     0: 1 IN SOA non-sp1 non-sp2(
1450        1    IN    SOA    non-sp1    non-sp2   (
1451     0: 1    IN    SOA    non-sp1    non-sp2   (
1452        *** Failers
1453    No match
1454        1IN SOA non-sp1 non-sp2(
1455    No match
1456    
1457    /^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/
1458        a.
1459     0: a.
1460        Z.
1461     0: Z.
1462        2.
1463     0: 2.
1464        ab-c.pq-r.
1465     0: ab-c.pq-r.
1466        sxk.zzz.ac.uk.
1467     0: sxk.zzz.ac.uk.
1468        x-.y-.
1469     0: x-.y-.
1470        *** Failers
1471    No match
1472        -abc.peq.
1473    No match
1474    
1475    /^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/
1476        *.a
1477     0: *.a
1478        *.b0-a
1479     0: *.b0-a
1480        *.c3-b.c
1481     0: *.c3-b.c
1482        *.c-a.b-c
1483     0: *.c-a.b-c
1484        *** Failers
1485    No match
1486        *.0
1487    No match
1488        *.a-
1489    No match
1490        *.a-b.c-
1491    No match
1492        *.c-a.0-c
1493    No match
1494    
1495    /^(?=ab(de))(abd)(e)/
1496        abde
1497     0: abde
1498    
1499    /^(?!(ab)de|x)(abd)(f)/
1500        abdf
1501     0: abdf
1502    
1503    /^(?=(ab(cd)))(ab)/
1504        abcd
1505     0: ab
1506    
1507    /^[\da-f](\.[\da-f])*$/i
1508        a.b.c.d
1509     0: a.b.c.d
1510        A.B.C.D
1511     0: A.B.C.D
1512        a.b.c.1.2.3.C
1513     0: a.b.c.1.2.3.C
1514    
1515    /^\".*\"\s*(;.*)?$/
1516        \"1234\"
1517     0: "1234"
1518        \"abcd\" ;
1519     0: "abcd" ;
1520        \"\" ; rhubarb
1521     0: "" ; rhubarb
1522        *** Failers
1523    No match
1524        \"1234\" : things
1525    No match
1526    
1527    /^$/
1528        \
1529     0:
1530        *** Failers
1531    No match
1532    
1533    /   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/x
1534        ab c
1535     0: ab c
1536        *** Failers
1537    No match
1538        abc
1539    No match
1540        ab cde
1541    No match
1542    
1543    /(?x)   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/
1544        ab c
1545     0: ab c
1546        *** Failers
1547    No match
1548        abc
1549    No match
1550        ab cde
1551    No match
1552    
1553    /^   a\ b[c ]d       $/x
1554        a bcd
1555     0: a bcd
1556        a b d
1557     0: a b d
1558        *** Failers
1559    No match
1560        abcd
1561    No match
1562        ab d
1563    No match
1564    
1565    /^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
1566        abcdefhijklm
1567     0: abcdefhijklm
1568    
1569    /^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
1570        abcdefhijklm
1571     0: abcdefhijklm
1572    
1573    /^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
1574        a+ Z0+\x08\n\x1d\x12
1575     0: a+ Z0+\x08\x0a\x1d\x12
1576    
1577    /^[.^$|()*+?{,}]+/
1578        .^\$(*+)|{?,?}
1579     0: .^$(*+)|{?,?}
1580     1: .^$(*+)|{?,?
1581     2: .^$(*+)|{?,
1582     3: .^$(*+)|{?
1583     4: .^$(*+)|{
1584     5: .^$(*+)|
1585     6: .^$(*+)
1586     7: .^$(*+
1587     8: .^$(*
1588     9: .^$(
1589    10: .^$
1590    11: .^
1591    12: .
1592    
1593    /^a*\w/
1594        z
1595     0: z
1596        az
1597     0: az
1598     1: a
1599        aaaz
1600     0: aaaz
1601     1: aaa
1602     2: aa
1603     3: a
1604        a
1605     0: a
1606        aa
1607     0: aa
1608     1: a
1609        aaaa
1610     0: aaaa
1611     1: aaa
1612     2: aa
1613     3: a
1614        a+
1615     0: a
1616        aa+
1617     0: aa
1618     1: a
1619    
1620    /^a*?\w/
1621        z
1622     0: z
1623        az
1624     0: az
1625     1: a
1626        aaaz
1627     0: aaaz
1628     1: aaa
1629     2: aa
1630     3: a
1631        a
1632     0: a
1633        aa
1634     0: aa
1635     1: a
1636        aaaa
1637     0: aaaa
1638     1: aaa
1639     2: aa
1640     3: a
1641        a+
1642     0: a
1643        aa+
1644     0: aa
1645     1: a
1646    
1647    /^a+\w/
1648        az
1649     0: az
1650        aaaz
1651     0: aaaz
1652     1: aaa
1653     2: aa
1654        aa
1655     0: aa
1656        aaaa
1657     0: aaaa
1658     1: aaa
1659     2: aa
1660        aa+
1661     0: aa
1662    
1663    /^a+?\w/
1664        az
1665     0: az
1666        aaaz
1667     0: aaaz
1668     1: aaa
1669     2: aa
1670        aa
1671     0: aa
1672        aaaa
1673     0: aaaa
1674     1: aaa
1675     2: aa
1676        aa+
1677     0: aa
1678    
1679    /^\d{8}\w{2,}/
1680        1234567890
1681     0: 1234567890
1682        12345678ab
1683     0: 12345678ab
1684        12345678__
1685     0: 12345678__
1686        *** Failers
1687    No match
1688        1234567
1689    No match
1690    
1691    /^[aeiou\d]{4,5}$/
1692        uoie
1693     0: uoie
1694        1234
1695     0: 1234
1696        12345
1697     0: 12345
1698        aaaaa
1699     0: aaaaa
1700        *** Failers
1701    No match
1702        123456
1703    No match
1704    
1705    /^[aeiou\d]{4,5}?/
1706        uoie
1707     0: uoie
1708        1234
1709     0: 1234
1710        12345
1711     0: 12345
1712     1: 1234
1713        aaaaa
1714     0: aaaaa
1715     1: aaaa
1716        123456
1717     0: 12345
1718     1: 1234
1719    
1720    /^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]/
1721        From abcd  Mon Sep 01 12:33:02 1997
1722     0: From abcd  Mon Sep 01 12:33
1723    
1724    /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
1725        From abcd  Mon Sep 01 12:33:02 1997
1726     0: From abcd  Mon Sep 01 12:33
1727        From abcd  Mon Sep  1 12:33:02 1997
1728     0: From abcd  Mon Sep  1 12:33
1729        *** Failers
1730    No match
1731        From abcd  Sep 01 12:33:02 1997
1732    No match
1733    
1734    /^12.34/s
1735        12\n34
1736     0: 12\x0a34
1737        12\r34
1738     0: 12\x0d34
1739    
1740    /\w+(?=\t)/
1741        the quick brown\t fox
1742     0: brown
1743    
1744    /foo(?!bar)(.*)/
1745        foobar is foolish see?
1746     0: foolish see?
1747     1: foolish see
1748     2: foolish se
1749     3: foolish s
1750     4: foolish
1751     5: foolish
1752     6: foolis
1753     7: fooli
1754     8: fool
1755     9: foo
1756    
1757    /(?:(?!foo)...|^.{0,2})bar(.*)/
1758        foobar crowbar etc
1759     0: rowbar etc
1760     1: rowbar et
1761     2: rowbar e
1762     3: rowbar
1763     4: rowbar
1764        barrel
1765     0: barrel
1766     1: barre
1767     2: barr
1768     3: bar
1769        2barrel
1770     0: 2barrel
1771     1: 2barre
1772     2: 2barr
1773     3: 2bar
1774        A barrel
1775     0: A barrel
1776     1: A barre
1777     2: A barr
1778     3: A bar
1779    
1780    /^(\D*)(?=\d)(?!123)/
1781        abc456
1782     0: abc
1783        *** Failers
1784    No match
1785        abc123
1786    No match
1787    
1788    /^1234(?# test newlines
1789      inside)/
1790        1234
1791     0: 1234
1792    
1793    /^1234 #comment in extended re
1794      /x
1795        1234
1796     0: 1234
1797    
1798    /#rhubarb
1799      abcd/x
1800        abcd
1801     0: abcd
1802    
1803    /^abcd#rhubarb/x
1804        abcd
1805     0: abcd
1806    
1807    /(?!^)abc/
1808        the abc
1809     0: abc
1810        *** Failers
1811    No match
1812        abc
1813    No match
1814    
1815    /(?=^)abc/
1816        abc
1817     0: abc
1818        *** Failers
1819    No match
1820        the abc
1821    No match
1822    
1823    /^[ab]{1,3}(ab*|b)/
1824        aabbbbb
1825     0: aabbbbb
1826     1: aabbbb
1827     2: aabbb
1828     3: aabb
1829     4: aab
1830     5: aa
1831    
1832    /^[ab]{1,3}?(ab*|b)/
1833        aabbbbb
1834     0: aabbbbb
1835     1: aabbbb
1836     2: aabbb
1837     3: aabb
1838     4: aab
1839     5: aa
1840    
1841    /^[ab]{1,3}?(ab*?|b)/
1842        aabbbbb
1843     0: aabbbbb
1844     1: aabbbb
1845     2: aabbb
1846     3: aabb
1847     4: aab
1848     5: aa
1849    
1850    /^[ab]{1,3}(ab*?|b)/
1851        aabbbbb
1852     0: aabbbbb
1853     1: aabbbb
1854     2: aabbb
1855     3: aabb
1856     4: aab
1857     5: aa
1858    
1859    /  (?: [\040\t] |  \(
1860    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1861    \)  )*                          # optional leading comment
1862    (?:    (?:
1863    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1864    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1865    |
1866    " (?:                      # opening quote...
1867    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
1868    |                     #    or
1869    \\ [^\x80-\xff]           #   Escaped something (something != CR)
1870    )* "  # closing quote
1871    )                    # initial word
1872    (?:  (?: [\040\t] |  \(
1873    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1874    \)  )*  \.  (?: [\040\t] |  \(
1875    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1876    \)  )*   (?:
1877    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1878    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1879    |
1880    " (?:                      # opening quote...
1881    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
1882    |                     #    or
1883    \\ [^\x80-\xff]           #   Escaped something (something != CR)
1884    )* "  # closing quote
1885    )  )* # further okay, if led by a period
1886    (?: [\040\t] |  \(
1887    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1888    \)  )*  @  (?: [\040\t] |  \(
1889    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1890    \)  )*    (?:
1891    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1892    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1893    |   \[                         # [
1894    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
1895    \]                        #           ]
1896    )                           # initial subdomain
1897    (?:                                  #
1898    (?: [\040\t] |  \(
1899    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1900    \)  )*  \.                        # if led by a period...
1901    (?: [\040\t] |  \(
1902    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1903    \)  )*   (?:
1904    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1905    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1906    |   \[                         # [
1907    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
1908    \]                        #           ]
1909    )                     #   ...further okay
1910    )*
1911    # address
1912    |                     #  or
1913    (?:
1914    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1915    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1916    |
1917    " (?:                      # opening quote...
1918    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
1919    |                     #    or
1920    \\ [^\x80-\xff]           #   Escaped something (something != CR)
1921    )* "  # closing quote
1922    )             # one word, optionally followed by....
1923    (?:
1924    [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]  |  # atom and space parts, or...
1925    \(
1926    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1927    \)       |  # comments, or...
1928    
1929    " (?:                      # opening quote...
1930    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
1931    |                     #    or
1932    \\ [^\x80-\xff]           #   Escaped something (something != CR)
1933    )* "  # closing quote
1934    # quoted strings
1935    )*
1936    <  (?: [\040\t] |  \(
1937    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1938    \)  )*                     # leading <
1939    (?:  @  (?: [\040\t] |  \(
1940    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1941    \)  )*    (?:
1942    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1943    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1944    |   \[                         # [
1945    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
1946    \]                        #           ]
1947    )                           # initial subdomain
1948    (?:                                  #
1949    (?: [\040\t] |  \(
1950    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1951    \)  )*  \.                        # if led by a period...
1952    (?: [\040\t] |  \(
1953    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1954    \)  )*   (?:
1955    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1956    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1957    |   \[                         # [
1958    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
1959    \]                        #           ]
1960    )                     #   ...further okay
1961    )*
1962    
1963    (?:  (?: [\040\t] |  \(
1964    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1965    \)  )*  ,  (?: [\040\t] |  \(
1966    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1967    \)  )*  @  (?: [\040\t] |  \(
1968    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1969    \)  )*    (?:
1970    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1971    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1972    |   \[                         # [
1973    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
1974    \]                        #           ]
1975    )                           # initial subdomain
1976    (?:                                  #
1977    (?: [\040\t] |  \(
1978    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1979    \)  )*  \.                        # if led by a period...
1980    (?: [\040\t] |  \(
1981    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1982    \)  )*   (?:
1983    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1984    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1985    |   \[                         # [
1986    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
1987    \]                        #           ]
1988    )                     #   ...further okay
1989    )*
1990    )* # further okay, if led by comma
1991    :                                # closing colon
1992    (?: [\040\t] |  \(
1993    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1994    \)  )*  )? #       optional route
1995    (?:
1996    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1997    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1998    |
1999    " (?:                      # opening quote...
2000    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
2001    |                     #    or
2002    \\ [^\x80-\xff]           #   Escaped something (something != CR)
2003    )* "  # closing quote
2004    )                    # initial word
2005    (?:  (?: [\040\t] |  \(
2006    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2007    \)  )*  \.  (?: [\040\t] |  \(
2008    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2009    \)  )*   (?:
2010    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2011    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2012    |
2013    " (?:                      # opening quote...
2014    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
2015    |                     #    or
2016    \\ [^\x80-\xff]           #   Escaped something (something != CR)
2017    )* "  # closing quote
2018    )  )* # further okay, if led by a period
2019    (?: [\040\t] |  \(
2020    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2021    \)  )*  @  (?: [\040\t] |  \(
2022    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2023    \)  )*    (?:
2024    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2025    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2026    |   \[                         # [
2027    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
2028    \]                        #           ]
2029    )                           # initial subdomain
2030    (?:                                  #
2031    (?: [\040\t] |  \(
2032    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2033    \)  )*  \.                        # if led by a period...
2034    (?: [\040\t] |  \(
2035    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2036    \)  )*   (?:
2037    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2038    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2039    |   \[                         # [
2040    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
2041    \]                        #           ]
2042    )                     #   ...further okay
2043    )*
2044    #       address spec
2045    (?: [\040\t] |  \(
2046    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2047    \)  )*  > #                  trailing >
2048    # name and address
2049    )  (?: [\040\t] |  \(
2050    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2051    \)  )*                       # optional trailing comment
2052    /x
2053        Alan Other <user\@dom.ain>
2054     0: Alan Other <user@dom.ain>
2055        <user\@dom.ain>
2056     0: user@dom.ain
2057     1: user@dom
2058        user\@dom.ain
2059     0: user@dom.ain
2060     1: user@dom
2061        \"A. Other\" <user.1234\@dom.ain> (a comment)
2062     0: "A. Other" <user.1234@dom.ain> (a comment)
2063     1: "A. Other" <user.1234@dom.ain>
2064     2: "A. Other" <user.1234@dom.ain>
2065        A. Other <user.1234\@dom.ain> (a comment)
2066     0:  Other <user.1234@dom.ain> (a comment)
2067     1:  Other <user.1234@dom.ain>
2068     2:  Other <user.1234@dom.ain>
2069        \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
2070     0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
2071     1: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re
2072        A missing angle <user\@some.where
2073     0: user@some.where
2074     1: user@some
2075        *** Failers
2076    No match
2077        The quick brown fox
2078    No match
2079    
2080    /[\040\t]*                    # Nab whitespace.
2081    (?:
2082    \(                              #  (
2083    [^\\\x80-\xff\n\015()] *                             #     normal*
2084    (?:                                 #       (
2085    (?:  \\ [^\x80-\xff]  |
2086    \(                            #  (
2087    [^\\\x80-\xff\n\015()] *                            #     normal*
2088    (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2089    \)                           #                       )
2090    )    #         special
2091    [^\\\x80-\xff\n\015()] *                         #         normal*
2092    )*                                  #            )*
2093    \)                             #                )
2094    [\040\t]* )*    # If comment found, allow more spaces.
2095    # optional leading comment
2096    (?:
2097    (?:
2098    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2099    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2100    # Atom
2101    |                       #  or
2102    "                                     # "
2103    [^\\\x80-\xff\n\015"] *                            #   normal
2104    (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
2105    "                                     #        "
2106    # Quoted string
2107    )
2108    [\040\t]*                    # Nab whitespace.
2109    (?:
2110    \(                              #  (
2111    [^\\\x80-\xff\n\015()] *                             #     normal*
2112    (?:                                 #       (
2113    (?:  \\ [^\x80-\xff]  |
2114    \(                            #  (
2115    [^\\\x80-\xff\n\015()] *                            #     normal*
2116    (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2117    \)                           #                       )
2118    )    #         special
2119    [^\\\x80-\xff\n\015()] *                         #         normal*
2120    )*                                  #            )*
2121    \)                             #                )
2122    [\040\t]* )*    # If comment found, allow more spaces.
2123    (?:
2124    \.
2125    [\040\t]*                    # Nab whitespace.
2126    (?:
2127    \(                              #  (
2128    [^\\\x80-\xff\n\015()] *                             #     normal*
2129    (?:                                 #       (
2130    (?:  \\ [^\x80-\xff]  |
2131    \(                            #  (
2132    [^\\\x80-\xff\n\015()] *                            #     normal*
2133    (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2134    \)                           #                       )
2135    )    #         special
2136    [^\\\x80-\xff\n\015()] *                         #         normal*
2137    )*                                  #            )*
2138    \)                             #                )
2139    [\040\t]* )*    # If comment found, allow more spaces.
2140    (?:
2141    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2142    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2143    # Atom
2144    |                       #  or
2145    "                                     # "
2146    [^\\\x80-\xff\n\015"] *                            #   normal
2147    (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
2148    "                                     #        "
2149    # Quoted string
2150    )
2151    [\040\t]*                    # Nab whitespace.
2152    (?:
2153    \(                              #  (
2154    [^\\\x80-\xff\n\015()] *                             #     normal*
2155    (?:                                 #       (
2156    (?:  \\ [^\x80-\xff]  |
2157    \(                            #  (
2158    [^\\\x80-\xff\n\015()] *                            #     normal*
2159    (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2160    \)                           #                       )
2161    )    #         special
2162    [^\\\x80-\xff\n\015()] *                         #         normal*
2163    )*                                  #            )*
2164    \)                             #                )
2165    [\040\t]* )*    # If comment found, allow more spaces.
2166    # additional words
2167    )*
2168    @
2169    [\040\t]*                    # Nab whitespace.
2170    (?:
2171    \(                              #  (
2172    [^\\\x80-\xff\n\015()] *                             #     normal*
2173    (?:                                 #       (
2174    (?:  \\ [^\x80-\xff]  |
2175    \(                            #  (
2176    [^\\\x80-\xff\n\015()] *                            #     normal*
2177    (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2178    \)                           #                       )
2179    )    #         special
2180    [^\\\x80-\xff\n\015()] *                         #         normal*
2181    )*                                  #            )*
2182    \)                             #                )
2183    [\040\t]* )*    # If comment found, allow more spaces.
2184    (?:
2185    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2186    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2187    |
2188    \[                            # [
2189    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
2190    \]                           #           ]
2191    )
2192    [\040\t]*                    # Nab whitespace.
2193    (?:
2194    \(                              #  (
2195    [^\\\x80-\xff\n\015()] *                             #     normal*
2196    (?:                                 #       (
2197    (?:  \\ [^\x80-\xff]  |
2198    \(                            #  (
2199    [^\\\x80-\xff\n\015()] *                            #     normal*
2200    (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2201    \)                           #                       )
2202    )    #         special
2203    [^\\\x80-\xff\n\015()] *                         #         normal*
2204    )*                                  #            )*
2205    \)                             #                )
2206    [\040\t]* )*    # If comment found, allow more spaces.
2207    # optional trailing comments
2208    (?:
2209    \.
2210    [\040\t]*                    # Nab whitespace.
2211    (?:
2212    \(                              #  (
2213    [^\\\x80-\xff\n\015()] *                             #     normal*
2214    (?:                                 #       (
2215    (?:  \\ [^\x80-\xff]  |
2216    \(                            #  (
2217    [^\\\x80-\xff\n\015()] *                            #     normal*
2218    (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2219    \)                           #                       )
2220    )    #         special
2221    [^\\\x80-\xff\n\015()] *                         #         normal*
2222    )*                                  #            )*
2223    \)                             #                )
2224    [\040\t]* )*    # If comment found, allow more spaces.
2225    (?:
2226    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2227    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2228    |
2229    \[                            # [
2230    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
2231    \]                           #           ]
2232    )
2233    [\040\t]*                    # Nab whitespace.
2234    (?:
2235    \(                              #  (
2236    [^\\\x80-\xff\n\015()] *                             #     normal*
2237    (?:                                 #       (
2238    (?:  \\ [^\x80-\xff]  |
2239    \(                            #  (
2240    [^\\\x80-\xff\n\015()] *                            #     normal*
2241    (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2242    \)                           #                       )
2243    )    #         special
2244    [^\\\x80-\xff\n\015()] *                         #         normal*
2245    )*                                  #            )*
2246    \)                             #                )
2247    [\040\t]* )*    # If comment found, allow more spaces.
2248    # optional trailing comments
2249    )*
2250    # address
2251    |                             #  or
2252    (?:
2253    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2254    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2255    # Atom
2256    |                       #  or
2257    "                                     # "
2258    [^\\\x80-\xff\n\015"] *                            #   normal
2259    (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
2260    "                                     #        "
2261    # Quoted string
2262    )
2263    # leading word
2264    [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] *               # "normal" atoms and or spaces
2265    (?:
2266    (?:
2267    \(                              #  (
2268    [^\\\x80-\xff\n\015()] *                             #     normal*
2269    (?:                                 #       (
2270    (?:  \\ [^\x80-\xff]  |
2271    \(                            #  (
2272    [^\\\x80-\xff\n\015()] *                            #     normal*
2273    (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2274    \)                           #                       )
2275    )    #         special
2276    [^\\\x80-\xff\n\015()] *                         #         normal*
2277    )*                                  #            )*
2278    \)                             #                )
2279    |
2280    "                                     # "
2281    [^\\\x80-\xff\n\015"] *                            #   normal
2282    (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
2283    "                                     #        "
2284    ) # "special" comment or quoted string
2285    [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] *            #  more "normal"
2286    )*
2287    <
2288    [\040\t]*                    # Nab whitespace.
2289    (?:
2290    \(                              #  (
2291    [^\\\x80-\xff\n\015()] *                             #     normal*
2292    (?:                                 #       (
2293    (?:  \\ [^\x80-\xff]  |
2294    \(                            #  (
2295    [^\\\x80-\xff\n\015()] *                            #     normal*
2296    (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2297    \)                           #                       )
2298    )    #         special
2299    [^\\\x80-\xff\n\015()] *                         #         normal*
2300    )*                                  #            )*
2301    \)                             #                )
2302    [\040\t]* )*    # If comment found, allow more spaces.
2303    # <
2304    (?:
2305    @
2306    [\040\t]*                    # Nab whitespace.
2307    (?:
2308    \(                              #  (
2309    [^\\\x80-\xff\n\015()] *                             #     normal*
2310    (?:                                 #       (
2311    (?:  \\ [^\x80-\xff]  |
2312    \(                            #  (
2313    [^\\\x80-\xff\n\015()] *                            #     normal*
2314    (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2315    \)                           #                       )
2316    )    #         special
2317    [^\\\x80-\xff\n\015()] *                         #         normal*
2318    )*                                  #            )*
2319    \)                             #                )
2320    [\040\t]* )*    # If comment found, allow more spaces.
2321    (?:
2322    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2323    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2324    |
2325    \[                            # [
2326    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
2327    \]                           #           ]
2328    )
2329    [\040\t]*                    # Nab whitespace.
2330    (?:
2331    \(                              #  (
2332    [^\\\x80-\xff\n\015()] *                             #     normal*
2333    (?:                                 #       (
2334    (?:  \\ [^\x80-\xff]  |
2335    \(                            #  (
2336    [^\\\x80-\xff\n\015()] *                            #     normal*
2337    (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2338    \)                           #                       )
2339    )    #         special
2340    [^\\\x80-\xff\n\015()] *                         #         normal*
2341    )*                                  #            )*
2342    \)                             #                )
2343    [\040\t]* )*    # If comment found, allow more spaces.
2344    # optional trailing comments
2345    (?:
2346    \.
2347    [\040\t]*                    # Nab whitespace.
2348    (?:
2349    \(                              #  (
2350    [^\\\x80-\xff\n\015()] *                             #     normal*
2351    (?:                                 #       (
2352    (?:  \\ [^\x80-\xff]  |
2353    \(                            #  (
2354    [^\\\x80-\xff\n\015()] *                            #     normal*
2355    (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2356    \)                           #                       )
2357    )    #         special
2358    [^\\\x80-\xff\n\015()] *                         #         normal*
2359    )*                                  #            )*
2360    \)                             #                )
2361    [\040\t]* )*    # If comment found, allow more spaces.
2362    (?:
2363    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2364    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2365    |
2366    \[                            # [
2367    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
2368    \]                           #           ]
2369    )
2370    [\040\t]*                    # Nab whitespace.
2371    (?:
2372    \(                              #  (
2373    [^\\\x80-\xff\n\015()] *                             #     normal*
2374    (?:                                 #       (
2375    (?:  \\ [^\x80-\xff]  |
2376    \(                            #  (
2377    [^\\\x80-\xff\n\015()] *                            #     normal*
2378    (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2379    \)                           #                       )
2380    )    #         special
2381    [^\\\x80-\xff\n\015()] *                         #         normal*
2382    )*                                  #            )*
2383    \)                             #                )
2384    [\040\t]* )*    # If comment found, allow more spaces.
2385    # optional trailing comments
2386    )*
2387    (?: ,
2388    [\040\t]*                    # Nab whitespace.
2389    (?:
2390    \(                              #  (
2391    [^\\\x80-\xff\n\015()] *                             #     normal*
2392    (?:                                 #       (
2393    (?:  \\ [^\x80-\xff]  |
2394    \(                            #  (
2395    [^\\\x80-\xff\n\015()] *                            #     normal*
2396    (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2397    \)                           #                       )
2398    )    #         special
2399    [^\\\x80-\xff\n\015()] *                         #         normal*
2400    )*                                  #            )*
2401    \)                             #                )
2402    [\040\t]* )*    # If comment found, allow more spaces.
2403    @
2404    [\040\t]*                    # Nab whitespace.
2405    (?:
2406    \(                              #  (
2407    [^\\\x80-\xff\n\015()] *                             #     normal*
2408    (?:                                 #       (
2409    (?:  \\ [^\x80-\xff]  |
2410    \(                            #  (
2411    [^\\\x80-\xff\n\015()] *                            #     normal*
2412    (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2413    \)                           #                       )
2414    )    #         special
2415    [^\\\x80-\xff\n\015()] *                         #         normal*
2416    )*                                  #            )*
2417    \)                             #                )
2418    [\040\t]* )*    # If comment found, allow more spaces.
2419    (?:
2420    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2421    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2422    |
2423    \[                            # [
2424    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
2425    \]                           #           ]
2426    )
2427    [\040\t]*                    # Nab whitespace.
2428    (?:
2429    \(                              #  (
2430    [^\\\x80-\xff\n\015()] *                             #     normal*
2431    (?:                                 #       (
2432    (?:  \\ [^\x80-\xff]  |
2433    \(                            #  (
2434    [^\\\x80-\xff\n\015()] *                            #     normal*
2435    (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2436    \)                           #                       )
2437    )    #         special
2438    [^\\\x80-\xff\n\015()] *                         #         normal*
2439    )*                                  #            )*
2440    \)                             #                )
2441    [\040\t]* )*    # If comment found, allow more spaces.
2442    # optional trailing comments
2443    (?:
2444    \.
2445    [\040\t]*                    # Nab whitespace.
2446    (?:
2447    \(                              #  (
2448    [^\\\x80-\xff\n\015()] *                             #     normal*
2449    (?:                                 #       (
2450    (?:  \\ [^\x80-\xff]  |
2451    \(                            #  (
2452    [^\\\x80-\xff\n\015()] *                            #     normal*
2453    (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2454    \)                           #                       )
2455    )    #         special
2456    [^\\\x80-\xff\n\015()] *                         #         normal*
2457    )*                                  #            )*
2458    \)                             #                )
2459    [\040\t]* )*    # If comment found, allow more spaces.
2460    (?:
2461    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2462    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2463    |
2464    \[                            # [
2465    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
2466    \]                           #           ]
2467    )
2468    [\040\t]*                    # Nab whitespace.
2469    (?:
2470    \(                              #  (
2471    [^\\\x80-\xff\n\015()] *                             #     normal*
2472    (?:                                 #       (
2473    (?:  \\ [^\x80-\xff]  |
2474    \(                            #  (
2475    [^\\\x80-\xff\n\015()] *                            #     normal*
2476    (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2477    \)                           #                       )
2478    )    #         special
2479    [^\\\x80-\xff\n\015()] *                         #         normal*
2480    )*                                  #            )*
2481    \)                             #                )
2482    [\040\t]* )*    # If comment found, allow more spaces.
2483    # optional trailing comments
2484    )*
2485    )*  # additional domains
2486    :
2487    [\040\t]*                    # Nab whitespace.
2488    (?:
2489    \(                              #  (
2490    [^\\\x80-\xff\n\015()] *                             #     normal*
2491    (?:                                 #       (
2492    (?:  \\ [^\x80-\xff]  |
2493    \(                            #  (
2494    [^\\\x80-\xff\n\015()] *                            #     normal*
2495    (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2496    \)                           #                       )
2497    )    #         special
2498    [^\\\x80-\xff\n\015()] *                         #         normal*
2499    )*                                  #            )*
2500    \)                             #                )
2501    [\040\t]* )*    # If comment found, allow more spaces.
2502    # optional trailing comments
2503    )?     #       optional route
2504    (?:
2505    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2506    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2507    # Atom
2508    |                       #  or
2509    "                                     # "
2510    [^\\\x80-\xff\n\015"] *                            #   normal
2511    (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
2512    "                                     #        "
2513    # Quoted string
2514    )
2515    [\040\t]*                    # Nab whitespace.
2516    (?:
2517    \(                              #  (
2518    [^\\\x80-\xff\n\015()] *                             #     normal*
2519    (?:                                 #       (
2520    (?:  \\ [^\x80-\xff]  |
2521    \(                            #  (
2522    [^\\\x80-\xff\n\015()] *                            #     normal*
2523    (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2524    \)                           #                       )
2525    )    #         special
2526    [^\\\x80-\xff\n\015()] *                         #         normal*
2527    )*                                  #            )*
2528    \)                             #                )
2529    [\040\t]* )*    # If comment found, allow more spaces.
2530    (?:
2531    \.
2532    [\040\t]*                    # Nab whitespace.
2533    (?:
2534    \(                              #  (
2535    [^\\\x80-\xff\n\015()] *                             #     normal*
2536    (?:                                 #       (
2537    (?:  \\ [^\x80-\xff]  |
2538    \(                            #  (
2539    [^\\\x80-\xff\n\015()] *                            #     normal*
2540    (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2541    \)                           #                       )
2542    )    #         special
2543    [^\\\x80-\xff\n\015()] *                         #         normal*
2544    )*                                  #            )*
2545    \)                             #                )
2546    [\040\t]* )*    # If comment found, allow more spaces.
2547    (?:
2548    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2549    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2550    # Atom
2551    |                       #  or
2552    "                                     # "
2553    [^\\\x80-\xff\n\015"] *                            #   normal
2554    (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
2555    "                                     #        "
2556    # Quoted string
2557    )
2558    [\040\t]*                    # Nab whitespace.
2559    (?:
2560    \(                              #  (
2561    [^\\\x80-\xff\n\015()] *                             #     normal*
2562    (?:                                 #       (
2563    (?:  \\ [^\x80-\xff]  |
2564    \(                            #  (
2565    [^\\\x80-\xff\n\015()] *                            #     normal*
2566    (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2567    \)                           #                       )
2568    )    #         special
2569    [^\\\x80-\xff\n\015()] *                         #         normal*
2570    )*                                  #            )*
2571    \)                             #                )
2572    [\040\t]* )*    # If comment found, allow more spaces.
2573    # additional words
2574    )*
2575    @
2576    [\040\t]*                    # Nab whitespace.
2577    (?:
2578    \(                              #  (
2579    [^\\\x80-\xff\n\015()] *                             #     normal*
2580    (?:                                 #       (
2581    (?:  \\ [^\x80-\xff]  |
2582    \(                            #  (
2583    [^\\\x80-\xff\n\015()] *                            #     normal*
2584    (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2585    \)                           #                       )
2586    )    #         special
2587    [^\\\x80-\xff\n\015()] *                         #         normal*
2588    )*                                  #            )*
2589    \)                             #                )
2590    [\040\t]* )*    # If comment found, allow more spaces.
2591    (?:
2592    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2593    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2594    |
2595    \[                            # [
2596    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
2597    \]                           #           ]
2598    )
2599    [\040\t]*                    # Nab whitespace.
2600    (?:
2601    \(                              #  (
2602    [^\\\x80-\xff\n\015()] *                             #     normal*
2603    (?:                                 #       (
2604    (?:  \\ [^\x80-\xff]  |
2605    \(                            #  (
2606    [^\\\x80-\xff\n\015()] *                            #     normal*
2607    (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2608    \)                           #                       )
2609    )    #         special
2610    [^\\\x80-\xff\n\015()] *                         #         normal*
2611    )*                                  #            )*
2612    \)                             #                )
2613    [\040\t]* )*    # If comment found, allow more spaces.
2614    # optional trailing comments
2615    (?:
2616    \.
2617    [\040\t]*                    # Nab whitespace.
2618    (?:
2619    \(                              #  (
2620    [^\\\x80-\xff\n\015()] *                             #     normal*
2621    (?:                                 #       (
2622    (?:  \\ [^\x80-\xff]  |
2623    \(                            #  (
2624    [^\\\x80-\xff\n\015()] *                            #     normal*
2625    (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2626    \)                           #                       )
2627    )    #         special
2628    [^\\\x80-\xff\n\015()] *                         #         normal*
2629    )*                                  #            )*
2630    \)                             #                )
2631    [\040\t]* )*    # If comment found, allow more spaces.
2632    (?:
2633    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2634    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2635    |
2636    \[                            # [
2637    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
2638    \]                           #           ]
2639    )
2640    [\040\t]*                    # Nab whitespace.
2641    (?:
2642    \(                              #  (
2643    [^\\\x80-\xff\n\015()] *                             #     normal*
2644    (?:                                 #       (
2645    (?:  \\ [^\x80-\xff]  |
2646    \(                            #  (
2647    [^\\\x80-\xff\n\015()] *                            #     normal*
2648    (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2649    \)                           #                       )
2650    )    #         special
2651    [^\\\x80-\xff\n\015()] *                         #         normal*
2652    )*                                  #            )*
2653    \)                             #                )
2654    [\040\t]* )*    # If comment found, allow more spaces.
2655    # optional trailing comments
2656    )*
2657    #       address spec
2658    >                    #                 >
2659    # name and address
2660    )
2661    /x
2662        Alan Other <user\@dom.ain>
2663     0: Alan Other <user@dom.ain>
2664        <user\@dom.ain>
2665     0: user@dom.ain
2666     1: user@dom
2667        user\@dom.ain
2668     0: user@dom.ain
2669     1: user@dom
2670        \"A. Other\" <user.1234\@dom.ain> (a comment)
2671     0: "A. Other" <user.1234@dom.ain>
2672        A. Other <user.1234\@dom.ain> (a comment)
2673     0:  Other <user.1234@dom.ain>
2674        \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
2675     0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
2676     1: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re
2677        A missing angle <user\@some.where
2678     0: user@some.where
2679     1: user@some
2680        *** Failers
2681    No match
2682        The quick brown fox
2683    No match
2684    
2685    /abc\0def\00pqr\000xyz\0000AB/
2686        abc\0def\00pqr\000xyz\0000AB
2687     0: abc\x00def\x00pqr\x00xyz\x000AB
2688        abc456 abc\0def\00pqr\000xyz\0000ABCDE
2689     0: abc\x00def\x00pqr\x00xyz\x000AB
2690    
2691    /abc\x0def\x00pqr\x000xyz\x0000AB/
2692        abc\x0def\x00pqr\x000xyz\x0000AB
2693     0: abc\x0def\x00pqr\x000xyz\x0000AB
2694        abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE
2695     0: abc\x0def\x00pqr\x000xyz\x0000AB
2696    
2697    /^[\000-\037]/
2698        \0A
2699     0: \x00
2700        \01B
2701     0: \x01
2702        \037C
2703     0: \x1f
2704    
2705    /\0*/
2706        \0\0\0\0
2707     0: \x00\x00\x00\x00
2708     1: \x00\x00\x00
2709     2: \x00\x00
2710     3: \x00
2711     4:
2712    
2713    /A\x0{2,3}Z/
2714        The A\x0\x0Z
2715     0: A\x00\x00Z
2716        An A\0\x0\0Z
2717     0: A\x00\x00\x00Z
2718        *** Failers
2719    No match
2720        A\0Z
2721    No match
2722        A\0\x0\0\x0Z
2723    No match
2724    
2725    /^\s/
2726        \040abc
2727     0:
2728        \x0cabc
2729     0: \x0c
2730        \nabc
2731     0: \x0a
2732        \rabc
2733     0: \x0d
2734        \tabc
2735     0: \x09
2736        *** Failers
2737    No match
2738        abc
2739    No match
2740    
2741    /^a     b
2742          c/x
2743        abc
2744     0: abc
2745    
2746    /ab{1,3}bc/
2747        abbbbc
2748     0: abbbbc
2749        abbbc
2750     0: abbbc
2751        abbc
2752     0: abbc
2753        *** Failers
2754    No match
2755        abc
2756    No match
2757        abbbbbc
2758    No match
2759    
2760    /([^.]*)\.([^:]*):[T ]+(.*)/
2761        track1.title:TBlah blah blah
2762     0: track1.title:TBlah blah blah
2763     1: track1.title:TBlah blah bla
2764     2: track1.title:TBlah blah bl
2765     3: track1.title:TBlah blah b
2766     4: track1.title:TBlah blah
2767     5: track1.title:TBlah blah
2768     6: track1.title:TBlah bla
2769     7: track1.title:TBlah bl
2770     8: track1.title:TBlah b
2771     9: track1.title:TBlah
2772    10: track1.title:TBlah
2773    11: track1.title:TBla
2774    12: track1.title:TBl
2775    13: track1.title:TB
2776    14: track1.title:T
2777    
2778    /([^.]*)\.([^:]*):[T ]+(.*)/i
2779        track1.title:TBlah blah blah
2780     0: track1.title:TBlah blah blah
2781     1: track1.title:TBlah blah bla
2782     2: track1.title:TBlah blah bl
2783     3: track1.title:TBlah blah b
2784     4: track1.title:TBlah blah
2785     5: track1.title:TBlah blah
2786     6: track1.title:TBlah bla
2787     7: track1.title:TBlah bl
2788     8: track1.title:TBlah b
2789     9: track1.title:TBlah
2790    10: track1.title:TBlah
2791    11: track1.title:TBla
2792    12: track1.title:TBl
2793    13: track1.title:TB
2794    14: track1.title:T
2795    
2796    /([^.]*)\.([^:]*):[t ]+(.*)/i
2797        track1.title:TBlah blah blah
2798     0: track1.title:TBlah blah blah
2799     1: track1.title:TBlah blah bla
2800     2: track1.title:TBlah blah bl
2801     3: track1.title:TBlah blah b
2802     4: track1.title:TBlah blah
2803     5: track1.title:TBlah blah
2804     6: track1.title:TBlah bla
2805     7: track1.title:TBlah bl
2806     8: track1.title:TBlah b
2807     9: track1.title:TBlah
2808    10: track1.title:TBlah
2809    11: track1.title:TBla
2810    12: track1.title:TBl
2811    13: track1.title:TB
2812    14: track1.title:T
2813    
2814    /^[W-c]+$/
2815        WXY_^abc
2816     0: WXY_^abc
2817        *** Failers
2818    No match
2819        wxy
2820    No match
2821    
2822    /^[W-c]+$/i
2823        WXY_^abc
2824     0: WXY_^abc
2825        wxy_^ABC
2826     0: wxy_^ABC
2827    
2828    /^[\x3f-\x5F]+$/i
2829        WXY_^abc
2830     0: WXY_^abc
2831        wxy_^ABC
2832     0: wxy_^ABC
2833    
2834    /^abc$/m
2835        abc
2836     0: abc
2837        qqq\nabc
2838     0: abc
2839        abc\nzzz
2840     0: abc
2841        qqq\nabc\nzzz
2842     0: abc
2843    
2844    /^abc$/
2845        abc
2846     0: abc
2847        *** Failers
2848    No match
2849        qqq\nabc
2850    No match
2851        abc\nzzz
2852    No match
2853        qqq\nabc\nzzz
2854    No match
2855    
2856    /\Aabc\Z/m
2857        abc
2858     0: abc
2859        abc\n
2860     0: abc
2861        *** Failers
2862    No match
2863        qqq\nabc
2864    No match
2865        abc\nzzz
2866    No match
2867        qqq\nabc\nzzz
2868    No match
2869    
2870    /\A(.)*\Z/s
2871        abc\ndef
2872     0: abc\x0adef
2873    
2874    /\A(.)*\Z/m
2875        *** Failers
2876     0: *** Failers
2877        abc\ndef
2878    No match
2879    
2880    /(?:b)|(?::+)/
2881        b::c
2882     0: b
2883        c::b
2884     0: ::
2885     1: :
2886    
2887    /[-az]+/
2888        az-
2889     0: az-
2890     1: az
2891     2: a
2892        *** Failers
2893     0: a
2894        b
2895    No match
2896    
2897    /[az-]+/
2898        za-
2899     0: za-
2900     1: za
2901     2: z
2902        *** Failers
2903     0: a
2904        b
2905    No match
2906    
2907    /[a\-z]+/
2908        a-z
2909     0: a-z
2910     1: a-
2911     2: a
2912        *** Failers
2913     0: a
2914        b
2915    No match
2916    
2917    /[a-z]+/
2918        abcdxyz
2919     0: abcdxyz
2920     1: abcdxy
2921     2: abcdx
2922     3: abcd
2923     4: abc
2924     5: ab
2925     6: a
2926    
2927    /[\d-]+/
2928        12-34
2929     0: 12-34
2930     1: 12-3
2931     2: 12-
2932     3: 12
2933     4: 1
2934        *** Failers
2935    No match
2936        aaa
2937    No match
2938    
2939    /[\d-z]+/
2940        12-34z
2941     0: 12-34z
2942     1: 12-34
2943     2: 12-3
2944     3: 12-
2945     4: 12
2946     5: 1
2947        *** Failers
2948    No match
2949        aaa
2950    No match
2951    
2952    /\x5c/
2953        \\
2954     0: \
2955    
2956    /\x20Z/
2957        the Zoo
2958     0:  Z
2959        *** Failers
2960    No match
2961        Zulu
2962    No match
2963    
2964    /ab{3cd/
2965        ab{3cd
2966     0: ab{3cd
2967    
2968    /ab{3,cd/
2969        ab{3,cd
2970     0: ab{3,cd
2971    
2972    /ab{3,4a}cd/
2973        ab{3,4a}cd
2974     0: ab{3,4a}cd
2975    
2976    /{4,5a}bc/
2977        {4,5a}bc
2978     0: {4,5a}bc
2979    
2980    /^a.b/<lf>
2981        a\rb
2982     0: a\x0db
2983        *** Failers
2984    No match
2985        a\nb
2986    No match
2987    
2988    /abc$/
2989        abc
2990     0: abc
2991        abc\n
2992     0: abc
2993        *** Failers
2994    No match
2995        abc\ndef
2996    No match
2997    
2998    /(abc)\123/
2999        abc\x53
3000     0: abcS
3001    
3002