假设有一个像pexpect.expect这样的调用:
ret = pex.expect([re.escape(line), pexpect.EOF, pexpect.TIMEOUT], timeout)
if ret == 0:
do_stuff()
elif ret == 1:
do_eof_stuff()
elif ret == 2:
do_timeout_stuff()
除了处理EOF和TIMEOUT之外,我还想切换周围的东西并匹配任何内容,而不是匹配我感兴趣的行。有点像这样:
ret = pex.expect([not re.escape(line), pexpect.EOF, pexpect.TIMEOUT], timeout)
if ret == 0:
do_error_stuff()
elif ret == 1:
do_eof_stuff()
elif ret == 2:
do_timeout_stuff()
else:
# Our line "matched" so do stuff
do_stuff()
我知道'不是re.escape(line)'无效,它只是一种展示我想要的方式。我会在它的实际用途中使用什么?
答案 0 :(得分:0)
我使用负面前瞻玩弄了这个:
ret = pex.expect([r'^((?!' + re.escape(line) + ').)*$', pexpect.EOF, pexpect.TIMEOUT], timeout)
这里需要注意的是,如果行是hello world
,例如:
hello world -> won't match
hello world 2 -> won't match
my hello world -> won't match
hello worl -> will match
不确定您需要的具体程度。