使用 Notepad++ 从 .txt 文件中提取一个字母和三个数字

使用 Notepad++ 从 .txt 文件中提取一个字母和三个数字

我想从 Notepad++ 中的许多 .txt 文件中提取特定数据。一个文件中有很多数据,但我只需要特定的...

文件中的内容如下:

©Q Ńü Vý 8 ź) €G' €\Y € €w) €â` € K¶ K¶}Ąg† ‚Z™y ë( \Y
SCfsfgh4GHGH1+ €‡Ş € € €?° €¸ € kk € ‡Ş b | -A233 ™ž B¤ ˙˙˙˙˙˙˙˙˙˙˙˙˙ ' ˙ rtSdpeRB ˙ GÚS)PS 3:TRANSMIT FILE 由建模者版本 1101322 SCH_900000_9008 创建 @Ź@

我需要提取这个:

A233

提示:- 号前有一个空格(-A233)此外,每个文件在字母 A 旁边都有不同的数字

原始文件如下所示(许多空格是通过复制粘贴提取的): 截屏

答案1

您可以使用以下内容替换(ctrl-h):

找什么:.*? -(A\d+)

用。。。来代替:\1\n

如果文件中存在“.匹配换行符”复选框,请选中它

解释:

.*? -- 查找到“-”为止的所有内容,包括任何换行符

(A\d+)- 定义一个捕获组,查找 A 后面紧跟着 1 个或多个数字

\1\n- 用捕获的数字替换匹配项,并用换行符分隔它们

\n你可以用你选择的分隔符替换

请注意,这不会删除最后一场比赛后的任何文本,但由于您已经在文本编辑器中,因此删除它是微不足道的。

答案2

由于您有许多 .txt 文件,因此执行简单的自动化操作而不是手动从每个文件中提取值是有意义的。我建议使用下面的 WSH VBScript:

strRes = ""
For Each strPath In WScript.Arguments
    With CreateObject("Scripting.FileSystemObject")
        If .FileExists(strPath) Then
            strRes = strRes & .GetFileName(strPath) & vbCrLf
            strCont = LoadTextFromFile(strPath, "us-ascii")
            With CreateObject("VBScript.RegExp")
                .Global = True
                .MultiLine = True
                .IgnoreCase = False
                .Pattern = "-A(\d{3})"
                Set objMatches = .Execute(strCont)
                For Each objMatch In objMatches
                    strRes = strRes & objMatch.SubMatches(0) & vbCrLf
                Next
            End With
        End If
    End With
Next
ShowInNotepad strRes

Function LoadTextFromFile(strPath, strCharset)
    With CreateObject("ADODB.Stream")
        .Type = 1 ' TypeBinary
        .Open
        .LoadFromFile strPath
        .Position = 0
        .Type = 2 ' adTypeText
        .Charset = strCharset
        LoadTextFromFile = .ReadText
        .Close
    End With
End Function

Sub ShowInNotepad(strToFile)
    Dim strTempPath
    With CreateObject("Scripting.FileSystemObject")
        strTempPath = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%TEMP%") & "\" & .GetTempName
        With .CreateTextFile(strTempPath, True, True)
            .WriteLine strToFile
            .Close
        End With
        CreateObject("WScript.Shell").Run "notepad.exe " & strTempPath, 1, True
        .DeleteFile (strTempPath)
    End With
End Sub

只需将此代码粘贴到记事本,另存为文本文件,然后手动将.txt文件扩展名替换为.vbs。然后,您只需在资源管理器窗口中选择文本文件,然后将其拖放到脚本上即可。

对于您共享的文件,我的输出如下:

30_SCH51BQ139.txt

036

30_SCH51BQ141.txt

038

30_SCH51BQ144.txt

040

30_SCH51BQ147.txt

043

相关内容