Python:如何在多行中搜索特定行并将值存储在变量中

时间:2019-04-23 06:52:22

标签: python python-regex

我已将命令“ chage -l user”的输出存储在变量“输出”中,并且需要检查用户帐户密码是否未过期或将在90天内过期。

import re
output = '''Last password change                                    : Aug 26, 2017
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 0
Maximum number of days between password change          : 99999
Number of days of warning before password expires       : 7
'''

regexp = re.compile(r'Password expires [ ]*(:*?)')
match = regexp.match(output)
if match:
    VALUE = match.group(2)

现在,我需要将值存储在变量中以继续前进,但无法执行此操作。以上是我的代码。理想情况下,VALUE应为“从不”。这里有任何帮助。请问这个问题是否对我有好处,因为我有被阻止的危险。

1 个答案:

答案 0 :(得分:1)

re.match不会在整个字符串中查找模式,而是会在字符串的开始位置 进行匹配(就像正则表达式以^开头) )。因此,您需要re.search,它将检查整个目标字符串中的模式:

import re
output = '''Last password change                                    : Aug 26, 2017
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 0
Maximum number of days between password change          : 99999
Number of days of warning before password expires       : 7
'''

regexp = re.compile(r'Password expires\s+: (.*)')
match = regexp.search(output)
if match:
    VALUE = match.group(1)
    print(VALUE)