Regex 在python中使用正则表达式获取数值serarch之前的字符串
我有一个字符串,我需要从中使用re来获取“PASS_MAX_DAYS 180”作为输出,然后使用re.sub将其替换为其他值,但是当我执行re时,我无法获取stingRegex 在python中使用正则表达式获取数值serarch之前的字符串,regex,python-2.7,Regex,Python 2.7,我有一个字符串,我需要从中使用re来获取“PASS_MAX_DAYS 180”作为输出,然后使用re.sub将其替换为其他值,但是当我执行re时,我无法获取sting >>>_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', _fi
>>>_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']
不确定哪里出了问题,如果使用的正则表达式有任何捕获组,请将捕获组转到非捕获组,因为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']
>>>`re.findall(r'PASS_MAX_DAYS\s*\b([0-9]{1,2}1[0-7][0-9]|180)\b',_file,re.M)`['180']很抱歉,之前整个类型都更改了,刚刚节省了我的周末,谢谢。。。我想我必须开始学习更多。谢谢。是的,当我使用搜索时,它正在工作。。以上说法现在有道理了。。需要学习的内容太多了>>>\u new=re.search(r'PASS\u MAX\u DAYS\s*\b([0-9]{1,2}\1[0-7][0-9]| 180)\b',u file,re.M)>>>\u new.group>>\u new.group()'PASS\u MAX\u DAYS 180'