【发布时间】:2014-09-03 15:20:22
【问题描述】:
假设输入是这样的。实际上它更长,但为了清楚起见,我将其保留为这样。
有效期:2014 年 3 月 5 日星期三 15:40:45 GMT+00:00 至:1 月 5 日星期四 08:28:29 GMT+00:00 2034
有效期从:2014 年 1 月 10 日星期五 08:28:29 GMT+00:00 到:1 月 5 日星期四 08:28:29 GMT+00:00 2034
这是我的代码:
certDataArray = []
patterns = ['Alias name:\s(.*)\n', 'Owner:\s(.*)\n', 'Issuer:\s(.*)\n', 'Serial number:\s(.*)\n', 'Valid from:\s(.*) until', 'until:\s(.*)\n']
for pattern in patterns:
result = re.compile(pattern)
result = result.findall(cmd)
certDataArray.append(result)
certDataArray = zip(certDataArray[0],certDataArray[1],certDataArray[2],certDataArray[3],certDataArray[4],certDataArray[5])
现在,问题是 findall 不会匹配模式 "until:\s(.*)\n" 的第二个匹配项,因为已经有一个相同的匹配项。不确定我的措辞是否正确,但你明白了。
我一直在谷歌搜索解决方案,发现 2:
1) 使用新改进的python regex 模块。这不在桌面上,因为我没有在我的 PC 上运行它,这段代码将在企业级平台上运行。以任何方式升级 python 是不可能的,我不认为我可以将 regex.py 复制粘贴到服务器中以使那里的 python 使用它,或者我可以吗?我下载了这个包,好像需要安装,这个系统不允许我安装。
2) 重复。一直在看,坦率地说我不明白它是如何工作的
我也尝试将字符串分解成行并使用“for”循环遍历每一行,但这似乎是一种可能适得其反的迟钝方法。
非常欢迎所有想法,谢谢。
【问题讨论】: