Tests a bunch of regexes against some input lines. This specifically doesn't try to find all occurrences of a pattern, but tries to match the whole string against the pattern, as we try to emulate validation.
To run, clone this repo and run make
.
First run might take a while since cargo
tries to download its index, but subsequent should be faster.
Example results from my machine: (Intel(R) Xeon(R) CPU E5-2650 v3 @ 2.30GHz)
cpp_hyperscan rust python regex
0 296.642459 313.477929 5468.16452 ^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}$
1 333.053143 303.561480 3440.85922 ^((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])[.]){3}([0-9]|[1-9][0-9...
2 255.655666 276.322356 2695.76003 ^(((:|[0-9A-Fa-f]{0,4}):)([0-9A-Fa-f]{0,4}:){0,5}((([0-9A-Fa-f]{0,4}:)?(:|[0...
3 431.463312 516.112037 7484.01809 (([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)...
4 415.915523 220.289527 9450.14273 ((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*([a-zA-Z0-9_]([a-zA-Z0...
5 225.102598 594.831152 2601.78721 (([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1...
6 395.676644 515.071103 2652.32615 ((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9...
7 439.094160 511.437599 7489.82166 (([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)...
8 313.659211 186.651890 2089.99427 \*
9 198.908448 512.458027 2206.40600 \d{4}-\d{2}-\d{2}
10 137.704878 166.940905 2111.79947 infinity
11 286.654086 213.551516 2188.17237 unused
12 261.699810 204.583877 2190.70109 blocked
13 365.317192 872.037533 2869.23314 (6553[0-4]|655[0-2][0-9]|65[0-4][0-9]{2}|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][...
14 225.464139 560.070383 2615.23396 (([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1...
15 363.644474 1018.489042 3441.97384 (429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}|429496[0-6][0-9]{3}|...
16 346.073838 1018.331178 3439.00782 (429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}|429496[0-6][0-9]{3}|...
17 348.014329 1029.299411 3460.79009 (429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}|429496[0-6][0-9]{3}|...
18 356.043361 566.111958 3152.97860 (([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1...