or.....
=SUBSTITUTE(SUBSTITUTE(A1,"[","",2),"]","",2)
Firstly you need the input to be consistent.
Substitutes new_text for old_text in a text string using the format: SUBSTITUTE(text,old_text,new_text,instance_num)
=SUBSTITUTE(SUBSTITUTE(A1,"[","",2),"]","",2)
SUBSTITUTE(A1,"[","",2) Looks in cell A1 (replace as required) to replace "[" with "", instance_num is set to 2, so only the second instance is changed. So using your example "[Mr] usmc [123]" has become "[Mr] usmc 123]"
we now use this string in the second
=SUBSTITUTE(SUBSTITUTE(A1,"[","",2),"]","",2)
which has effectively become =SUBSTITUTE("[Mr] usmc 123]","]","",2).
This replaces the 2nd instance of "]" with "" leaving the output as "[Mr] usmc 123".
HTH