Windows系统进程中的正则表达式匹配日期

时间:2013-07-22 13:27:51

标签: python regex windows netstat

我想使用Windows的命令网络统计服务器并使用提取日期,格式为:(\ d + - \ d + - \ d + \ d +:\ d +:\ d +)

def sysCmd(string):
try:
    res = subprocess.Popen(string)
    return res
except:
    return "NULL - Command Error"

loginTime = sysCmd ("net statistics server ") # windows command
loginRex = "(\d+-\d+-\d+ \d+:\d+:\d+)"
loginMatch = re.search(loginRex, str(loginTime))
print (loginMatch.group(0))

我收到错误: AttributeError:'NoneType'对象没有属性'group'

正则表达式似乎在这个windows命令给出的输出的正则表达式测试工具中运行得非常好。经过这么多的打击和试验后,它仍然没有失败。

我做错了什么?

P.S。我正在使用Python 3

2 个答案:

答案 0 :(得分:0)

我是python 2.7的用户,所以我不知道那里的正则表达式是否存在差异,但我不知道“ - ”在其中的含义。对我来说,有效的是:

loginRex = "(\d?\d?\d+:\d+:\d+)"

这将与1981:05:17和81:05:17相匹配。如果不需要后者,只需删除“?”。你能试试吗?

干杯!

答案 1 :(得分:0)

我意识到问题实际上存在于我调用子进程的函数中。必须提供FLAGS。

res = subprocess.Popen(string)
return res

现在是

res = subprocess.Popen(string, shell=False, stdout=subprocess.PIPE)
return str(res.communicate())
该死的傻错! ;)