This program works for the data set you posted:
[pre]
data _null_;
retain re;
infile datalines;
input Drug_Strength_Name $ 1-9;
if _N_ = 1 then
re = prxparse("/\d+(\.\d+)?MG((\/\dML)| KIT|FLEX)?/i");
call prxsubstr(re,Drug_Strength_Name, start, length);
if start gt 0 then do;
str = substrn(Drug_Strength_Name, start, length);
put str;
end;
datalines;
10MG/2ML
5MG/ML
12MG KIT
0.4MG
24MG KIT
5MG
0.6MG
10MG/2ML
5MGFLEX
10MG
;;;;
[/pre]
Log:
[pre]
704 data _null_;
705 retain re;
706 infile datalines;
707 input Drug_Strength_Name $ 1-9;
708
709 if _N_ = 1 then
710 re = prxparse("/\d+(\.\d+)?MG((\/\dML)| KIT|FLEX)?/i");
711 call prxsubstr(re,Drug_Strength_Name, start, length);
712 if start gt 0 then do;
713 str = substrn(Drug_Strength_Name, start, length);
714 put str;
715 end;
716 datalines;
10MG/2ML
5MG
12MG KIT
0.4MG
24MG KIT
5MG
0.6MG
10MG/2ML
5MGFLEX
10MG
NOTE: DATA statement used (Total process time):
real time 0.01 seconds
cpu time 0.01 seconds
727 ;;;;
[/pre]