This can't really work 100% without exhaustively giving every string accepted by the regex, or giving every string not accepted by the regex. Regular expressions are essentially a shorthand for doing that.
Since it's impossible to do accurately, it has to use some "common sense" via genetic programming or whatever. In your example, it probably sees that people rarely want [1-8]{1,3}, but that it's a subset of \d+ and goes with that instead.
I tried your dataset (exported in JSON): http://pastebin.com/7XU2UfEd
The result is: \d
Some negative examples can help (it is designed to perform a text extraction)
the system tries to generalize, so probably it choose something like \d+ (it is shorter)
Re:Generate Regex from Examples
by nothrabannosir on Saturday July 25, 2015 @11:44AM
(#9947872)
Depending on unicode settings, \d != [0-9]. See:
However, it could also have come up with the rule ([0-8]*).
So how does it know which one to choose? Can one also submit counter-examples?