0

因此,我试图解析一个具有多个“页脚”的文件(该文件是为打印而设计的输出,我的公司希望以电子方式存储它......每个页脚都是一个新页面,新页面不再是需要作为)。

我正在尝试查找并删除如下所示的行:

1 of 2122 印刷 07/01/2013 04:46 页 : 1 of 11 2 of 2122 印刷 07/01/2013 04:46 页: 2 of 11 3 of 2122 印刷 07/01/2013 04:46 页: 3 11

等等

然后,我想用“自定义”页脚替换最后一行(其内容类似于“2122 of 2122”)。

我正在使用 RegEx,但对使用它非常陌生,那么我的 RegEx 应该如何看待才能完成此操作?我计划使用正则表达式“计数”功能来找出我何时找到最后一行,然后对其执行 .replace。

我正在使用 VB .NET,但如果需要,可以翻译 C#。我怎样才能完成我想做的事情?具体来说,只要匹配数> 1,我只关心匹配/删除匹配。

4

2 回答 2

0

这是我用 RegExr 创建的:

/^(\d+\s+of\s+\d+)(?=\s+printed)/gim

它匹配行首的 (number)(space)('of')(space)(number),并且仅当它后跟 (space)('printed') 时,不区分大小写。/m 标志将 ^ 和 $ 转换为行感知边界。

于 2013-07-10T20:51:00.367 回答
0

这就是我最终这样做的方式......

Private Function FixFooters(ByVal fileInput As String, Optional ByVal numberToLeaveAlone As Integer = 1) As String
    Dim matchpattern As String = "^\d+\W+of\W+\d+\W+PRINTED.*$"
    Dim myRegEx As New Regex(matchpattern, RegexOptions.IgnoreCase Or RegexOptions.Multiline)
    Dim replacementstring As String = String.Empty
    Dim matchCounter As Integer = myRegEx.Matches(fileInput).Count
    If numberToLeaveAlone > matchCounter Then numberToLeaveAlone = matchCounter
    Return myRegEx.Replace(fileInput, replacementstring, matchCounter - numberToLeaveAlone, 0)
End Function

我使用 myregextester.com 来获取初始匹配模式。由于我想单独留下最后一个页脚(以便稍后进一步操作它),我创建了 numberToLeaveAlone 变量以确保我们不会删除所有变量。出于该程序的目的,我将默认值设为 1,但可以将其更改为零(我这样做只是为了调用代码的可读性,因为我知道我总是想留下一个……但我确实喜欢重用代码)。它相当快,我确信那里有更好的方法,但这个对我来说最有意义。

于 2013-07-11T16:51:25.743 回答