python正则表达式中'(?i)密码'的含义是什么?

时间:2008-10-21 16:29:52

标签: python regex pattern-matching

Pexpect可用于在python中自动执行任务(不需要安装TCL)。这个类中最简单的例程之一是'run()'例程。它接受预期问题模式的字典作为键,响应作为值。例如

pexpect.run('scp foo myname@host.example.com:。',events = {'(?i)password':mypassword})

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

专家可以评论它是什么吗?

2 个答案:

答案 0 :(得分:9)

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)标志会改变方式   解析表达式。它应该是   首先在表达式字符串中使用,   或者在一个或多个空格之后   字符。如果有   之前的非空格字符   标志,结果未定义。

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

答案 1 :(得分:4)

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

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

  

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

     

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