There are several ways you could do this.
Regular Expressions are one way, but I think it might be a bit too complex for this scenario.
You could use "brute force" parsing ... i.e. read the string one character at a time, ignoring ^ and anything immediately afterwards, building up another string until you hit another ^. But that is very clunky.
Or you could use the built-in VB.NET method
Split()[
^]
Something similar to this would work:
Dim sample As String = "^^^X^A12505361170^B1255907002^C1ABCD^D12555^E12014/10/10 23:10:02^^^_X"
Dim splitSample As String() = Split(sample, "^", -1, StringSplitOptions.RemoveEmptyEntries)
For Each token As String In splitSample
If token.Length > 1 Then
Debug.Print(token.Substring(2))
End If
Next