Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 在文件夹中的每个文件中查找正则表达式_Vb.net - Fatal编程技术网

Vb.net 在文件夹中的每个文件中查找正则表达式

Vb.net 在文件夹中的每个文件中查找正则表达式,vb.net,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+")

我需要为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
Private子btnFindICN\u Click(发送者作为对象,e作为事件参数)处理btnFindICN。单击

Dim Regex=New Regex(“[在我删除代码工作的for exit之后)

    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
Private子btnFindICN\u Click(发送者作为对象,e作为事件参数)处理btnFindICN。单击

Dim正则表达式=新正则表达式(“[你为什么要使用正则表达式。加载包含
input
内容的XDocument,然后遍历XDocument以获得所需的值,似乎会更简单、更高效。我从来没有使用过XDocument。你能告诉我该代码是如何工作的吗?看看这把小提琴,它过于简化了,但它给出了你的答案你有一个想法:@David-OP正在内联DTD中搜索某些内容。
XDocument
将内联DTD解析为
DocumentType.InternalSubet
,就是这样。它仍然需要文本搜索。唯一的好处是它可以防止文档中其他地方出现误报。为此加载整个文档真的值得吗OP可以这么说。现在
XmlDocument
…这是另一回事了。它的
DocumentType
属性有一个
Entities
集合,其中每个
声明都经过解析,并以
Name
/
LocalName
InnerText
属性呈现。但是,它又涉及到整个文档的解析。也许直接使用
XmlReader
将是一个更好的选择?是的。原始if块中的
Exit For
将在找到第一个匹配项时中断For循环。如果只想搜索第一个匹配项,则中断循环非常有用。很好的捕获: