EDI 文件的正则表达式
Regular Expression for EDI file
我想在具有以下格式的 edi 文件中获取一个值
\nRJCK3:0*20180105*U*127.35
\nRJCK3:0*20180105*B*127.35
我想要第一种情况下的值 U,它位于 RJC*K3
之后的第 2 和第 3 颗星之间,并且想要第二个字符串中的 B
准确地说,想要从字符串中获取单个字符,该字符将位于 RJC*K3
(静态值)的第 2 和第 3 星(*
)之间。
您可以使用经典的 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
不用和edi文件打架,你可以使用可用的库。
请看https://github.com/imsweb/x12-parser/
RJCloop.getSegment("RJC").getElementValue("RJC02")
可以为您提供所需的价值。
我想在具有以下格式的 edi 文件中获取一个值
\nRJCK3:0*20180105*U*127.35
\nRJCK3:0*20180105*B*127.35
我想要第一种情况下的值 U,它位于 RJC*K3
之后的第 2 和第 3 颗星之间,并且想要第二个字符串中的 B
准确地说,想要从字符串中获取单个字符,该字符将位于 RJC*K3
(静态值)的第 2 和第 3 星(*
)之间。
您可以使用经典的 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
不用和edi文件打架,你可以使用可用的库。
请看https://github.com/imsweb/x12-parser/
RJCloop.getSegment("RJC").getElementValue("RJC02")
可以为您提供所需的价值。