正则表达式为字符串和换行符之间的字符串

时间:2015-01-20 21:54:33

标签: regex

好的,我已经阅读了几个小时,无法让我的正则表达式工作。 无论如何我都不能使用群组或处理返回的文字,所以它必须在第一时间做正确的事情。

我需要从这段文字中提取序列号:

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

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

4 个答案:

答案 0 :(得分:1)

没有小组这可能是不可能的,但如果你被允许替换那么你可以尝试一些奇怪的东西,如

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

删除行的开头和任何其他不以S开头的行。不是很优雅,但可能完成工作

答案 1 :(得分:0)

在您的尝试中,您缺少强制“零或更多”的特殊字符,即*或“一个或多个”,即+。试试Serial Number.*: (.+)$

答案 2 :(得分:0)

结果在第一组(\ 1)

中捕获
Serial Number\s*:\s*(.*)

答案 3 :(得分:0)

取决于正则表达式引擎以及是否贪婪等

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

美元应匹配行尾,但在某些引擎中,如果处于某种多行处理模式,可能会匹配模式空间的末尾