With your shown samples, could you please try following.
tdf[["val", "Adm"]] = tdf["text_1"].str.extract(r'^value:\s?(\S+(?:\s[^-]+)?)(?:\s-\s.*?-([^-]*)(?:-.*)?)?$', expand=True)
tdf
Online demo for above regex
Output will be as follows.
text_1 val Adm
0 value: 1.25MG - OM - PO/TUBE - ashaf 1.25MG PO/TUBE
1 value:2.5 MG - OM - PO/TUBE -test 2.5 MG PO/TUBE
2 value: 18 UNITS(S) 18 UNITS(S) NaN
3 value: 850 MG - TDS AFTER FOOD - SC (SUBCUTANEOUS) -had 850 MG SC (SUBCUTANEOUS)
4 value: 75 MG - OM - PO/TUBE 75 MG PO/TUBE
Explanation: Adding detailed explanation for above.
^value:\s? ##Checking if value starts from value: space is optional here.
(\S+ ##Starting 1st capturing group from here and matching all non space here.
(?:\s[^-]+)? ##In a non-capturing group matching space till - comes keeping it optional.
) ##Closing 1st capturing group here.
(?:\s-\s.*?- ##In a non-capturing group matching space-space till - first occurrence.
([^-]*) ##Creating 2nd capturing group which has values till next - here.
(?:-.*)? ##In a non capturing group from - till end of value keeping it optional.
)?$ ##Closing non-capturing group at the end of the value here.