Vb.net 在文件夹中的每个文件中查找正则表达式
我需要为ICN字符串计算文件夹中的每个文件。然后将每个ICN添加到输出文件中。我找到了下面的代码,并对其进行了更改以满足我的需要,但它只在ICN.log中添加了一个找到的文件,而不是遍历所有文件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+")
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循环。如果只想搜索第一个匹配项,则中断循环非常有用。很好的捕获: