2012-07-18 56 views
-3

我正在寫一個驅動程序來處理來自我登錄的終端的特定類型的提示。Python正則表達式引擎和模式中的括號

在駕駛員的代碼尋找從所述設備接收的特定圖案,以知道何時發送其他命令或退出等

在驅動器中的代碼取圖案爲正則表達式。我已經嘗試了正則表達式的模式的許多不同組合,以處理此提示'(Cisco Controller) >',但無濟於事。我試圖擺脫括號'\(Cisco Controller\)\s*>',我試過用原始字符串 r'\(Cisco Controller\)\s*>',並且我嘗試了多種其他組合,但通常最終會出現「不平衡括號」或「僞裝轉義字符」的錯誤。爲什麼我不能讓正則表達式引擎接受這種模式?

+0

對不起,我從實際模式中複製了文本,並插入了我實際使用的反斜槓來嘗試並跳過括號。 '\(Cisco Controller \)\ s *>'和r''\(Cisco Controller \)\ s *>' – 2012-07-18 12:35:38

+0

哇,當我將圖案粘貼到回覆框中時,它將刪除反斜槓。有趣。無論如何,我已經在左右括號和使用原始字符串之前嘗試了一個反斜槓。 – 2012-07-18 12:37:17

+0

(編輯問題以正確顯示代碼) – geoffspear 2012-07-18 12:39:06

回答

1

我沒有看到你發佈的字符串的原始版本沒有錯......當在字符串'(Cisco Controller) > Command to execute would be here'上測試它似乎匹配得很好。

Python 2.6.8 (unknown, Jun 9 2012, 11:30:32) 
[GCC 4.5.3] on cygwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import re 
>>> regex = re.compile(r'\(Cisco Controller\)\s*>') 
>>> match = regex.search('(Cisco Controller) > Command to execute would be here') 
>>> match 
<_sre.SRE_Match object at 0x7ff3e720> 
>>> 
+0

好吧,它需要正則表達式,但是當它在運行時從驅動程序加載正則表達式時,會出現錯誤「不平衡小括號」或「虛假轉義字符」。我對Python很新,所以請原諒我的無知。 – 2012-07-18 13:14:11

+1

什麼驅動程序?如果這是你正在寫的東西,你可以向我們提供一個代碼示例,以瞭解你從哪裏「加載驅動程序的正則表達式」?你需要給我們一些關於你在做什麼的具體信息,否則這是我能爲你做的最好的 – EEP 2012-07-18 13:22:47

+0

好吧,我得到了它的工作。如果我像這樣運行regex'[re.compile(r'\(Cisco Controller \)\ s *>',re.I)]''而不是像這樣're.compile(r'\(Cisco Controller \)) \ s *>',re.I)'它的工作原理。所以,感謝大家提供了一些反饋意見。我用正則表達式將我的頭髮拉出來,並且確認正則表達式模式是準確的,至少促使我在別處尋找問題,所以非常感謝。 – 2012-07-18 14:42:31