是否有可能将这些模式简化为一个模式?
PRIV_LOC = re.compile("^127\.\d{1,3}\.\d{1,3}\.\d{1,3}$")
PRIV_24 = re.compile("^10\.\d{1,3}\.\d{1,3}\.\d{1,3}$")
PRIV_20 = re.compile("^192\.168\.\d{1,3}.\d{1,3}$")
PRIV_16 = re.compile("^172.(1[6-9]|2[0-9]|3[0-1]).[0-9]{1,3}.[0-9]{1,3}$")
def is_ip_private(ip):
return PRIV_LOC.match(ip) or PRIV_24.match(ip) or PRIV_20.match(ip) or PRIV_16.match(ip)发布于 2017-07-21 20:03:14
你可以试试这个:
re.compile(r"^(127\.\d{1,3}\.\d{1,3}\.\d{1,3}|10\.\d{1,3}\.\d{1,3}\.\d{1,3}|192\.168\.\d{1,3}.\d{1,3}|172.(1[6-9]|2[0-9]|3[0-1]).[0-9]{1,3}.[0-9]{1,3})$")或者说,不要失去太多的可读性:
re.compile(r"^(" + '|'.join([
r"127\.\d{1,3}\.\d{1,3}\.\d{1,3}", # PRIV_LOC
r"10\.\d{1,3}\.\d{1,3}\.\d{1,3}", # PRIV_24
r"192\.168\.\d{1,3}.\d{1,3}", # PRIV_20
r"172.(1[6-9]|2[0-9]|3[0-1]).[0-9]{1,3}.[0-9]{1,3}" # PRIV_16
]) + r")$")https://stackoverflow.com/questions/45245614
复制相似问题