1

我正在使用 Python 正则表达式来检查包含 Windows 命令输出的日志文件是否tasklist以 .exe 结尾。此日志文件包含多次调用tasklist. 在我得到一个包含 .exe 的字符串列表后,我想在检查输出文件中是否已经存在该字符串后将它们写到一个文本文件中。它不会写出所需的输出,而是写出文本文件中已经存在的字符串的副本。(例如,svchost.exe 多次出现。)目标是创建一个文本文件,其中列出了每个唯一进程的列表,tasklist其中没有已写入文件中的进程重复。

import re

file1 = open('taskinfo.txt', 'r')
strings = re.findall(r'.*.exe', file1.read())
file1.close()
file2 = open('exes.txt', 'w+')
for item in strings:
    line_to_write = re.match(item, file2.read())
    if line_to_write == None:
        file2.write(item)
        file2.write('\n')
    else:
        pass

我使用打印语句进行调试并确保不是item所需的输出。

4

1 回答 1

4

您的正则表达式存在一些问题。尝试这个:

strings = re.findall(r'\b\S*\.exe\b', file1.read())

这只会.exe通过从单词边界 ( \b) 开始并抓取所有非空格字符 ( \S) 来获取连接到 的文本。此外,当您使用.exe而不是 时\.exe.匹配的是通配符,而不是文字句点。

于 2013-08-06T17:08:30.780 回答