1. In Vim, greedy matching is used by default. In order to use non-greedy matching, you can use \{-}, or \{-n,m}, such as: :/Q.\{-0,200}[IL].\{-0,2000}FF.
  2. In Perl, default matching is also greedy. To use non-greedy matching, please change * , + , ? , and{} into *? , +? , ?? , and {}? , respectively.
  3. To count the number of matching in Vim, you can use command ":%s/<pattern>//g". After get the number of matches, then execute ":u" to undo the changes.
  4. In Perl, to count the number of matching, you can use command: 
    my $number =()= $string =~ /\./gi;

References:

  1. http://vimregex.com/
  2. http://stackoverflow.com/questions/1849329/is-there-a-perl-shortcut-to-count-the-number-of-matches-in-a-string
  3. http://docstore.mik.ua/orelly/perl/cookbook/ch06_16.htm