Python-get string entre caracteres

Necesito uno para darme la cuerda entre~ y^.
Tengo una cadena como esta:

~~~~ ABC ^ DEF ^ HGK > LMN ^  

Necesito obtener la cadena entre ellos con python.
He intentado esto:

import re
target = ' ~~~~ ABC ^ DEF ^ HGK > LMN ^  '
matchObj = re.findall(r'~(.*?)\^', target)
print matchObj 

Pero el resultado es:

['~~~ ABC ']

Lo que espero es:

[ABC , DEF , HGK , LMN ]

o

[^ABC , ^DEF , ^HGK , LMN ]

Respuestas a la pregunta(4)

Su respuesta a la pregunta