我想从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+
(非空格字符)可能工作正常。 对于窗口标题,因为它是最后一个组,所以您可能只想使用.+
来匹配任何东西,直到结束。