如何使用正则表达式搜索文件中的重复段落

时间:2014-03-14 06:28:51

标签: .net regex asp.net-3.5

我有一个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美元    发票金额:    折扣金额:

报告结束

// -------------------------文件结束----------------- --------------------------------- //

1 个答案:

答案 0 :(得分:0)

与以下选项结合使用时:

  • .NET MultilineSingleline(原文如此)
  • OSX / iOS NSRegularExpressionDotMatchesLineSeparatorsNSRegularExpressionAnchorsMatchLines

尝试:

^(?<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