我如何得到pexpect匹配所有但是给定的行?

时间:2013-03-07 17:57:26

标签: python regex pexpect

假设有一个像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)'无效,它只是一种展示我想要的方式。我会在它的实际用途中使用什么?

1 个答案:

答案 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

不确定您需要的具体程度。