好的,我已经阅读了几个小时,无法让我的正则表达式工作。 无论如何我都不能使用群组或处理返回的文字,所以它必须在第一时间做正确的事情。
我需要从这段文字中提取序列号:
Hardware Version : 0600
Serial Number : FOC145183BA
Product ID : CTS-CODEC-PRI-G2
我试过了:(Serial Number.*[:])(.*)
但这给了我文本末尾的“序列号”。我试过了吗?事情,但它只是错误。我通过telnet使用这个到cisco编解码器,它没有给我任何灵活性。
答案 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.*[:])(.*)$
美元应匹配行尾,但在某些引擎中,如果处于某种多行处理模式,可能会匹配模式空间的末尾