Маловероятно, что это все еще проблема, учитывая, сколько ему лет, но она указана как неотвеченная, поэтому в интересах тех, у кого похожая проблема ...
Вот быстрый шаблон, который извлечет все совпадения вмассив - может быть или нет необходимость сделать его более гибким:
<cfset Matches = rematch( '\D+ \d\.\d{3} \d+\.\d{3} \d\d -\d\.\d{3} 0.000' , Input ) />
Затем циклически просматривая эти результаты, для каждого матча вы можете отделить имя + страну от чисел с помощью:
<cfset NameAndCountry = trim(Left( CurMatch , refind('\d',CurMatch)-1 )) />
<cfset Numbers = Right( CurMatch , Len(CurMatch)-Len(NameAndCountry) ) />
Извлечь страны из названий непросто - на самом деле не существует каких-либо правил, для которых есть какой-то набор, поэтому требуется набор стран для проверки и проверки, что-то вроде:
<cfloop index="CurCountry" array=#Countries# >
<cfif NameAndCountry.endsWith( CurCountry ) >
<cfset Name = Left( NameAndCountry , Len(NameAndCountry)-Len(CurCountry) />
<cfbreak />
</cfif>
</cfloop>
Для чисел, используя ListToArray с пробелом в качестве разделителя, можно разделить их.