有没有人有一个方便的正则表达式,可以匹配任何合法的DNS主机名或IP地址?
编写一个可以在95%的时间内工作的一个很容易,但是我希望得到一些经过充分测试的东西,以完全匹配最新的RFC主机名规范.
验证用户输入的IP有效的最佳方法是什么?它以字符串形式出现.
检查字符串是否与某个模式匹配的最快方法是什么?正则表达式是最好的方法吗?
例如,我有一堆字符串,想要检查每一个字符串以查看它们是否是有效的IP地址(在这种情况下有效意味着正确的格式),是使用正则表达式执行此操作的最快方法吗?或者有更快的东西像字符串格式或其他东西.
这样的事情是我到目前为止所做的:
for st in strs:
if re.match('\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}', st) != None:
print 'IP!'
Run Code Online (Sandbox Code Playgroud) 用户将输入主机名或IP地址.如果用户输入IP地址,我想保持原样,但如果用户输入主机名,我想使用以下方法将其转换为IP地址:
def convert(hostname):
command = subprocess.Popen(['host', hostname],
stdout=subprocess.PIPE).communicate()[0]
progress1 = re.findall(r'\d+.', command)
progress1 = ''.join(progress1)
return progress1
Run Code Online (Sandbox Code Playgroud)
我该怎么做?