【问题标题】:Extracting strings and writing to a new file提取字符串并写入新文件
【发布时间】:2013-08-03 10:44:20
【问题描述】:

我在谷歌上搜索但没有找到正确的答案,也许这里的人愿意并且能够帮助我。 我对 VBS 或 WSH 很陌生,我希望有一个解决这个问题的方法:

我正在文件中搜索文本字符串没有换行符(只有一行)。我要查找的文本字符串始终以相同的内容“jpgline”开头,并以三个字母“qbm”结尾。我们如何将包含“jpgline....qbm”的每个句子(字符串总是 64 个字符长)提取到单独的文件中。

当我使用 Windows 7 时,我正在寻找 Visual Basic Sc​​ript 中的解决方案。

提前致谢

麦克

【问题讨论】:

    标签: vbscript scripting wsh


    【解决方案1】:

    使用正则表达式:

    Set re = New RegExp
    re.Pattern = "^jpgline.*qbm$"
    re.IgnoreCase = True
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set inFile  = fso.OpenTextFile("C:\path\to\input.txt")
    Set outFile = fso.OpenTextFile("C:\path\to\output.txt", 2, True)
    
    Do Until inFile.AtEndOfStream
      line = inFile.ReadLine
      If re.Test(line) Then outFile.WriteLine line
    Loop
    
    inFile.Close
    outFile.Close
    

    【讨论】:

    • 谢谢,但它不起作用。我想知道这一行 If re.Test(line) Then outFile.WriteLine line What is Test ??
    • re,可以看到,是前面创建的正则表达式对象。 Test 是该对象的一种方法,用于检查其参数(在本例中为变量 line)是否与正则表达式模式匹配(此处为:^jpgline.*qbm$,即以“jpgline”开头并以“qbm”结尾的字符串)。
    • BTW 如何确切地对您“不起作用”?如果你能更具体一点,那会很有帮助。
    【解决方案2】:

    由于您的输入文件没有行,请使用 .ReadAll() 将其全部内容加载到字符串变量中。应用正则表达式以获取由模式“jpgline.{N}qbm”定义的所有部分(匹配项),其中 N 是 64 或 64 - 前/后缀的长度。 Ansgar 已经展示了如何打开和写入输出文件。

    使用RegExp Docs 了解 .Execute 以及如何循环生成的匹配集合。文档也会告诉您有关 .Test 的信息。

    【讨论】:

    • 嗨,我在图书馆里找了一个有用的脚本,但它不起作用:
    • 嗨 Ansgar,使用这个模式 "jpgline\w{1,64}\.qbm" 我只得到 28 个结果中的 11 个,前 17 个结果被忽略了。对象正则表达式。全局 ist 仍然为真,“Input.txt”仍然没有 CrLf(十六进制 0D0A)。怎么了?
    • @user2648359 使用您当前拥有的代码更新您的问题,并提供输入和所需输出的示例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-13
    • 1970-01-01
    • 2014-06-22
    • 2012-06-15
    • 2011-04-03
    • 1970-01-01
    • 2011-08-18
    相关资源
    最近更新 更多