正则表达式在Windows中的任务列表-v输出中查找进程

时间:2016-03-23 12:39:09

标签: python regex windows

我想从windows中tasklist -v命令的输出中提取进程名称pid用户名和windows标题。我用的是正则表达式。

输出(部分)

win32sysinfo.exe              4052 Services                   0      1.992 K Unknown         N/A                                                     0:00:00 N/A                                                                     
inet_gethost.exe              3264 Services                   0      4.740 K Unknown         N/A                                                     0:00:00 N/A                                                                     
taskhost.exe                  2564 Console                    1     18.940 K Running         domain\username                                      0:00:02 MCI command handling window                                             

我在python中使用正则表达式和命名组

^(?P<pName>wininit\.exe)\s+(?P<pId>\d+)\s+(?P<sessionName>\w+)\s+(?P<sessionNum>\d+)\s+(?P<memoryUsage>\d+\.\d+\s+K)\s+(?P<status>\w+)\s+(?P<userName>\w+)\s+(?P<cpuTime>\d+:\d+:\d+)\s+(?P<windowTiitle>\w+)$

问题是前6组正确匹配。但是在第7次和第4次之后它没有正确匹配。这是因为N / A和域\用户名字段。关于正确的正则表达式的任何提示。

1 个答案:

答案 0 :(得分:1)

您正在使用\w+同时使用用户名和窗口标题 - 但两者也可能包含其他字符。

对于用户名,\S+(非空格字符)可能效果很好。对于窗口标题,由于它是最后一个组,您可能只想使用.+来匹配任何内容直到结束。