Pexpect可用于在python中自动执行任务(不需要安装TCL).这个类中最简单的例程之一是'run()'例程.它接受预期问题模式的字典作为键,响应作为值.例如
pexpect.run('scp foo myname@host.example.com:.',events = {'(?i)password':mypassword})
我知道通常'?' 用于表示字符串中前一个文字的0或1次出现(对于正则表达式).但是,在这里,这似乎并不是意思.
专家可以评论一下它是什么吗?
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)标志会更改表达式的解析方式.它应该首先在表达式字符串中使用,或者在一个或多个空格字符之后使用.如果标志前面有非空白字符,则结果未定义.
因此,在这种情况下,字符串是正则表达式,并设置为不区分大小写.
这是 Python 的 re 模块中正则表达式语法的扩展。“i”的意思是“忽略大小写”。这意味着对“密码”进行了不区分大小写的搜索。
来自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) 标志会更改表达式的解析方式。它应该首先在表达式字符串中使用,或者在一个或多个空白字符之后使用。如果标志前有非空白字符,则结果未定义。