首页 > 解决方案 > Python Regex 模式与第一次出现不匹配,继续向下

问题描述

我正在尝试编写一个快速脚本来美化 passwd 文件,以便破解我正在处理的盒子 vm。我遇到了麻烦,因为正则表达式比我想要的要多。

我使用它作为我的正则表达式模式:

passwd_line_regex = re.compile(r'[a-zA-Z0-9_]+:[a-zA-Z0-9:*&_/\ ]+[/-][a-zA-Z0-9_]+\s{1}')

然后我将它传递给它(较小的摘录):

root:*:0:0:Charlie &:/root:/bin/csh toor:*:0:0:Bourne-again Superuser:.....

并使用 findall 我得到了一个列表,但是我没有得到 root: :0:0:Charlie &:/root:/bin/csh AND toor: :0:0:Bourne-again,而是像这样将它们重新组合在一起:

['root:*:0:0:Charlie &:/root:/bin/csh toor:*:0:0:Bourne-again ', 'Superuser:/....

我怎样才能阻止这种行为?我希望它在第一次出现 (/ 或 -)example(space) 时停止,在这种情况下,在 /bin/csh 的末尾,但我试图找到所有条目,所以我需要从那一点继续与下一个条目。

标签: pythonregex

解决方案


推荐阅读