Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/boost_1_33_1/libs/regex/doc/vc71-performance.html @ 12

Last change on this file since 12 was 12, checked in by landauf, 18 years ago

added boost

File size: 26.8 KB
Line 
1<html>
2   <head>
3      <title>Regular Expression Performance Comparison</title>
4      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
5      <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
6      <meta name="Template" content="C:\PROGRAM FILES\MICROSOFT OFFICE\OFFICE\html.dot">
7      <meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
8   </head>
9   <body bgcolor="#ffffff" link="#0000ff" vlink="#800080">
10      <h2>Regular Expression Performance Comparison</h2>
11      <p>
12         The following tables provide comparisons between the following regular
13         expression libraries:</p>
14      <p><a href="http://research.microsoft.com/projects/greta">GRETA</a>.</p>
15      <p><a href="http://www.boost.org/">The Boost regex library</a>.</p>
16      <p><a href="http://arglist.com/regex/">Henry Spencer's regular expression library</a>
17         - this is provided for comparison as a typical non-backtracking implementation.</p>
18      <P>Philip Hazel's <A href="http://www.pcre.org">PCRE</A> library.</P>
19      <H3>Details</H3>
20      <P>Machine: Intel Pentium 4 2.8GHz PC.</P>
21      <P>Compiler: Microsoft Visual C++ version 7.1.</P>
22      <P>C++ Standard Library: Dinkumware standard library version 313.</P>
23      <P>OS: Win32.</P>
24      <P>Boost version: 1.31.0.</P>
25      <P>PCRE version: 3.9.</P>
26      <P>
27         As ever care should be taken in interpreting the results, only sensible regular
28         expressions (rather than pathological cases) are given, most are taken from the
29         Boost regex examples, or from the <a href="http://www.regxlib.com/">Library of
30            Regular Expressions</a>. In addition, some variation in the relative
31         performance of these libraries can be expected on other machines - as memory
32         access and processor caching effects can be quite large for most finite state
33         machine algorithms.</P>
34      <H3>Averages</H3>
35      <P>The following are the average relative scores for all the tests: the perfect
36         regular expression library&nbsp;would score 1, in practice any small number
37         (say less that 4 or 5) is pretty good.</P>
38      <P><table border="1" cellspacing="1">
39            <tr>
40               <td><strong>GRETA</strong></td>
41               <td><strong>GRETA<BR>
42                     (non-recursive mode)</strong></td>
43               <td><strong>Boost</strong></td>
44               <td><strong>Boost + C++ locale</strong></td>
45               <td><strong>POSIX</strong></td>
46               <td><strong>PCRE</strong></td>
47            </tr>
48            <tr>
49               <td>2.31619</td>
50               <td>6.14203</td>
51               <td>2.30668</td>
52               <td>1.94363</td>
53               <td>124.752</td>
54               <td>2.09365</td>
55            </tr>
56         </table>
57      </P>
58      <h3>Comparison 1: Long Search</h3>
59      <p>For each of the following regular expressions the time taken to find all
60         occurrences of the expression within a long English language text was measured
61         (<a href="http://www.gutenberg.org/files/3200/old/mtent12.zip">mtent12.txt</a>
62         from <a href="http://promo.net/pg/">Project Gutenberg</a>, 19Mb).&nbsp;</p>
63      <P><table border="1" cellspacing="1">
64            <tr>
65               <td><strong>Expression</strong></td>
66               <td><strong>GRETA</strong></td>
67               <td><strong>GRETA<BR>
68                     (non-recursive mode)</strong></td>
69               <td><strong>Boost</strong></td>
70               <td><strong>Boost + C++ locale</strong></td>
71               <td><strong>POSIX</strong></td>
72               <td><strong>PCRE</strong></td>
73            </tr>
74            <tr>
75               <td><code>Twain</code></td>
76               <td><font color="#008000">1<BR>
77                     (0.0407s)</font></td>
78               <td><font color="#008000">1<BR>
79                     (0.0407s)</font></td>
80               <td>4.18<BR>
81                  (0.17s)</td>
82               <td>4.18<BR>
83                  (0.17s)</td>
84               <td>135<BR>
85                  (5.48s)</td>
86               <td>1.37<BR>
87                  (0.0557s)</td>
88            </tr>
89            <tr>
90               <td><code>Huck[[:alpha:]]+</code></td>
91               <td><font color="#008000">1.02<BR>
92                     (0.0381s)</font></td>
93               <td><font color="#008000">1<BR>
94                     (0.0375s)</font></td>
95               <td>4.53<BR>
96                  (0.17s)</td>
97               <td>4.54<BR>
98                  (0.17s)</td>
99               <td>166<BR>
100                  (6.23s)</td>
101               <td>1.34<BR>
102                  (0.0501s)</td>
103            </tr>
104            <tr>
105               <td><code>[[:alpha:]]+ing</code></td>
106               <td>4.3<BR>
107                  (4.18s)</td>
108               <td>9.93<BR>
109                  (9.65s)</td>
110               <td>1.15<BR>
111                  (1.12s)</td>
112               <td><font color="#008000">1<BR>
113                     (0.972s)</font></td>
114               <td>8.15<BR>
115                  (7.92s)</td>
116               <td>5.85<BR>
117                  (5.69s)</td>
118            </tr>
119            <tr>
120               <td><code>^[^ ]*?Twain</code></td>
121               <td>6.25<BR>
122                  (1.84s)</td>
123               <td>20.9<BR>
124                  (6.16s)</td>
125               <td>1.56<BR>
126                  (0.461s)</td>
127               <td><font color="#008000">1<BR>
128                     (0.295s)</font></td>
129               <td>NA</td>
130               <td>2.58<BR>
131                  (0.761s)</td>
132            </tr>
133            <tr>
134               <td><code>Tom|Sawyer|Huckleberry|Finn</code></td>
135               <td>6.53<BR>
136                  (0.711s)</td>
137               <td>11.5<BR>
138                  (1.25s)</td>
139               <td>2.3<BR>
140                  (0.251s)</td>
141               <td><font color="#008000">1<BR>
142                     (0.109s)</font></td>
143               <td>196<BR>
144                  (21.4s)</td>
145               <td>1.77<BR>
146                  (0.193s)</td>
147            </tr>
148            <tr>
149               <td><code>(Tom|Sawyer|Huckleberry|Finn).{0,30}river|river.{0,30}(Tom|Sawyer|Huckleberry|Finn)</code></td>
150               <td>3.88<BR>
151                  (0.972s)</td>
152               <td>6.48<BR>
153                  (1.62s)</td>
154               <td>1.66<BR>
155                  (0.416s)</td>
156               <td><font color="#008000">1<BR>
157                     (0.251s)</font></td>
158               <td>NA</td>
159               <td>2.48<BR>
160                  (0.62s)</td>
161            </tr>
162         </table>
163      </P>
164      <h3>Comparison 2: Medium Sized Search</h3>
165      <p>For each of the following regular expressions the time taken to find all
166         occurrences of the expression within a medium sized English language text was
167         measured (the first 50K from mtent12.txt).&nbsp;</p>
168      <P><table border="1" cellspacing="1">
169            <tr>
170               <td><strong>Expression</strong></td>
171               <td><strong>GRETA</strong></td>
172               <td><strong>GRETA<BR>
173                     (non-recursive mode)</strong></td>
174               <td><strong>Boost</strong></td>
175               <td><strong>Boost + C++ locale</strong></td>
176               <td><strong>POSIX</strong></td>
177               <td><strong>PCRE</strong></td>
178            </tr>
179            <tr>
180               <td><code>Twain</code></td>
181               <td><font color="#008000">1<BR>
182                     (9.05e-005s)</font></td>
183               <td><font color="#008000">1.03<BR>
184                     (9.29e-005s)</font></td>
185               <td>4.92<BR>
186                  (0.000445s)</td>
187               <td>4.92<BR>
188                  (0.000445s)</td>
189               <td>43.2<BR>
190                  (0.00391s)</td>
191               <td>3.18<BR>
192                  (0.000288s)</td>
193            </tr>
194            <tr>
195               <td><code>Huck[[:alpha:]]+</code></td>
196               <td><font color="#008000">1<BR>
197                     (8.56e-005s)</font></td>
198               <td><font color="#008000">1<BR>
199                     (8.56e-005s)</font></td>
200               <td>4.97<BR>
201                  (0.000425s)</td>
202               <td>4.98<BR>
203                  (0.000426s)</td>
204               <td>2.8<BR>
205                  (0.000239s)</td>
206               <td>2.2<BR>
207                  (0.000188s)</td>
208            </tr>
209            <tr>
210               <td><code>[[:alpha:]]+ing</code></td>
211               <td>5.29<BR>
212                  (0.011s)</td>
213               <td>11.8<BR>
214                  (0.0244s)</td>
215               <td>1.19<BR>
216                  (0.00246s)</td>
217               <td><font color="#008000">1<BR>
218                     (0.00207s)</font></td>
219               <td>8.77<BR>
220                  (0.0182s)</td>
221               <td>6.88<BR>
222                  (0.0142s)</td>
223            </tr>
224            <tr>
225               <td><code>^[^ ]*?Twain</code></td>
226               <td>5.98<BR>
227                  (0.00462s)</td>
228               <td>20.2<BR>
229                  (0.0156s)</td>
230               <td>1.54<BR>
231                  (0.00119s)</td>
232               <td><font color="#008000">1<BR>
233                     (0.000772s)</font></td>
234               <td>NA</td>
235               <td>2.53<BR>
236                  (0.00195s)</td>
237            </tr>
238            <tr>
239               <td><code>Tom|Sawyer|Huckleberry|Finn</code></td>
240               <td>3.42<BR>
241                  (0.00207s)</td>
242               <td>6.31<BR>
243                  (0.00383s)</td>
244               <td>1.71<BR>
245                  (0.00104s)</td>
246               <td><font color="#008000">1<BR>
247                     (0.000606s)</font></td>
248               <td>81.5<BR>
249                  (0.0494s)</td>
250               <td>1.96<BR>
251                  (0.00119s)</td>
252            </tr>
253            <tr>
254               <td><code>(Tom|Sawyer|Huckleberry|Finn).{0,30}river|river.{0,30}(Tom|Sawyer|Huckleberry|Finn)</code></td>
255               <td>1.97<BR>
256                  (0.00266s)</td>
257               <td>3.77<BR>
258                  (0.00509s)</td>
259               <td>1.38<BR>
260                  (0.00186s)</td>
261               <td><font color="#008000">1<BR>
262                     (0.00135s)</font></td>
263               <td>297<BR>
264                  (0.401s)</td>
265               <td>1.77<BR>
266                  (0.00238s)</td>
267            </tr>
268         </table>
269      </P>
270      <H3>Comparison 3:&nbsp;C++ Code&nbsp;Search</H3>
271      <P>For each of the following regular expressions the time taken to find all
272         occurrences of the expression within the C++ source file <A href="../../../boost/crc.hpp">
273            boost/crc.hpp</A>&nbsp;was measured.&nbsp;</P>
274      <P><table border="1" cellspacing="1">
275            <tr>
276               <td><strong>Expression</strong></td>
277               <td><strong>GRETA</strong></td>
278               <td><strong>GRETA<BR>
279                     (non-recursive mode)</strong></td>
280               <td><strong>Boost</strong></td>
281               <td><strong>Boost + C++ locale</strong></td>
282               <td><strong>POSIX</strong></td>
283               <td><strong>PCRE</strong></td>
284            </tr>
285            <tr>
286               <td><code>^(template[[:space:]]*&lt;[^;:{]+&gt;[[:space:]]*)?(class|struct)[[:space:]]*(\&lt;\w+\&gt;([
287                     ]*\([^)]*\))?[[:space:]]*)*(\&lt;\w*\&gt;)[[:space:]]*(&lt;[^;:{]+&gt;[[:space:]]*)?(\{|:[^;\{()]*\{)</code></td>
288               <td>6.67<BR>
289                  (0.00147s)</td>
290               <td>36.9<BR>
291                  (0.00813s)</td>
292               <td><font color="#008000">1.03<BR>
293                     (0.000227s)</font></td>
294               <td><font color="#008000">1<BR>
295                     (0.00022s)</font></td>
296               <td>557<BR>
297                  (0.123s)</td>
298               <td>2.57<BR>
299                  (0.000566s)</td>
300            </tr>
301            <tr>
302               <td><code>(^[
303                     ]*#(?:[^\\\n]|\\[^\n_[:punct:][:alnum:]]*[\n[:punct:][:word:]])*)|(//[^\n]*|/\*.*?\*/)|\&lt;([+-]?(?:(?:0x[[:xdigit:]]+)|(?:(?:[[:digit:]]*\.)?[[:digit:]]+(?:[eE][+-]?[[:digit:]]+)?))u?(?:(?:int(?:8|16|32|64))|L)?)\&gt;|('(?:[^\\']|\\.)*'|"(?:[^\\"]|\\.)*")|\&lt;(__asm|__cdecl|__declspec|__export|__far16|__fastcall|__fortran|__import|__pascal|__rtti|__stdcall|_asm|_cdecl|__except|_export|_far16|_fastcall|__finally|_fortran|_import|_pascal|_stdcall|__thread|__try|asm|auto|bool|break|case|catch|cdecl|char|class|const|const_cast|continue|default|delete|do|double|dynamic_cast|else|enum|explicit|extern|false|float|for|friend|goto|if|inline|int|long|mutable|namespace|new|operator|pascal|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_cast|struct|switch|template|this|throw|true|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\&gt;</code></td>
304               <td><font color="#008000">1<BR>
305                     (0.00555s)</font></td>
306               <td>3.32<BR>
307                  (0.0185s)</td>
308               <td>2.53<BR>
309                  (0.0141s)</td>
310               <td>1.94<BR>
311                  (0.0108s)</td>
312               <td>NA</td>
313               <td>3.38<BR>
314                  (0.0188s)</td>
315            </tr>
316            <tr>
317               <td><code>^[ ]*#[ ]*include[ ]+("[^"]+"|&lt;[^&gt;]+&gt;)</code></td>
318               <td>4.77<BR>
319                  (0.00156s)</td>
320               <td>24.8<BR>
321                  (0.00814s)</td>
322               <td>1.13<BR>
323                  (0.000372s)</td>
324               <td><font color="#008000">1<BR>
325                     (0.000328s)</font></td>
326               <td>120<BR>
327                  (0.0394s)</td>
328               <td>1.58<BR>
329                  (0.000518s)</td>
330            </tr>
331            <tr>
332               <td><code>^[ ]*#[ ]*include[ ]+("boost/[^"]+"|&lt;boost/[^&gt;]+&gt;)</code></td>
333               <td>4.72<BR>
334                  (0.00154s)</td>
335               <td>24.8<BR>
336                  (0.00813s)</td>
337               <td>1.12<BR>
338                  (0.000367s)</td>
339               <td><font color="#008000">1<BR>
340                     (0.000328s)</font></td>
341               <td>143<BR>
342                  (0.0469s)</td>
343               <td>1.58<BR>
344                  (0.000518s)</td>
345            </tr>
346         </table>
347      </P>
348      <H3>
349         <H3>Comparison 4: HTML Document Search</H3>
350      </H3>
351      <P>For each of the following regular expressions the time taken to find all
352         occurrences of the expression within the html file <A href="../../libraries.htm">libs/libraries.htm</A>
353         was measured.&nbsp;</P>
354      <P><table border="1" cellspacing="1">
355            <tr>
356               <td><strong>Expression</strong></td>
357               <td><strong>GRETA</strong></td>
358               <td><strong>GRETA<BR>
359                     (non-recursive mode)</strong></td>
360               <td><strong>Boost</strong></td>
361               <td><strong>Boost + C++ locale</strong></td>
362               <td><strong>POSIX</strong></td>
363               <td><strong>PCRE</strong></td>
364            </tr>
365            <tr>
366               <td><code>beman|john|dave</code></td>
367               <td>4.07<BR>
368                  (0.00111s)</td>
369               <td>7.14<BR>
370                  (0.00195s)</td>
371               <td>1.75<BR>
372                  (0.000479s)</td>
373               <td><font color="#008000">1<BR>
374                     (0.000273s)</font></td>
375               <td>54.3<BR>
376                  (0.0149s)</td>
377               <td>1.83<BR>
378                  (0.000499s)</td>
379            </tr>
380            <tr>
381               <td><code>&lt;p&gt;.*?&lt;/p&gt;</code></td>
382               <td><font color="#008000">1<BR>
383                     (6.59e-005s)</font></td>
384               <td><font color="#008000">1.04<BR>
385                     (6.84e-005s)</font></td>
386               <td>4.15<BR>
387                  (0.000273s)</td>
388               <td>4.23<BR>
389                  (0.000279s)</td>
390               <td>NA</td>
391               <td>4.23<BR>
392                  (0.000279s)</td>
393            </tr>
394            <tr>
395               <td><code>&lt;a[^&gt;]+href=("[^"]*"|[^[:space:]]+)[^&gt;]*&gt;</code></td>
396               <td>1.39<BR>
397                  (0.000626s)</td>
398               <td>1.83<BR>
399                  (0.000821s)</td>
400               <td>1.41<BR>
401                  (0.000636s)</td>
402               <td><font color="#008000">1<BR>
403                     (0.00045s)</font></td>
404               <td>351<BR>
405                  (0.158s)</td>
406               <td>1.13<BR>
407                  (0.000509s)</td>
408            </tr>
409            <tr>
410               <td><code>&lt;h[12345678][^&gt;]*&gt;.*?&lt;/h[12345678]&gt;</code></td>
411               <td><font color="#008000">1<BR>
412                     (0.000142s)</font></td>
413               <td>1.21<BR>
414                  (0.000171s)</td>
415               <td>2.62<BR>
416                  (0.000372s)</td>
417               <td>1.48<BR>
418                  (0.00021s)</td>
419               <td>NA</td>
420               <td>1.73<BR>
421                  (0.000245s)</td>
422            </tr>
423            <tr>
424               <td><code>&lt;img[^&gt;]+src=("[^"]*"|[^[:space:]]+)[^&gt;]*&gt;</code></td>
425               <td><font color="#008000">1<BR>
426                     (5.38e-005s)</font></td>
427               <td><font color="#008000">1.05<BR>
428                     (5.63e-005s)</font></td>
429               <td>5<BR>
430                  (0.000269s)</td>
431               <td>5.18<BR>
432                  (0.000278s)</td>
433               <td>604<BR>
434                  (0.0325s)</td>
435               <td>4.05<BR>
436                  (0.000218s)</td>
437            </tr>
438            <tr>
439               <td><code>&lt;font[^&gt;]+face=("[^"]*"|[^[:space:]]+)[^&gt;]*&gt;.*?&lt;/font&gt;</code></td>
440               <td><font color="#008000">1<BR>
441                     (6.05e-005s)</font></td>
442               <td><font color="#008000">1.09<BR>
443                     (6.59e-005s)</font></td>
444               <td>4.45<BR>
445                  (0.000269s)</td>
446               <td>4.69<BR>
447                  (0.000284s)</td>
448               <td>NA</td>
449               <td>3.64<BR>
450                  (0.00022s)</td>
451            </tr>
452         </table>
453      </P>
454      <H3>Comparison 3: Simple Matches</H3>
455      <p>
456         For each of the following regular expressions the time taken to match against
457         the text indicated was measured.&nbsp;</p>
458      <P><table border="1" cellspacing="1">
459            <tr>
460               <td><strong>Expression</strong></td>
461               <td><strong>Text</strong></td>
462               <td><strong>GRETA</strong></td>
463               <td><strong>GRETA<BR>
464                     (non-recursive mode)</strong></td>
465               <td><strong>Boost</strong></td>
466               <td><strong>Boost + C++ locale</strong></td>
467               <td><strong>POSIX</strong></td>
468               <td><strong>PCRE</strong></td>
469            </tr>
470            <tr>
471               <td><code>abc</code></td>
472               <td>abc</td>
473               <td>1.32<BR>
474                  (2.24e-007s)</td>
475               <td>1.86<BR>
476                  (3.15e-007s)</td>
477               <td>1.25<BR>
478                  (2.12e-007s)</td>
479               <td>1.24<BR>
480                  (2.1e-007s)</td>
481               <td>2.98<BR>
482                  (5.05e-007s)</td>
483               <td><font color="#008000">1<BR>
484                     (1.7e-007s)</font></td>
485            </tr>
486            <tr>
487               <td><code>^([0-9]+)(\-| |$)(.*)$</code></td>
488               <td>100- this is a line of ftp response which contains a message string</td>
489               <td>1.32<BR>
490                  (5.91e-007s)</td>
491               <td>1.96<BR>
492                  (8.78e-007s)</td>
493               <td>2.68<BR>
494                  (1.2e-006s)</td>
495               <td>1.53<BR>
496                  (6.88e-007s)</td>
497               <td>332<BR>
498                  (0.000149s)</td>
499               <td><font color="#008000">1<BR>
500                     (4.49e-007s)</font></td>
501            </tr>
502            <tr>
503               <td><code>([[:digit:]]{4}[- ]){3}[[:digit:]]{3,4}</code></td>
504               <td>1234-5678-1234-456</td>
505               <td>1.44<BR>
506                  (7.16e-007s)</td>
507               <td>2.04<BR>
508                  (1.01e-006s)</td>
509               <td>3.35<BR>
510                  (1.66e-006s)</td>
511               <td>2.15<BR>
512                  (1.07e-006s)</td>
513               <td>31.4<BR>
514                  (1.56e-005s)</td>
515               <td><font color="#008000">1<BR>
516                     (4.96e-007s)</font></td>
517            </tr>
518            <tr>
519               <td><code>^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$</code></td>
520               <td>john@johnmaddock.co.uk</td>
521               <td><font color="#008000">1<BR>
522                     (1.18e-006s)</font></td>
523               <td>1.42<BR>
524                  (1.68e-006s)</td>
525               <td>2.06<BR>
526                  (2.44e-006s)</td>
527               <td>1.35<BR>
528                  (1.6e-006s)</td>
529               <td>165<BR>
530                  (0.000196s)</td>
531               <td><font color="#008000">1.06<BR>
532                     (1.26e-006s)</font></td>
533            </tr>
534            <tr>
535               <td><code>^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$</code></td>
536               <td>foo12@foo.edu</td>
537               <td><font color="#008000">1<BR>
538                     (1.09e-006s)</font></td>
539               <td>1.44<BR>
540                  (1.57e-006s)</td>
541               <td>2.21<BR>
542                  (2.4e-006s)</td>
543               <td>1.41<BR>
544                  (1.53e-006s)</td>
545               <td>108<BR>
546                  (0.000117s)</td>
547               <td><font color="#008000">1.04<BR>
548                     (1.13e-006s)</font></td>
549            </tr>
550            <tr>
551               <td><code>^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$</code></td>
552               <td>bob.smith@foo.tv</td>
553               <td><font color="#008000">1<BR>
554                     (1.07e-006s)</font></td>
555               <td>1.43<BR>
556                  (1.53e-006s)</td>
557               <td>2.21<BR>
558                  (2.37e-006s)</td>
559               <td>1.45<BR>
560                  (1.55e-006s)</td>
561               <td>123<BR>
562                  (0.000132s)</td>
563               <td><font color="#008000">1.05<BR>
564                     (1.13e-006s)</font></td>
565            </tr>
566            <tr>
567               <td><code>^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$</code></td>
568               <td>EH10 2QQ</td>
569               <td><font color="#008000">1<BR>
570                     (3.19e-007s)</font></td>
571               <td>1.67<BR>
572                  (5.34e-007s)</td>
573               <td>1.58<BR>
574                  (5.05e-007s)</td>
575               <td>1.4<BR>
576                  (4.49e-007s)</td>
577               <td>10.4<BR>
578                  (3.32e-006s)</td>
579               <td>1.15<BR>
580                  (3.68e-007s)</td>
581            </tr>
582            <tr>
583               <td><code>^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$</code></td>
584               <td>G1 1AA</td>
585               <td><font color="#008000">1<BR>
586                     (3.29e-007s)</font></td>
587               <td>1.65<BR>
588                  (5.44e-007s)</td>
589               <td>1.51<BR>
590                  (4.96e-007s)</td>
591               <td>1.36<BR>
592                  (4.49e-007s)</td>
593               <td>8.46<BR>
594                  (2.79e-006s)</td>
595               <td>1.1<BR>
596                  (3.63e-007s)</td>
597            </tr>
598            <tr>
599               <td><code>^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$</code></td>
600               <td>SW1 1ZZ</td>
601               <td><font color="#008000">1<BR>
602                     (3.25e-007s)</font></td>
603               <td>1.64<BR>
604                  (5.34e-007s)</td>
605               <td>1.56<BR>
606                  (5.05e-007s)</td>
607               <td>1.38<BR>
608                  (4.49e-007s)</td>
609               <td>9.29<BR>
610                  (3.02e-006s)</td>
611               <td>1.13<BR>
612                  (3.68e-007s)</td>
613            </tr>
614            <tr>
615               <td><code>^[[:digit:]]{1,2}/[[:digit:]]{1,2}/[[:digit:]]{4}$</code></td>
616               <td>4/1/2001</td>
617               <td><font color="#008000">1<BR>
618                     (3.44e-007s)</font></td>
619               <td>1.55<BR>
620                  (5.34e-007s)</td>
621               <td>2.36<BR>
622                  (8.12e-007s)</td>
623               <td>2.2<BR>
624                  (7.55e-007s)</td>
625               <td>19.6<BR>
626                  (6.72e-006s)</td>
627               <td>1.81<BR>
628                  (6.21e-007s)</td>
629            </tr>
630            <tr>
631               <td><code>^[[:digit:]]{1,2}/[[:digit:]]{1,2}/[[:digit:]]{4}$</code></td>
632               <td>12/12/2001</td>
633               <td><font color="#008000">1.05<BR>
634                     (6.59e-007s)</font></td>
635               <td>1.66<BR>
636                  (1.05e-006s)</td>
637               <td>1.44<BR>
638                  (9.07e-007s)</td>
639               <td>1.23<BR>
640                  (7.73e-007s)</td>
641               <td>11.6<BR>
642                  (7.34e-006s)</td>
643               <td><font color="#008000">1<BR>
644                     (6.3e-007s)</font></td>
645            </tr>
646            <tr>
647               <td><code>^[-+]?[[:digit:]]*\.?[[:digit:]]*$</code></td>
648               <td>123</td>
649               <td><font color="#008000">1<BR>
650                     (5.72e-007s)</font></td>
651               <td>1.59<BR>
652                  (9.07e-007s)</td>
653               <td>1.6<BR>
654                  (9.16e-007s)</td>
655               <td>1.49<BR>
656                  (8.5e-007s)</td>
657               <td>6.14<BR>
658                  (3.51e-006s)</td>
659               <td>1.22<BR>
660                  (6.97e-007s)</td>
661            </tr>
662            <tr>
663               <td><code>^[-+]?[[:digit:]]*\.?[[:digit:]]*$</code></td>
664               <td>+3.14159</td>
665               <td><font color="#008000">1<BR>
666                     (6.78e-007s)</font></td>
667               <td>1.52<BR>
668                  (1.03e-006s)</td>
669               <td>1.47<BR>
670                  (9.94e-007s)</td>
671               <td>1.31<BR>
672                  (8.88e-007s)</td>
673               <td>10.8<BR>
674                  (7.34e-006s)</td>
675               <td><font color="#008000">1.08<BR>
676                     (7.35e-007s)</font></td>
677            </tr>
678            <tr>
679               <td><code>^[-+]?[[:digit:]]*\.?[[:digit:]]*$</code></td>
680               <td>-3.14159</td>
681               <td><font color="#008000">1<BR>
682                     (6.78e-007s)</font></td>
683               <td>1.52<BR>
684                  (1.03e-006s)</td>
685               <td>1.46<BR>
686                  (9.92e-007s)</td>
687               <td>1.32<BR>
688                  (8.98e-007s)</td>
689               <td>10.5<BR>
690                  (7.11e-006s)</td>
691               <td>1.11<BR>
692                  (7.54e-007s)</td>
693            </tr>
694         </table>
695      </P>
696      <hr>
697      <p>Copyright John Maddock April 2003, all rights reserved.</p>
698   </body>
699</html>
Note: See TracBrowser for help on using the repository browser.