2015-01-20 117 views
-2

好吧,我已经阅读了几个小时,无法让我的正则表达式工作。 我无法使用组或处理返回的文本,所以它必须在第一次拉正确的东西。字符串和换行符之间的字符串的正则表达式

我需要从这段文字拉编号:

Hardware Version     : 0600 
Serial Number      : FOC145183BA 
Product ID       : CTS-CODEC-PRI-G2 

我曾尝试:(Serial Number.*[:])(.*) 但是这给了我“序列号”到文本的末尾。我试过了?的东西,但它只是错误。我通过telnet使用这个思科编解码器,它没有给我任何灵活性。

+0

感谢您的编辑。起初我并没有意识到它是如何切断它的。 – schumacherj 2015-01-20 21:58:33

+0

什么正则表达式版本?非常不同的'sed'和'Perl' – dawg 2015-01-20 22:06:12

+0

不确定,我正在使用Pexpect,一个Python模块。我查看了文档,它只提到它接受正则表达式,但不是它如何编译它。 – schumacherj 2015-01-20 22:09:18

回答

1

没有组这可能是不可能的,但如果允许替换,那么您可以尝试索姆ething怪异像

s/^Serial Number\s*:\s*$|^[^S].*$//g 

删除线的起点,而不是开始S.不惊人的优雅的任何其他线路,但可能完成这项工作

+0

这样做,但你是对的,乍看起来很混乱。 – schumacherj 2015-01-20 22:35:07

0

您错过了试图使用“0或更多”的特殊字符,即*或“一个或多个”,即+。尝试Serial Number.*: (.+)$

0

结果是第一组中的捕获(\ 1)

Serial Number\s*:\s*(.*) 
+0

我无法使用群组。 – schumacherj 2015-01-20 21:59:48

0

取决于正则表达式引擎和

(Serial Number.*[:])(.*)$ 

元是否贪婪等应匹配线的端部,但在一些发动机可能匹配模式空间的末尾,如果它处于某种多线处理模式下