From b39edff7961761b8d0773707f3afeebeee73d18c Mon Sep 17 00:00:00 2001
From: John Maddock The following tables provide comparisons between the following regular
+ expression libraries: The GNU regular expression library. Philip Hazel's PCRE library. Machine: Intel Pentium 4 2.8GHz PC. Compiler: GNU C++ version 3.2 20020927 (prerelease). C++ Standard Library: GNU libstdc++ version 20020927. OS: Cygwin. Boost version: 1.31.0. PCRE version: 4.1. As ever care should be taken in interpreting the results, only sensible regular
+ expressions (rather than pathological cases) are given, most are taken from the
+ Boost regex examples, or from the Library of
+ Regular Expressions. In addition, some variation in the relative
+ performance of these libraries can be expected on other machines - as memory
+ access and processor caching effects can be quite large for most finite state
+ machine algorithms. In each case the first figure given is the relative time
+ taken (so a value of 1.0 is as good as it gets), while the second figure is the
+ actual time taken. The following are the average relative scores for all the tests: the perfect
+ regular expression library would score 1, in practice anything less than 2
+ is pretty good. For each of the following regular expressions the time taken to find all
+ occurrences of the expression within a long English language text was measured
+ (mtent12.txt
+ from Project Gutenberg, 19Mb). For each of the following regular expressions the time taken to find all
+ occurrences of the expression within a medium sized English language text was
+ measured (the first 50K from mtent12.txt). For each of the following regular expressions the time taken to find all
+ occurrences of the expression within the C++ source file
+ boost/crc.hpp was measured. For each of the following regular expressions the time taken to find all
+ occurrences of the expression within the html file libs/libraries.htm
+ was measured. For each of the following regular expressions the time taken to match against
+ the text indicated was measured. © Copyright John Maddock 2003 Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)
+ The following tables provide comparisons between the following regular
+ expression libraries: Henry Spencer's regular expression library
+ - this is provided for comparison as a typical non-backtracking implementation. Philip Hazel's PCRE library. Machine: Intel Pentium 4 2.8GHz PC. Compiler: Microsoft Visual C++ version 7.1. C++ Standard Library: Dinkumware standard library version 313. OS: Win32. Boost version: 1.31.0. PCRE version: 3.9.
+ As ever care should be taken in interpreting the results, only sensible regular
+ expressions (rather than pathological cases) are given, most are taken from the
+ Boost regex examples, or from the Library of
+ Regular Expressions. In addition, some variation in the relative
+ performance of these libraries can be expected on other machines - as memory
+ access and processor caching effects can be quite large for most finite state
+ machine algorithms. The following are the average relative scores for all the tests: the perfect
+ regular expression library would score 1, in practice any small number
+ (say less that 4 or 5) is pretty good.Regular Expression Performance Comparison
+ Details
+ Averages
+
+
+
+
+ Boost
+ Boost + C++ locale
+ POSIX
+ PCRE
+
+
+ 1.4503
+ 1.49124
+ 108.372
+ 1.56255
+
+
+ Comparison 1: Long Search
+
+
+
+
+ Expression
+ Boost
+ Boost + C++ locale
+ POSIX
+ PCRE
+
+
+
+ Twain
3.49
+
+ (0.205s)4.09
+
+ (0.24s)65.2
+
+ (3.83s)1
+
+ (0.0588s)
+
+
+ Huck[[:alpha:]]+
3.86
+
+ (0.203s)4.52
+
+ (0.238s)100
+
+ (5.26s)1
+
+ (0.0526s)
+
+
+ [[:alpha:]]+ing
1.01
+
+ (1.23s)1
+
+ (1.22s)4.95
+
+ (6.04s)4.67
+
+ (5.71s)
+
+
+ ^[^ ]*?Twain
1
+
+ (0.31s)1.05
+
+ (0.326s)NA
+ 3.32
+
+ (1.03s)
+
+
+ Tom|Sawyer|Huckleberry|Finn
1.02
+
+ (0.125s)1
+
+ (0.123s)165
+
+ (20.3s)1.08
+
+ (0.133s)
+
+
+ (Tom|Sawyer|Huckleberry|Finn).{0,30}river|river.{0,30}(Tom|Sawyer|Huckleberry|Finn)
1
+
+ (0.345s)1.03
+
+ (0.355s)NA
+ 1.71
+
+ (0.59s)
+
+ Comparison 2: Medium Sized Search
+
+
+
+
+ Expression
+ Boost
+ Boost + C++ locale
+ POSIX
+ PCRE
+
+
+
+ Twain
1.8
+
+ (0.000519s)2.14
+
+ (0.000616s)9.08
+
+ (0.00262s)1
+
+ (0.000289s)
+
+
+ Huck[[:alpha:]]+
3.65
+
+ (0.000499s)4.36
+
+ (0.000597s)1
+
+ (0.000137s)1.43
+
+ (0.000196s)
+
+
+ [[:alpha:]]+ing
1
+
+ (0.00258s)1
+
+ (0.00258s)5.28
+
+ (0.0136s)5.63
+
+ (0.0145s)
+
+
+ ^[^ ]*?Twain
1
+
+ (0.000929s)1.03
+
+ (0.000957s)NA
+ 2.82
+
+ (0.00262s)
+
+
+ Tom|Sawyer|Huckleberry|Finn
1
+
+ (0.000812s)1
+
+ (0.000812s)60.1
+
+ (0.0488s)1.28
+
+ (0.00104s)
+
+
+ (Tom|Sawyer|Huckleberry|Finn).{0,30}river|river.{0,30}(Tom|Sawyer|Huckleberry|Finn)
1.02
+
+ (0.00178s)1
+
+ (0.00174s)242
+
+ (0.421s)1.3
+
+ (0.00227s)
+
+ Comparison 3: C++ Code Search
+
+
+
+
+ Expression
+ Boost
+ Boost + C++ locale
+ POSIX
+ PCRE
+
+
+
+ ^(template[[:space:]]*<[^;:{]+>[[:space:]]*)?(class|struct)[[:space:]]*(\<\w+\>([
+ ]*\([^)]*\))?[[:space:]]*)*(\<\w*\>)[[:space:]]*(<[^;:{]+>[[:space:]]*)?(\{|:[^;\{()]*\{)
1.04
+
+ (0.000144s)1
+
+ (0.000139s)862
+
+ (0.12s)4.56
+
+ (0.000636s)
+
+
+ (^[
+ ]*#(?:[^\\\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)\>
1
+
+ (0.0139s)1.01
+
+ (0.0141s)NA
+ 1.55
+
+ (0.0216s)
+
+
+ ^[ ]*#[ ]*include[ ]+("[^"]+"|<[^>]+>)
1.04
+
+ (0.000332s)1
+
+ (0.000318s)130
+
+ (0.0413s)1.72
+
+ (0.000547s)
+
+
+ ^[ ]*#[ ]*include[ ]+("boost/[^"]+"|<boost/[^>]+>)
1.02
+
+ (0.000323s)1
+
+ (0.000318s)150
+
+ (0.0476s)1.72
+
+ (0.000547s)
+
+ Comparison 4: HTML Document Search
+
+
+
+
+
+ Expression
+ Boost
+ Boost + C++ locale
+ POSIX
+ PCRE
+
+
+
+ beman|john|dave
1.03
+
+ (0.000367s)1
+
+ (0.000357s)47.4
+
+ (0.0169s)1.16
+
+ (0.000416s)
+
+
+ <p>.*?</p>
1.25
+
+ (0.000459s)1
+
+ (0.000367s)NA
+ 1.03
+
+ (0.000376s)
+
+
+ <a[^>]+href=("[^"]*"|[^[:space:]]+)[^>]*>
1
+
+ (0.000509s)1.02
+
+ (0.000518s)305
+
+ (0.155s)1.1
+
+ (0.000558s)
+
+
+ <h[12345678][^>]*>.*?</h[12345678]>
1.04
+
+ (0.00025s)1
+
+ (0.00024s)NA
+ 1.16
+
+ (0.000279s)
+
+
+ <img[^>]+src=("[^"]*"|[^[:space:]]+)[^>]*>
2.22
+
+ (0.000489s)1.69
+
+ (0.000372s)148
+
+ (0.0326s)1
+
+ (0.00022s)
+
+
+ <font[^>]+face=("[^"]*"|[^[:space:]]+)[^>]*>.*?</font>
1.71
+
+ (0.000371s)1.75
+
+ (0.000381s)NA
+ 1
+
+ (0.000218s)
+
+ Comparison 3: Simple Matches
+
+
+
+
+ Expression
+ Text
+ Boost
+ Boost + C++ locale
+ POSIX
+ PCRE
+
+
+
+ abc
abc
+ 1.36
+
+ (2.15e-07s)1.36
+
+ (2.15e-07s)2.76
+
+ (4.34e-07s)1
+
+ (1.58e-07s)
+
+
+ ^([0-9]+)(\-| |$)(.*)$
100- this is a line of ftp response which contains a message string
+ 1.55
+
+ (7.26e-07s)1.51
+
+ (7.07e-07s)319
+
+ (0.000149s)1
+
+ (4.67e-07s)
+
+
+ ([[:digit:]]{4}[- ]){3}[[:digit:]]{3,4}
1234-5678-1234-456
+ 1.96
+
+ (9.54e-07s)1.96
+
+ (9.54e-07s)44.5
+
+ (2.17e-05s)1
+
+ (4.87e-07s)
+
+
+ ^([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})(\]?)$
john@johnmaddock.co.uk
+ 1.22
+
+ (1.51e-06s)1.23
+
+ (1.53e-06s)162
+
+ (0.000201s)1
+
+ (1.24e-06s)
+
+
+ ^([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})(\]?)$
foo12@foo.edu
+ 1.28
+
+ (1.47e-06s)1.3
+
+ (1.49e-06s)104
+
+ (0.00012s)1
+
+ (1.15e-06s)
+
+
+ ^([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})(\]?)$
bob.smith@foo.tv
+ 1.28
+
+ (1.47e-06s)1.3
+
+ (1.49e-06s)113
+
+ (0.00013s)1
+
+ (1.15e-06s)
+
+
+ ^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$
EH10 2QQ
+ 1.38
+
+ (4.68e-07s)1.41
+
+ (4.77e-07s)13.5
+
+ (4.59e-06s)1
+
+ (3.39e-07s)
+
+
+ ^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$
G1 1AA
+ 1.28
+
+ (4.35e-07s)1.25
+
+ (4.25e-07s)11.7
+
+ (3.97e-06s)1
+
+ (3.39e-07s)
+
+
+ ^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$
SW1 1ZZ
+ 1.32
+
+ (4.53e-07s)1.31
+
+ (4.49e-07s)12.2
+
+ (4.2e-06s)1
+
+ (3.44e-07s)
+
+
+ ^[[:digit:]]{1,2}/[[:digit:]]{1,2}/[[:digit:]]{4}$
4/1/2001
+ 1.16
+
+ (3.82e-07s)1.2
+
+ (3.96e-07s)13.9
+
+ (4.59e-06s)1
+
+ (3.29e-07s)
+
+
+ ^[[:digit:]]{1,2}/[[:digit:]]{1,2}/[[:digit:]]{4}$
12/12/2001
+ 1.38
+
+ (4.49e-07s)1.38
+
+ (4.49e-07s)16
+
+ (5.2e-06s)1
+
+ (3.25e-07s)
+
+
+ ^[-+]?[[:digit:]]*\.?[[:digit:]]*$
123
+ 1.19
+
+ (7.64e-07s)1.16
+
+ (7.45e-07s)7.51
+
+ (4.81e-06s)1
+
+ (6.4e-07s)
+
+
+ ^[-+]?[[:digit:]]*\.?[[:digit:]]*$
+3.14159
+ 1.32
+
+ (8.97e-07s)1.31
+
+ (8.88e-07s)14
+
+ (9.48e-06s)1
+
+ (6.78e-07s)
+
+
+ ^[-+]?[[:digit:]]*\.?[[:digit:]]*$
-3.14159
+ 1.32
+
+ (8.97e-07s)1.31
+
+ (8.88e-07s)14
+
+ (9.48e-06s)1
+
+ (6.78e-07s)
+
+
+ Regular Expression Performance Comparison
+ Details
+ Averages
+
+
+
+
+ GRETA
+ GRETA
+
+ (non-recursive mode)Boost
+ Boost + C++ locale
+ POSIX
+ PCRE
+
+
+ 2.31619
+ 6.14203
+ 2.30668
+ 1.94363
+ 124.752
+ 2.09365
+
For each of the following regular expressions the time taken to find all + occurrences of the expression within a long English language text was measured + (mtent12.txt + from Project Gutenberg, 19Mb).
+Expression | +GRETA | +GRETA + (non-recursive mode) |
+ Boost | +Boost + C++ locale | +POSIX | +PCRE | +
Twain |
+ 1 + (0.0407s) |
+ 1 + (0.0407s) |
+ 4.18 + (0.17s) |
+ 4.18 + (0.17s) |
+ 135 + (5.48s) |
+ 1.37 + (0.0557s) |
+
Huck[[:alpha:]]+ |
+ 1.02 + (0.0381s) |
+ 1 + (0.0375s) |
+ 4.53 + (0.17s) |
+ 4.54 + (0.17s) |
+ 166 + (6.23s) |
+ 1.34 + (0.0501s) |
+
[[:alpha:]]+ing |
+ 4.3 + (4.18s) |
+ 9.93 + (9.65s) |
+ 1.15 + (1.12s) |
+ 1 + (0.972s) |
+ 8.15 + (7.92s) |
+ 5.85 + (5.69s) |
+
^[^ ]*?Twain |
+ 6.25 + (1.84s) |
+ 20.9 + (6.16s) |
+ 1.56 + (0.461s) |
+ 1 + (0.295s) |
+ NA | +2.58 + (0.761s) |
+
Tom|Sawyer|Huckleberry|Finn |
+ 6.53 + (0.711s) |
+ 11.5 + (1.25s) |
+ 2.3 + (0.251s) |
+ 1 + (0.109s) |
+ 196 + (21.4s) |
+ 1.77 + (0.193s) |
+
(Tom|Sawyer|Huckleberry|Finn).{0,30}river|river.{0,30}(Tom|Sawyer|Huckleberry|Finn) |
+ 3.88 + (0.972s) |
+ 6.48 + (1.62s) |
+ 1.66 + (0.416s) |
+ 1 + (0.251s) |
+ NA | +2.48 + (0.62s) |
+
For each of the following regular expressions the time taken to find all + occurrences of the expression within a medium sized English language text was + measured (the first 50K from mtent12.txt).
+Expression | +GRETA | +GRETA + (non-recursive mode) |
+ Boost | +Boost + C++ locale | +POSIX | +PCRE | +
Twain |
+ 1 + (9.05e-005s) |
+ 1.03 + (9.29e-005s) |
+ 4.92 + (0.000445s) |
+ 4.92 + (0.000445s) |
+ 43.2 + (0.00391s) |
+ 3.18 + (0.000288s) |
+
Huck[[:alpha:]]+ |
+ 1 + (8.56e-005s) |
+ 1 + (8.56e-005s) |
+ 4.97 + (0.000425s) |
+ 4.98 + (0.000426s) |
+ 2.8 + (0.000239s) |
+ 2.2 + (0.000188s) |
+
[[:alpha:]]+ing |
+ 5.29 + (0.011s) |
+ 11.8 + (0.0244s) |
+ 1.19 + (0.00246s) |
+ 1 + (0.00207s) |
+ 8.77 + (0.0182s) |
+ 6.88 + (0.0142s) |
+
^[^ ]*?Twain |
+ 5.98 + (0.00462s) |
+ 20.2 + (0.0156s) |
+ 1.54 + (0.00119s) |
+ 1 + (0.000772s) |
+ NA | +2.53 + (0.00195s) |
+
Tom|Sawyer|Huckleberry|Finn |
+ 3.42 + (0.00207s) |
+ 6.31 + (0.00383s) |
+ 1.71 + (0.00104s) |
+ 1 + (0.000606s) |
+ 81.5 + (0.0494s) |
+ 1.96 + (0.00119s) |
+
(Tom|Sawyer|Huckleberry|Finn).{0,30}river|river.{0,30}(Tom|Sawyer|Huckleberry|Finn) |
+ 1.97 + (0.00266s) |
+ 3.77 + (0.00509s) |
+ 1.38 + (0.00186s) |
+ 1 + (0.00135s) |
+ 297 + (0.401s) |
+ 1.77 + (0.00238s) |
+
For each of the following regular expressions the time taken to find all + occurrences of the expression within the C++ source file + boost/crc.hpp was measured.
+Expression | +GRETA | +GRETA + (non-recursive mode) |
+ Boost | +Boost + C++ locale | +POSIX | +PCRE | +
^(template[[:space:]]*<[^;:{]+>[[:space:]]*)?(class|struct)[[:space:]]*(\<\w+\>([
+ ]*\([^)]*\))?[[:space:]]*)*(\<\w*\>)[[:space:]]*(<[^;:{]+>[[:space:]]*)?(\{|:[^;\{()]*\{) |
+ 6.67 + (0.00147s) |
+ 36.9 + (0.00813s) |
+ 1.03 + (0.000227s) |
+ 1 + (0.00022s) |
+ 557 + (0.123s) |
+ 2.57 + (0.000566s) |
+
(^[
+ ]*#(?:[^\\\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)\> |
+ 1 + (0.00555s) |
+ 3.32 + (0.0185s) |
+ 2.53 + (0.0141s) |
+ 1.94 + (0.0108s) |
+ NA | +3.38 + (0.0188s) |
+
^[ ]*#[ ]*include[ ]+("[^"]+"|<[^>]+>) |
+ 4.77 + (0.00156s) |
+ 24.8 + (0.00814s) |
+ 1.13 + (0.000372s) |
+ 1 + (0.000328s) |
+ 120 + (0.0394s) |
+ 1.58 + (0.000518s) |
+
^[ ]*#[ ]*include[ ]+("boost/[^"]+"|<boost/[^>]+>) |
+ 4.72 + (0.00154s) |
+ 24.8 + (0.00813s) |
+ 1.12 + (0.000367s) |
+ 1 + (0.000328s) |
+ 143 + (0.0469s) |
+ 1.58 + (0.000518s) |
+
For each of the following regular expressions the time taken to find all + occurrences of the expression within the html file libs/libraries.htm + was measured.
+Expression | +GRETA | +GRETA + (non-recursive mode) |
+ Boost | +Boost + C++ locale | +POSIX | +PCRE | +
beman|john|dave |
+ 4.07 + (0.00111s) |
+ 7.14 + (0.00195s) |
+ 1.75 + (0.000479s) |
+ 1 + (0.000273s) |
+ 54.3 + (0.0149s) |
+ 1.83 + (0.000499s) |
+
<p>.*?</p> |
+ 1 + (6.59e-005s) |
+ 1.04 + (6.84e-005s) |
+ 4.15 + (0.000273s) |
+ 4.23 + (0.000279s) |
+ NA | +4.23 + (0.000279s) |
+
<a[^>]+href=("[^"]*"|[^[:space:]]+)[^>]*> |
+ 1.39 + (0.000626s) |
+ 1.83 + (0.000821s) |
+ 1.41 + (0.000636s) |
+ 1 + (0.00045s) |
+ 351 + (0.158s) |
+ 1.13 + (0.000509s) |
+
<h[12345678][^>]*>.*?</h[12345678]> |
+ 1 + (0.000142s) |
+ 1.21 + (0.000171s) |
+ 2.62 + (0.000372s) |
+ 1.48 + (0.00021s) |
+ NA | +1.73 + (0.000245s) |
+
<img[^>]+src=("[^"]*"|[^[:space:]]+)[^>]*> |
+ 1 + (5.38e-005s) |
+ 1.05 + (5.63e-005s) |
+ 5 + (0.000269s) |
+ 5.18 + (0.000278s) |
+ 604 + (0.0325s) |
+ 4.05 + (0.000218s) |
+
<font[^>]+face=("[^"]*"|[^[:space:]]+)[^>]*>.*?</font> |
+ 1 + (6.05e-005s) |
+ 1.09 + (6.59e-005s) |
+ 4.45 + (0.000269s) |
+ 4.69 + (0.000284s) |
+ NA | +3.64 + (0.00022s) |
+
+ For each of the following regular expressions the time taken to match against + the text indicated was measured.
+Expression | +Text | +GRETA | +GRETA + (non-recursive mode) |
+ Boost | +Boost + C++ locale | +POSIX | +PCRE | +
abc |
+ abc | +1.32 + (2.24e-007s) |
+ 1.86 + (3.15e-007s) |
+ 1.25 + (2.12e-007s) |
+ 1.24 + (2.1e-007s) |
+ 2.98 + (5.05e-007s) |
+ 1 + (1.7e-007s) |
+
^([0-9]+)(\-| |$)(.*)$ |
+ 100- this is a line of ftp response which contains a message string | +1.32 + (5.91e-007s) |
+ 1.96 + (8.78e-007s) |
+ 2.68 + (1.2e-006s) |
+ 1.53 + (6.88e-007s) |
+ 332 + (0.000149s) |
+ 1 + (4.49e-007s) |
+
([[:digit:]]{4}[- ]){3}[[:digit:]]{3,4} |
+ 1234-5678-1234-456 | +1.44 + (7.16e-007s) |
+ 2.04 + (1.01e-006s) |
+ 3.35 + (1.66e-006s) |
+ 2.15 + (1.07e-006s) |
+ 31.4 + (1.56e-005s) |
+ 1 + (4.96e-007s) |
+
^([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})(\]?)$ |
+ john@johnmaddock.co.uk | +1 + (1.18e-006s) |
+ 1.42 + (1.68e-006s) |
+ 2.06 + (2.44e-006s) |
+ 1.35 + (1.6e-006s) |
+ 165 + (0.000196s) |
+ 1.06 + (1.26e-006s) |
+
^([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})(\]?)$ |
+ foo12@foo.edu | +1 + (1.09e-006s) |
+ 1.44 + (1.57e-006s) |
+ 2.21 + (2.4e-006s) |
+ 1.41 + (1.53e-006s) |
+ 108 + (0.000117s) |
+ 1.04 + (1.13e-006s) |
+
^([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})(\]?)$ |
+ bob.smith@foo.tv | +1 + (1.07e-006s) |
+ 1.43 + (1.53e-006s) |
+ 2.21 + (2.37e-006s) |
+ 1.45 + (1.55e-006s) |
+ 123 + (0.000132s) |
+ 1.05 + (1.13e-006s) |
+
^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$ |
+ EH10 2QQ | +1 + (3.19e-007s) |
+ 1.67 + (5.34e-007s) |
+ 1.58 + (5.05e-007s) |
+ 1.4 + (4.49e-007s) |
+ 10.4 + (3.32e-006s) |
+ 1.15 + (3.68e-007s) |
+
^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$ |
+ G1 1AA | +1 + (3.29e-007s) |
+ 1.65 + (5.44e-007s) |
+ 1.51 + (4.96e-007s) |
+ 1.36 + (4.49e-007s) |
+ 8.46 + (2.79e-006s) |
+ 1.1 + (3.63e-007s) |
+
^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$ |
+ SW1 1ZZ | +1 + (3.25e-007s) |
+ 1.64 + (5.34e-007s) |
+ 1.56 + (5.05e-007s) |
+ 1.38 + (4.49e-007s) |
+ 9.29 + (3.02e-006s) |
+ 1.13 + (3.68e-007s) |
+
^[[:digit:]]{1,2}/[[:digit:]]{1,2}/[[:digit:]]{4}$ |
+ 4/1/2001 | +1 + (3.44e-007s) |
+ 1.55 + (5.34e-007s) |
+ 2.36 + (8.12e-007s) |
+ 2.2 + (7.55e-007s) |
+ 19.6 + (6.72e-006s) |
+ 1.81 + (6.21e-007s) |
+
^[[:digit:]]{1,2}/[[:digit:]]{1,2}/[[:digit:]]{4}$ |
+ 12/12/2001 | +1.05 + (6.59e-007s) |
+ 1.66 + (1.05e-006s) |
+ 1.44 + (9.07e-007s) |
+ 1.23 + (7.73e-007s) |
+ 11.6 + (7.34e-006s) |
+ 1 + (6.3e-007s) |
+
^[-+]?[[:digit:]]*\.?[[:digit:]]*$ |
+ 123 | +1 + (5.72e-007s) |
+ 1.59 + (9.07e-007s) |
+ 1.6 + (9.16e-007s) |
+ 1.49 + (8.5e-007s) |
+ 6.14 + (3.51e-006s) |
+ 1.22 + (6.97e-007s) |
+
^[-+]?[[:digit:]]*\.?[[:digit:]]*$ |
+ +3.14159 | +1 + (6.78e-007s) |
+ 1.52 + (1.03e-006s) |
+ 1.47 + (9.94e-007s) |
+ 1.31 + (8.88e-007s) |
+ 10.8 + (7.34e-006s) |
+ 1.08 + (7.35e-007s) |
+
^[-+]?[[:digit:]]*\.?[[:digit:]]*$ |
+ -3.14159 | +1 + (6.78e-007s) |
+ 1.52 + (1.03e-006s) |
+ 1.46 + (9.92e-007s) |
+ 1.32 + (8.98e-007s) |
+ 10.5 + (7.11e-006s) |
+ 1.11 + (7.54e-007s) |
+
© Copyright John Maddock 2003
+Use, modification and distribution are subject to the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://www.boost.org/LICENSE_1_0.txt)
+ + +