Unlikely this is still a problem given how old it is, but it's listed as unanswered so for the benefit of anyone with a similar problem...
Here's a quick pattern that'll extract all matches into an array - it may or not need to be made more flexible:
<cfset Matches = rematch( '\D+ \d\.\d{3} \d+\.\d{3} \d\d -\d\.\d{3} 0.000' , Input ) />
Then looping through those results, for each match you can separate the name+country from the numbers with:
<cfset NameAndCountry = trim(Left( CurMatch , refind('\d',CurMatch)-1 )) />
<cfset Numbers = Right( CurMatch , Len(CurMatch)-Len(NameAndCountry) ) />
Extracting the countries from the names is not simple - there aren't really any rules for which is which, so it needs a set of countries to loop through and check against, something like:
<cfloop index="CurCountry" array=#Countries# >
<cfif NameAndCountry.endsWith( CurCountry ) >
<cfset Name = Left( NameAndCountry , Len(NameAndCountry)-Len(CurCountry) />
<cfbreak />
</cfif>
</cfloop>
For the numbers, using ListToArray with space as delimiter can separate them.