Firstly, stop using regexes - they are a sledghammer to crack a very simple nut.
For example, this:
if ((Regex.IsMatch(str.Substring(0, 1), @"J")) || (Regex.IsMatch(str.Substring(0, 1), @"C")))
Can be rewritten as this:
if (str[0] == 'J' || str[0] == 'C')
which is a heck of a lot easier to read!
Secondly, splitting your data is probably not what you want to do: since it is organised in strict columns, I would manuaglly extract the header line, then use substring to extract the data elements: the fact that some elements have only 3 sets of numbers is important, becasue teh column in which the number occurs tells you which part of the data it is: in teh case of your "C" line, the numbers are the AU, SA, and BSS values, not the AC, AU and SA values you would have to assume from the data if you do a crude split operation as you are doing at present.
Use string.SubString in combination with string.Trim to break up your line, then use int.TryParse to give you actual values instead of assuming character values.