is it the same length every time ?

I'm sure i'm definately not the best, but this is how i'd do it.
create a var1 which stores "31..02+00000" (which you said always stays the same).



SERIN2 GPS_TXA, GBAUD, [skip 12,str var2\3] 'assuming the '685' field is 3

or maybe this:
SERIN2 GPS_TXA, GBAUD, [wait("00000"),str var2\3]
'assuming theres always 5 zeros before the '685' string


then output both variables (var1 & var2) as you see fit. as you can probably tell by my baud rates and pin definitions, i use similar stuff to parse gps.