假设输入是这样的。事实上它比较长,但为了清楚起见,我就这样留着。在
Valid from: Wed Mar 05 15:40:45 GMT+00:00 2014 until: Thu Jan 05 08:28:29 GMT+00:00 2034
Valid from: Fri Jan 10 08:28:29 GMT+00:00 2014 until: Thu Jan 05 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模块。这是不可能的,因为我没有在我的个人电脑上运行,这段代码将在企业级平台上运行。以任何方式升级python都是不可能的,我不认为我可以复制粘贴正则表达式.py进入服务器让那边的python使用它,或者我可以吗?我下载了这个软件包,似乎它需要安装,但我不能在这个系统上安装。在
(二)重复. 我一直在看,坦白说我不明白它是怎么工作的
我还试图将字符串分解成几行,并使用“for”循环遍历每一行,但这似乎是一个迟钝的方法,可能会产生严重的反作用。在
所有的想法都非常欢迎,谢谢。在
这并不是因为它是一个重复的匹配-第二行不以^{结尾。你真的应该使用:
r"raw strings"
防止越狱者陷入混乱$
而不是\n
;和re.MULTILINE
选项分别处理每一行。在例如:
相关问题 更多 >
编程相关推荐