在python中使用正则表达式进行数字搜索之前获取字符串

时间:2015-03-21 12:56:51

标签: regex python-2.7

我有一个字符串,我需要使用它来获得" 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']

不确定我哪里出错了,请提出任何建议

1 个答案:

答案 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']