我想从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和域\用户名字段。关于正确的正则表达式的任何提示。
答案 0 :(得分:1)
您正在使用\w+
同时使用用户名和窗口标题 - 但两者也可能包含其他字符。
对于用户名,\S+
(非空格字符)可能效果很好。对于窗口标题,由于它是最后一个组,您可能只想使用.+
来匹配任何内容直到结束。