我有一个字符串,我需要使用它来获得" PASS_MAX_DAYS 180"作为输出,然后使用re.sub替换它以获得另一个值,但是当我做一个re时,我无法得到刺痛
>>>_file = '#\nPASS_MAX_DAYS 180\nPASS_MIN_DAYS 1\nPASS_WARN_AGE 8\n'
>>> re.findall(r'PASS_MAX_DAYS\s*\b([0-9]{1,2}|1[0-7][0-9]|180)\b', _file, re.M)
['180']
不确定我哪里出错了,请提出任何建议
答案 0 :(得分:0)
将捕获组转为非捕获组,因为如果使用的正则表达式具有任何捕获组,则re.findall函数仅返回组内存在的字符。
r"PASS_MAX_DAYS\s*\b(?:[0-9]{1,2}|1[0-7][0-9]|180)\b"
示例:强>
>>> _file = '#\nPASS_MAX_DAYS 180\nPASS_MIN_DAYS 1\nPASS_WARN_AGE 8\n'
>>> re.findall(r'PASS_MAX_DAYS\s*\b(?:[0-9]{1,2}|1[0-7][0-9]|180)\b', _file, re.M)
['PASS_MAX_DAYS 180']