EDI文件的正则表达式

时间:2018-01-05 10:27:11

标签: java regex edi

我想在格式低于

的edi文件中获取值
\nRJCK3:0*20180105*U*127.35
\nRJCK3:0*20180105*B*127.35 

我想在第一种情况下使用值 U ,它介于第二和第二种情况之间。 RJC*K3之后的第3颗星,并希望第二根字符串中的B

准确地说,想要从字符串中获取单个字符,其中该字符将位于第2个和第2个字符之间。 *(静态值)的第三颗星(RJC*K3)。

2 个答案:

答案 0 :(得分:1)

您可以使用经典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

但是如果在你想要的字母之前总是有相同数量的*,那么你很容易分开并占据第三部分:

String str2 = "\\nRJC*K3:0*20180105*G*127.35";
String res2 = str2.split("\\*")[3];
System.out.println(res2);        // G

答案 1 :(得分:0)

无需使用edi文件,您可以使用可用的库。

请查看https://github.com/imsweb/x12-parser/

RJCloop.getSegment("RJC").getElementValue("RJC02")

可以为您提供所需的价值。