【问题标题】:What does (?i) mean in a Python/pexpect regex? [duplicate](?i) 在 Python/pexpect 正则表达式中是什么意思? [复制]
【发布时间】:2019-08-13 21:40:39
【问题描述】:

我试图理解以下代码中重复的 (?i) 语法的含义:

i = self.expect([
  "(?i)are you sure you want to continue connecting",
  original_prompt,
  "(?i)(?:password)|(?:passphrase for key)",
  "(?i)permission denied",
  "(?i)terminal type",
  TIMEOUT,
  "(?i)connection closed by remote host"
], timeout=login_timeout)

【问题讨论】:

  • 顺便说一句,一个较窄的问题不要求对整个语法进行解释,而只是要求对一个特定方面进行解释,通常会更受欢迎。为此,我冒昧地进行了编辑;如果您有更多问题,请随时单独提问。

标签: python regex pexpect pxssh


【解决方案1】:

这记录在 https://docs.python.org/3/library/re.html 中的 (?aiLmsux-imsx:...) 标题下,如下所示:

(?aiLmsux-imsx:...)

aiLmsux 集合中的零个或多个字母,可选地后跟 -,后跟一个或多个来自imsx的字母。)这些字母设置或删除相应的标志:re.A(仅ASCII匹配),re.I(忽略大小写)、re.L(取决于区域设置)、re.M(多行)、re.S(点匹配所有)、re.U(Unicode 匹配)和re.X(详细),用于表达方式。 (标志在模块内容中描述。)

因此,(?i) 是标志的内联版本,否则设置为re.Ire.IGNORECASE;它使匹配不区分大小写,这样permission denied 也可以写成Permission DeniedPERMISSION DENIED,但仍会匹配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-15
    • 2014-12-06
    • 1970-01-01
    • 2011-06-25
    • 2015-07-21
    • 1970-01-01
    • 2023-03-10
    • 2014-09-02
    相关资源
    最近更新 更多