应该是这样进行匹配
import re
ip ='192.168.1.1'
trueIp =re.search(r'(([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])\.){3}([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])',ip)
print(trueIp)
而findall这个函数
findall(string[, pos[, endpos]])
是在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。
string : 待匹配的字符串。
pos : 可选参数,指定字符串的起始位置,默认为 0。
endpos : 可选参数,指定字符串的结束位置,默认为字符串的长度。
>>> str1 = '127.0.0.1 192.168.1.1 256.256.0.0'
>>> pattern = re.compile(r"((?:(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d?\d))")
>>> pattern.findall(str1)
['127.0.0.1', '192.168.1.1']
>>>
127.0.0.1
正则应该这样写,连续数组\d+, 后面是有规律的.\d+......, 重复需要用分组,由于分组用(),所以要强调非捕获组?:,
所以完整正则为:
import re
regex = r"\d+(?:.\d+)+"
test_str = ("127.0.0.1\n"
"133.5.7.8")
regexp = re.compile(regex)
MT = regexp.findall(test_str)
print(MT)
------输出如下:
['127.0.0.1', '133.5.7.8']**