import java.util.regex.Matcher;
import java.util.regex.Pattern;

class Test{

    public static void main(String[] args){
        String s ="randomtext 1150,25 USD randomtext\n" +
                "randomtext USD 1150,25 randomtext\n" +
                "randomtext USD1150,25 randomtext";
        Matcher matcher = Pattern.compile("(?<!\\d|\\d,)(?=(?:[\\d,]+\\s)*(PLN|EUR|USD|CHF|GBP)(?:\\s*[\\d,]+\\s)*)(?=((?:PLN|EUR|USD|CHF|GBP)*\\s*(\\d+)(,?\\s?|.)(\\d{1,2})\\s?(?:PLN|EUR|USD|CHF|GBP)*))[\\d\\s,PLNEURUSDCHFGB]+(?=\\b\\s)").matcher(s);
        while(matcher.find()) {
            for(int i = 0; i < matcher.groupCount(); i++){
                System.out.println(matcher.group(i));
            }
            System.out.println();
        }
    }
}