一个sample EDIFACT message看起来像这样:
UNB+AHBI:1+.? '
UNB+IATB:1+6XPPC:ZZ+LHPPC:ZZ+940101:0950+1'
UNH+1+PAORES:93:1:IA'
MSG+1:45'
IFT+3+XYZCOMPANY AVAILABILITY'
ERC+A7V:1:AMD'
IFT+3+NO MORE FLIGHTS'
ODI'
TVL+240493:1000::1220+FRA+JFK+DL+400+C'
PDI++C:3+Y::3+F::1'
!ERC+21198:EC'
APD+74C:0:::6++++++6X'
TVL+240493:1740::2030+JFK+MIA+DL+081+C'
PDI++C:4'
APD+EM2:0:1630::6+++++++DA'
UNT+13+1'
UNZ+1+1'
我需要创建一个正则表达式,从字符串中删除这种类型的EDIFACT消息。它不应该从字符串中丢失任何额外的文本,因为它可能包含一些重要的信息。例如,edifact可以嵌入文本中,如:
After discussing with team we found that wrong org segment sent in edifact message. Can you please investigate further why wrong ORG segment is sent. [EDIFACT MESSAGE]
Update information as quickly as possible
有人能帮我创建一个正则表达式吗?你知道吗
在an EDIFACT format description上,UNA部分是可选的,而UNB是必需的,因此两者都可以指示消息的开头。UNZ部分是必需的页脚。考虑一个包含
...
与您的完整示例相当,下面是一些python3代码:在这里,我假设UNZ部分一直持续到行尾,尽管这可能是不准确的。也就是说,它似乎也有一个固定的格式,人们可以更精确地建模。你知道吗
正则表达式本身的运行:
(?:UNA.*?)?
是一个可选的UNA部分;UNA后面的部分可以有任何大小或格式,但应该尽可能小。你知道吗UNB.*?
是一个必需的UNB部分;这标志着EDIFACT消息的开始,并一直持续到第一次出现UNZ为止。你知道吗UNZ.*?(?:\r\n|\r|\n)
是一个强制的UNZ部分;它后面跟有到达行末尾所需的尽可能多的字符。因为这似乎是一种相当古老的格式,所以对行尾的类型保持保守可能是一件好事。(\r\n
是Windows,很多网络协议出于兼容性的考虑都支持这一点,\r
本身就是真正的旧mac,\n
是Unix)。你知道吗.
”的一部分。你知道吗在此处运行此脚本将提供:
相关问题 更多 >
编程相关推荐