Assuming your ability to parse is always like this. here is what I did
1. Manual trigger (just for your test)
2. I created a variable called SampleText and pasted in your stuff
3. Initialize an Array variable i called Lines starting at it being empty
4. Added an Apply to each
split(string(variables('SampleText')), 'US^')
again thats my variable, replace that with your variable/outputs
 
I purposely split by only the Prefix US^ this time so I can loop through each returned row. This is because you have weird other stuff and I don't do regex ;)
5. Add a Condition
This condition is going to check if the current Item() of the apply to each contains ^US in it (which is your ending one) because it tells me I need to grab data from it. If it doesn't that means is the First, or Last lines which you dont want
 
no tricks just item() and then the string '^US'
 
6. Now in the Yes side you can technically just do one action but i always want to teach too so I did a compose and an Append to Array
Split(Replace(trim(item()), decodeUriComponent('%0A'), ''), '^US')[0]
In this one I am doing the following
triming the spaces on the ends for the current item
removing carriage return special characters
then splitting by the End '^US'
 
I do all of this because when splitting either your first row or your last row will be jacked up because both the real first line and last line are NOT the lines you ever want.
 
7. Finally I use append to array, using the Output from Compose Get line details
And when I run it, I have the following array which I show by adding a compose with the variable Lines 
 
And now you can loop through those if you want.
 
If this resolves  your issue I would appreciate if you would mark as Resolved and maybe a like :-)
And it is
 
 
 and the whole thing looks like this