2008-10-21 69 views
5

Pexpect可用于在python中自动执行任务(不需要安装TCL)。这个类最简单的例程之一就是'run()'例程。它接受预期问题模式的字典作为键和作为值的响应。例如python正则表达式中'(?i)password'的含义是什么?

pexpect.run( 'SCP富[email protected] :.',事件= { '(我)的密码?':输入mypassword})

我知道,通常是 '?'用于表示字符串中的前一个字面量出现0次或1次(对于正则表达式)。但是,在这里,这似乎并不意味着什么。

专家可以评论这是什么?

回答

8

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

(?...)这是一个扩展 符号(一个 “?” 之后的 “(” 不 否则有意义)。第一 的 “?” 确定后字符。 的 的意义,并进一步语法结构是什么扩展通常 不创建新组; (ΔP...)是唯一的例外 这个规则下面是当前 支持的扩展

(?iLmsux)(来自 的一个或多个字母集合“i”,“L”,“m”,“s”,“u”,“x”) 该组匹配空字符串; 这些字母为整个常规 表达式设置相应的 标志(re.I,re.L,re.M,re.S,re.U, re.X)。如果您希望 将标志作为 正则表达式的一部分包含在内,而不是将 标志参数传递给compile() 函数,那么这非常有用。

请注意,(?x)标志更改了表达式的解析方式 。应该是 首先在表达字符串中使用, 或者一个或多个空格 之后的字符。如果 标志之前有 非空白字符,则结果未定义。

所以在这种情况下,字符串是一个正则表达式,并设置为不区分大小写。

4

这是Python re模块中正则表达式语法的扩展。 “我”意味着“忽略案件”。这意味着对“密码”进行不区分大小写的搜索。

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

(?iLmsux) (从该组的 “i”, “L”, “M”, “S”, “U”, “X” 的一个或多个字母。) 组匹配空字符串; 字母为整个正则表达式设置相应的标志 (re.I,re.L,re.M,re.S,re.U,re.X) 。 如果您希望将 标志包含为常规 表达式的一部分,而不是将标志 参数传递给compile()函数,这非常有用。

请注意,(?x)标志更改了表达式的解析方式。它应该首先在 字符串中使用,或者在一个或多个 空白字符后使用。如果 标志之前有 非空白字符,则结果未定义。

相关问题