在文件夹中的每个文件中查找REGEX

时间:2019-07-17 16:52:32

标签: vb.net

我需要为ICN字符串评估文件夹中的每个文件。然后将每个ICN添加到输出文件。我在下面找到了代码,并对其进行了更改以满足我的需要,但是它仅在ICN.log中添加了一个找到的文件,而不是循环浏览所有文件。

    Private Sub btnFindICN_Click(sender As Object, e As EventArgs) Handles btnFindICN.Click

    Dim Regex = New Regex("[<][!]ENTITY (ICN.*?)[.]\w+")
    Dim output = New List(Of String)
    Dim tLoc = txtFolderPath.Text
    Dim txtFiles = Directory.EnumerateFiles(tLoc, "*.xml", SearchOption.AllDirectories)

    For Each tFile In txtFiles
        Dim input = File.ReadAllText(tFile)

        If Regex.IsMatch(input) Then
            Console.Write("REGEX found in " + tFile)
            output.Add(tFile)
            Exit For
        End If

    Next
    File.WriteAllLines(tLoc.TrimEnd("\"c) & "\ICN.log", output)
End Sub

1 个答案:

答案 0 :(得分:1)

删除代码的for出口后。

    Private Sub btnFindICN_Click(sender As Object, e As EventArgs) Handles btnFindICN.Click


    Dim Regex = New Regex("[<][!]ENTITY (ICN.*?)[.]\w+")
    Dim output = New List(Of String)
    Dim tLoc = txtFolderPath.Text
    Dim txtFiles = Directory.EnumerateFiles(tLoc, "*.xml", SearchOption.AllDirectories)

    For Each tFile In txtFiles
        'MsgBox(tFile)
        Dim input = File.ReadAllText(tFile)

        If Regex.IsMatch(input) Then
            Console.Write("REGEX found in " + tFile)
            output.Add(tFile)
            'Exit For
        End If
    Next
    File.WriteAllLines(tLoc.TrimEnd("\"c) & "\ICN.log", output)
    MsgBox("Function Complete")
End Sub