所有正则表达式匹配后如何写输出文件?

时间:2016-02-01 17:54:58

标签: regex vbscript

我的文本文件包含以mmrk开头的行。

我想提取所有行并写出输出。

我正在尝试使用代码。 (我知道这不是正确的方法,只是为了展示我想要的东西。)

Const ForReading = 1, ForWriting = 2, ForAppending = 8
Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
Dim fso, MyFile, FileName, Text
dim oFile, strPath
Set fso = CreateObject("Scripting.FileSystemObject")
FileName = "C:\Users\user\Desktop\2.rtf"
strPath = "C:\Users\user\Desktop\1.txt"
Set MyFile = fso.OpenTextFile(FileName, ForReading)
Do While MyFile.AtEndOfStream <> True
    Text = MyFile.ReadAll
Loop
Set regEx_ = new regExp
With regEx_
 .Global = True
 .MultiLine = True
 .IgnoreCase = True

 'Do some regex find and replace(works perfectly)

 .Pattern = "mmrk.*"
    If regEx_.Test(Text) Then
    Set oFile = fso.OpenTextFile(strPath, 2, True, -1)
      oFile.Write Text
      oFile.Close
    End If
End With
MyFile.Close

修改 我需要从字符串中获取行。

我目前首先从字符串中保存临时文件,并使用Nefariis的答案来完成剩下的工作。有没有直接的方法。

1 个答案:

答案 0 :(得分:1)

我认为有更简单的方法可以做到这一点,不涉及正则表达式。

在VBScript中:

FileName = "C:\Users\user\Desktop\2.rtf"
strPath = "C:\Users\user\Desktop\1.txt"

Set inFile = CreateObject("Scripting.FileSystemObject").OpenTextFile(FileName)
Set outFile = CreateObject("Scripting.FileSystemObject").CreateTextFile(strPath,True)

Do Until inFile.AtEndOfStream
    Dim line : line = inFile.Readline
    If inStr(line, "mmrk.") = 1 then outFile.writeLine(line)
Loop

inFile.Close
outFile.Close

在VB.Net

Dim inFile as String() = File.ReadAllLines("inFileName")
Dim sw As StreamWriter = New StreamWriter("OutFileName", True)

For Each line As String In inFile
    If line.StartsWith("mmrk.") Then sw.WriteLine(line)
Next

sw.Close()

这将读取文件,然后通过它查找以“mmrk。”开头的行,并将该行保存到您指定的单独文本文件中。