我的python脚本中有以下内容..
hostIP = sys.argv[1]
hostsFileLoc = "hosts.txt"
if not hostIP in open(hostsFileLoc).read():
# Script to add if the string is not in file
else:
# Print message
唯一的问题是它不是完全匹配,例如......
如果我的文件包含:
192.168.0.111
我的主机IP是:
192.168.0.11
然后它会发现它是匹配的。我以为我可以用正则表达式做到这一点,因为总会有一个空格("\s+")
或一个逗号("\,")
所以我想我可以使用像
test = re.compile("^" + hostIP + "[\s\,]*")
并使用test作为我的搜索,但这显然不起作用。我试图找到一些关于此的文档,但无济于事。有没有人建议我如何使用带有正则表达式的变量进行更具体的搜索。
由于
MHibbin
答案 0 :(得分:3)
它不起作用的唯一原因是您在*
中使用"[\s\,]*"
,这意味着“空格或逗号零或更多次”。因此它将与'192.168.0.111'
匹配,因为它在11
之后的空格为零。将*
更改为+
(“一次或多次”),它应该有效。
答案 1 :(得分:3)
您可以通过分隔符(例如空格)拆分文本文件,然后在列表中找到字符串:
if not hostIP in open(hostsFileLoc).read().split():
# Script to add if the string is not in file
else:
# Print message
如果您使用的不是空格,请将分隔符放入 split()