Как вырезать части с помощью regexp разобрался, cпасибо LSD. А вот как сопоставить значение вырезанных кусков, по словарю?? или xml?? или есть более удобный способ ?
Например имеем вырезку из строки "INFO = 50 HEROPAGRT AUUTO RC" получаем только цифру "50", а как сделать чтобы если там "50" то "System bus", если "130" то "Error clk" ???
вот код:
| Код | String input = "!!! /06-07-16/21-18-41 RO JT8U+60 BC:B 304\n" + "INFO = 50 HEROPAGRT AUUTO RC\n" + "INFO = 130 HEROPAGRT AUUTO RC\n" + "!! /06-07-16/21-18-41 RO JT8U+60 BC:B 304\n" + "INFO = 00000001 + 00000001 + 00002000\n" + "INFO = 23 HEROPAGRT AUUTO RC\n" + "INFO = 83 HEROPAGRT AUUTO RC\n" + "! /06-07-16/21-18-41 RO JT8U+60 BC:B 304\n" + "INFO = 00000001 + 00000001 + 00002000\n"; Pattern str1Pattern = Pattern.compile("^!{1,3}\\s*(/\\d{2}-\\d{2}-\\d{2}/\\d{2}-\\d{2}-\\d{2}).*$"); Pattern str2Pattern = Pattern.compile("^\\s*INFO\\s*=\\s*(\\d+).*$");
BufferedReader source = new BufferedReader(new StringReader(input)); try { String str; while((str = source.readLine()) != null) { System.out.println("Processing string: " + str);
Matcher str1Matcher = str1Pattern.matcher(str); if(str1Matcher.matches()) { System.out.println(str1Matcher.group(1)); } else { Matcher str2Matcher = str2Pattern.matcher(str); if(str2Matcher.matches()) System.out.println(str2Matcher.group(1)); } } } catch(Exception ex) { ex.printStackTrace(); }
|
|