http://qs1969.pair.com?node_id=197158


in reply to Regex refresher

I believe you should put a ^ and $ to start and end the regex, which otherwise matches everything.
Since the search space is pretty small, one can answer the shortest ten question with a brute force search, observing that only binary strings match:
#!/usr/bin/perl -w use strict; my @strings = (''); for my $a (1..10) { for my $b (0..(2**$a-1)) { push @strings, sprintf ("%0".$a."b", $b); } } print "->", join("<-\n->", grep /^(0|1(01*0)*1)*$/, @strings);
That spits out
-><-
->0<-
->00<-
->11<-
->000<-
->011<-
->110<-
->0000<-
->0011<-
->0110<-
->1001<-
->1100<-
->1111<-
->00000<-
->00011<-
->00110<-
->01001<-
->01100<-
...


Best regards

Antonio Bellezza