Prevent multiple coverpoints for string coverage

covergroup cg;
  red: coverpoint s=="red" {
    bins match ={1};
  }
 green: coverpoint s=="green" {
    bins match ={1};
  }
 blue: coverpoint s=="blue" {
    bins match ={1};
  }
endgroup

Question: How can one avoid writing multiple coverpoints? Rather than writing per coverpoint per string, Is it possible to write one coverpoint and multiple bins (on multiple strings)?

In reply to tech_savvy:

covergroup ugly;
  cp: coverpoint s=="red" ? 1 : s=="green" ? 2 : s=="blue" ?  3 : 0 {
    bins match[] ={1,2,3};
  }
endgroup

In reply to dave_59:
But what about if I have 100 strings to cover, your this approach will be cumbersome @dave_59.

In reply to tech_savvy:


   string s;
   int color_arr[string];
   string all_color[] = {"red","green","yellow"};

   //.............

   covergroup cg ;
       cp : coverpoint (color_arr.exists(s) ? color_arr[s] : 0) {
      			bins match[3] = {[1:3]};
  		        }    
   endgroup
  
   //.................

   initial begin
       //store all the possible color inside the associative array 
       foreach(all_color[i])
           color_arr[all_color[i]] = i+1;
   end