2012-07-18 57 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