正则expression式查找tasklist -v在窗口中输出的过程

我想从windows中的tasklist -v命令的输出中提取进程名称pid username和windows title。 我用正则expression式

输出(部分)

 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中使用正则expression式和命名组

 ^(?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个组匹配正确。 但是,第七和第四后,它不正确。 这是因为N / A和域\用户名字段。 任何提示正确的正则expression式。

您正在使用\w+用户名和窗口标题 – 但都可能包含其他字符。

对于用户名, \S+ (非空格字符)可能工作正常。 对于窗口标题,因为它是最后一个组,所以您可能只想使用.+来匹配任何东西,直到结束。