Regex 正则表达式匹配和删除/替换字符串

Regex 正则表达式匹配和删除/替换字符串,regex,vb.net,Regex,Vb.net,因此,我试图解析一个包含多个“页脚”的文件(该文件是为打印而设计的输出,我的公司希望以电子方式存储该文件……每个页脚都是一个新页面,新页面不再需要) 我正在尝试查找并删除以下行: 第1页,共2122页打印时间:2013年1月7日04:46第1页,共11页 第2页,共2122页打印时间:2013年1月7日04:46第2页,共11页 第3页,共2122页打印时间:2013年1月7日04:46第3页,共11页 等等 然后我想用一个“自定义”页脚替换最后一行(读起来像“2122/2122”) 我正在使用

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

我正在尝试查找并删除以下行:

第1页,共2122页打印时间:2013年1月7日04:46第1页,共11页 第2页,共2122页打印时间:2013年1月7日04:46第2页,共11页 第3页,共2122页打印时间:2013年1月7日04:46第3页,共11页

等等

然后我想用一个“自定义”页脚替换最后一行(读起来像“2122/2122”)

我正在使用正则表达式,但我对使用它非常陌生,所以我的正则表达式应该是什么样子才能做到这一点呢?我计划使用RegEx“count”函数来确定何时找到最后一行,然后对其执行.replace

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

我用RegExr创建的:

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

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

我就是这样做的

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

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

向我们展示您迄今为止所做的工作,让我们看到您已经投入的努力以及您遇到的困难。页脚是否存在于它自己的行中?这有助于正确的正则表达式。至于删除每个匹配项,您可以执行
regex.replace
并用空字符串替换匹配项。。。发布更多的数据,我们也许可以帮助他们……@JohnBustos是的,他们可以。我已经显示了格式,但是页面的#可以更改,并且可能位于整个文件中的不同位置。这些文件旨在打印,而不是以电子方式存储。因此,它们包含许多打印机控制字符,这些字符在页脚格式化之前被删除。