как сопоставить регулярное выражение, например (% i1) в pexpect python

Я хочу использовать maxima из python с помощью pexpect, всякий раз, когда maxima запускается, он будет печатать кучу вещей в этой форме:

$ maxima
Maxima 5.27.0 http://maxima.sourceforge.net
using Lisp SBCL 1.0.57-1.fc17
Distributed under the GNU Public License. See the file COPYING.
Dedicated to the memory of William Schelter.
The function bug_report() provides bug reporting information.
(%i1)

я хотел бы запустить pexpect так:

import pexpect 
cmd = 'maxima'
child = pexpect.spawn(cmd)
child.expect (' match all that stuff up to and including (%i1)')
child.sendline ('integrate(sin(x),x)')
chil.expect( match (%i2) i think ; see below sample session  ) 
print child.before 

как сопоставить начальный баннер с подсказкой (%i1)? и так далее, также maxima увеличивает (%i1) на единицу по ходу сеанса,

(%i1) integrate(sin(x),x);
(%o1)                              - cos(x)
(%i2) integrate(log(x),x);
(%o2)                            x log(x) - x
(%i3)

поэтому следующим ожиданием будет:

child.expect ('match (%i2)')
child.sendline ('integrate(log(x),x)')
child.expect( match (%i3) ) 
print child.before 

как мне сопоставить (увеличивающиеся) целые числа? В основном мне нужно сопоставить (%i#) при печати (%o#).


person mike    schedule 15.12.2012    source источник


Ответы (1)


Это регулярное выражение соответствует ему: \(%i\d\). Если вам нужно совместить (%o#), просто замените i на o в игле.

person Brigand    schedule 15.12.2012