Регулярное выражение для файла EDI
Я хочу получить значение в EDI-файл, имеющий формат ниже
\nRJCK3:0*20180105*U*127.35
\nRJCK3:0*20180105*B*127.35
Я хочу, чтобы значение U в первом случае находилось между 2-й и 3-й звездой после RJC*K3
и хотите B во второй строке
Точно, хотите получить один символ из строки, где этот символ будет находиться между 2-й и 3-й звездой (*
) из RJC*K3
(статическое значение).
2 ответа
Решение
Вы можете использовать классический Pattern matching
путь:
String str1 = "\\nRJC*K3:0*20180105*U*127.35";
Matcher m = Pattern.compile("RJC\\*K3.*\\*(\\w)\\*.*").matcher(str1);
String res1 = m.find() ? m.group(1) : "";
System.out.println(res1); // U
Но если всегда есть одинаковое количество *
перед тем письмом, которое вы хотите, вы легко можете разбить и взять 3-ю часть:
String str2 = "\\nRJC*K3:0*20180105*G*127.35";
String res2 = str2.split("\\*")[3];
System.out.println(res2); // G
Не нужно бороться с файлами edi, вы можете использовать доступные библиотеки.
Пожалуйста, посмотрите на https://github.com/imsweb/x12-parser/
RJCloop.getSegment("RJC").getElementValue("RJC02")
может получить вам необходимое значение.