2008-10-21 14 views
5

Pexpect se puede usar para automatizar tareas en python (no necesita instalar TCL). Una de las rutinas más simples de esta clase es la rutina 'run()'. Acepta un diccionario de patrones de pregunta esperados como claves y las respuestas como valores. Por ejemplo¿Cuál es el significado de '(? I) contraseña' en la expresión regular de python?

pexpect.run ('foo SCP [email protected] :.', eventos = { '(i) la contraseña?': Mypassword})

sé que por lo general '?' se usa para indicar 0 o 1 ocurrencias de literal anterior en la cadena (para expresiones regulares). Sin embargo, aquí, este no parece ser el significado.

¿Pueden los expertos comentar sobre qué es?

Respuesta

8

https://docs.python.org/library/re.html#regular-expression-syntax

(? ...) Esta es una extensión notación (un "?" Después de una "(" no es significativa lo contrario). La primera carácter después del "?" Determina . lo que el significado y la sintaxis más de la construcción es generalmente extensiones no crean un nuevo grupo; (? P ...) es la única excepción a esta regla siguientes son las extensiones actualmente soportados

..

(? ILmsux) (Una o más letras de el conjunto "i", "L", "m", "s", "u", "x") El grupo coincide con la cadena vacía; las letras establecen los indicadores correspondientes (re.I, re.L, re.M, re.S, re.U, re.X) ​​para toda la expresión regular . Esto es útil si desea para incluir las banderas como parte de la expresión regular , en lugar de pasar un argumento de indicador a la función compilar() .

Tenga en cuenta que el indicador (? X) cambia cómo se analiza la expresión . Debe ser usado primero en la cadena de expresión, o después de uno o más espacios en blanco caracteres. Si hay caracteres no en blanco antes del , los resultados no están definidos.

Por lo tanto, en este caso, la cadena es una expresión regular, y se establece para que no distinga entre mayúsculas y minúsculas.

4

Esta es una extensión en la sintaxis de expresiones regulares en el módulo re de Python. La "i" significa "ignorar caso". Esto significa que se realiza una búsqueda insensible a mayúsculas y minúsculas de "contraseña".

de https://docs.python.org/library/re.html#regular-expression-syntax

(? ILmsux) (una o más letras del conjunto de "i", "L", "m", "s", "u", "x"). El grupo coincide con la cadena vacía; las letras establecen los indicadores correspondientes (re.I, re.L, re.M, re.S, re.U, re.X) ​​ para toda la expresión regular. Esto es útil si desea incluir las banderas como parte de la expresión normal , en lugar de pasar un argumento a la función compile().

Tenga en cuenta que el indicador (? X) cambia la forma en que se analiza la expresión. Es se debe utilizar primero en la cadena de expresión , o después de uno o más caracteres de espacio en blanco . Si hay caracteres no en blanco antes del , los resultados no están definidos.

Cuestiones relacionadas