2008-10-21 71 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)標誌更改了表達式的解析方式。它應該首先在 字符串中使用,或者在一個或多個 空白字符後使用。如果 標誌之前有 非空白字符,則結果未定義。

相關問題