Регулярное выражение для файла 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")

может получить вам необходимое значение.

Другие вопросы по тегам