1

我的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 作为我的搜索,但这显然不起作用。我试图找到一些关于此的文档,但无济于事。有没有人建议我如何使用正则表达式的变量进行更具体的搜索。

谢谢

米宾

4

2 回答 2

3

它不起作用的唯一原因是您使用*in "[\s\,]*",这意味着“空格或逗号零次或多次”。因此它将匹配,'192.168.0.111'因为它后面有零个空格11。更改*+(“一次或多次”),它应该可以工作。

于 2012-07-01T08:38:28.743 回答
3

您可以通过分隔符(例如空格)拆分文本文件,然后在列表中查找字符串:

if not hostIP in open(hostsFileLoc).read().split():
    # Script to add if the string is not in file
else:
    # Print message

如果您使用的不是空格,请将分隔符放入split()

于 2012-07-01T08:40:49.877 回答