我有一个EDI文件,其结构如下。此文件有多个记录,每个记录包含一个标题(例如EDI.DD.0000000001.20130809),然后是内容(即文本的多个段落)然后是页脚(例如报告结束/没有EDI活动)。我必须使用正则表达式使用三个组来读取整个文件。
我使用以下正则表达式来读取文件。
(?< 1header> [A-Z] {3}。[A-Z] {2}。[0-9] {10}。[0-9] {8})| (?< 2footer> \ b(结束\ sof \ sReport | No \ sEDI \ sActivity)\ b)|
(?< 3content>(?< =< =< 1header>)。*(?= \ k< 2footer>))
该表达式读取"标题"和"页脚"在各个组中正确但没有在页面和页脚之间选择内容"内容"基。
我在下面的文件中更改了页眉和页脚的字体,以帮助理解格式。 我正在使用ASP.Net 3.5框架。
提前感谢您的帮助。
// -------------------------开始EDI文件---------------- ------------------------- //
EDI.DD.0000000001.20130809
原始信息 公司名称:UNITED HEALTHCAR 鉴定:9024125001 起源DFI:002100002
收件人信息 接收者姓名:HEALTH& WELLNESS DFI账号:0000000000000001 收到DFI ID:434343430 身份证号码: 交易类型:22存款
原始信息 公司名称:BLUE CHOICE 鉴定:9024125001
报告结束
EDI.DD.0006578987.20130809
没有EDI活动
EDI.SV.0000000555.20130809
原始信息 公司名称:佛罗里达大学 鉴定:A426004813 起源DFI:004200001
TRANSACTION INFORMATION
条目描述:vndr pymnt 入门级代码:CTX 服务类代码:ACH条目混合
REMITTANCE ADVICE ACCOUNTS
RECEIVABLE OPEN ITEM REFERENCE
卖方的发票编号:10016 Pmt行动代码: 支付金额:800.00美元 发票金额: 折扣金额:
报告结束
// -------------------------文件结束----------------- --------------------------------- //
答案 0 :(得分:0)
与以下选项结合使用时:
Multiline
,Singleline
(原文如此)NSRegularExpressionDotMatchesLineSeparators
,NSRegularExpressionAnchorsMatchLines
尝试:
^(?<header>[A-Z]{3}.[A-Z]{2}.[0-9]{10}.[0-9]{8})$(?<content>.+?)^(?<footer>End\sof\sReport|No\sEDI\sActivity)$
以下是来自OP的输入日期,通过在线.NET正则表达式测试程序regexhero.net(需要带有Silverlight的浏览器)的演示.NET解决方案:
http://regexhero.net/tester/?id=081cf97e-4c0b-4efb-b891-91f7cb03afb0