import java.util.regex.Matcher ;
import java.util.regex.Pattern ;
import java.util.* ;
public class Main
{
static void processString
( String line
) {
Pattern p = Pattern.compile ( "(1|2|3|4)" ) ; // 5 Вариантов паттернов для теста
Matcher m = p.matcher ( line) ; // Естественно в реальной задаче намного больше
int i = 0 ;
while ( m.find ( ) ) {
if ( map.containsKey ( group) ) {
replacement = map.get ( group) ;
} else {
i++;
replacement = "AAA" + i;
map.put ( group, replacement) ;
}
System .
out .
println ( "Нужно заменить " + group
+ " на " + replacement
) ; m.appendReplacement ( sb, replacement) ;
}
m.appendTail ( sb) ;
System .
out .
println ( "\n \n " + sb
) ; }
public static void main
( String [ ] args
) {
processString( " 1 2 3 4 4 2 1% 1% 1 2 3 " ) ;
}
}
aW1wb3J0IGphdmEudXRpbC5yZWdleC5NYXRjaGVyOwppbXBvcnQgamF2YS51dGlsLnJlZ2V4LlBhdHRlcm47CmltcG9ydCBqYXZhLnV0aWwuKjsKCnB1YmxpYyBjbGFzcyBNYWluCnsKICAgc3RhdGljIHZvaWQgcHJvY2Vzc1N0cmluZyhTdHJpbmcgbGluZSkKICAgewogICAgICBQYXR0ZXJuIHAgPSBQYXR0ZXJuLmNvbXBpbGUoIigxfDJ8M3w0KSIpOyAvLyA1INCS0LDRgNC40LDQvdGC0L7QsiDQv9Cw0YLRgtC10YDQvdC+0LIg0LTQu9GPINGC0LXRgdGC0LAKICAgICAgTWF0Y2hlciBtID0gcC5tYXRjaGVyKGxpbmUpOyAgICAgICAgICAvLyDQldGB0YLQtdGB0YLQstC10L3QvdC+INCyINGA0LXQsNC70YzQvdC+0Lkg0LfQsNC00LDRh9C1INC90LDQvNC90L7Qs9C+INCx0L7Qu9GM0YjQtQogICAgICAKICAgICAgaW50IGkgPSAwOwogICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtYXAgPSBuZXcgSGFzaE1hcDxTdHJpbmcsU3RyaW5nPigpOwogICAgICBTdHJpbmdCdWZmZXIgc2IgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CiAgICAgIHdoaWxlIChtLmZpbmQoKSkgewogICAgICAJU3RyaW5nIGdyb3VwID0gbS5ncm91cCgpOwogICAgICAJU3RyaW5nIHJlcGxhY2VtZW50OwogICAgICAJaWYobWFwLmNvbnRhaW5zS2V5KGdyb3VwKSkgewogICAgICAJICAgcmVwbGFjZW1lbnQgPSBtYXAuZ2V0KGdyb3VwKTsKICAgICAgCX0gZWxzZSB7CiAgICAgIAkgICBpKys7CiAgICAgIAkgICByZXBsYWNlbWVudCA9ICJBQUEiK2k7CiAgICAgIAkgICBtYXAucHV0KGdyb3VwLCByZXBsYWNlbWVudCk7CiAgICAgIAl9CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigi0J3Rg9C20L3QviDQt9Cw0LzQtdC90LjRgtGMICIgKyBncm91cCsgIiDQvdCwICIgKyByZXBsYWNlbWVudCk7CQogICAgICAJbS5hcHBlbmRSZXBsYWNlbWVudChzYiwgcmVwbGFjZW1lbnQpOwogICAgICAgIAogICAgICB9CiAgICAgIG0uYXBwZW5kVGFpbChzYik7CiAgICAgIAogICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlxuXG4iICsgc2IpOwogICB9CiAgIAogICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKQogICB7CiAgICAgIHByb2Nlc3NTdHJpbmcoIiAxICAyICAzICA0ICA0ICAyICAxJSAgMSUgIDEgIDIgIDMgIik7CiAgIH0KfQ==