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 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). </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). </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: C++ Code 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> was measured. </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:]]*<[^;:{]+>[[:space:]]*)?(class|struct)[[:space:]]*(\<\w+\>([ |
---|
287 | ]*\([^)]*\))?[[:space:]]*)*(\<\w*\>)[[:space:]]*(<[^;:{]+>[[: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]*|/\*.*?\*/)|\<([+-]?(?:(?:0x[[:xdigit:]]+)|(?:(?:[[:digit:]]*\.)?[[:digit:]]+(?:[eE][+-]?[[:digit:]]+)?))u?(?:(?:int(?:8|16|32|64))|L)?)\>|('(?:[^\\']|\\.)*'|"(?:[^\\"]|\\.)*")|\<(__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)\></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[ ]+("[^"]+"|<[^>]+>)</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/[^"]+"|<boost/[^>]+>)</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. </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><p>.*?</p></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><a[^>]+href=("[^"]*"|[^[:space:]]+)[^>]*></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><h[12345678][^>]*>.*?</h[12345678]></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><img[^>]+src=("[^"]*"|[^[:space:]]+)[^>]*></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><font[^>]+face=("[^"]*"|[^[:space:]]+)[^>]*>.*?</font></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. </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> |
---|