正则表达式选择两个单词并修剪其他所有内容

时间:2013-10-16 18:37:20

标签: regex perl

我有这样的一行

 SNMPv2-SMI::enterprises.6889.2.69.5.1.58.0 = IpAddress: 10.169.130.48 SNMPv2-SMI::enterprises.6889.2.69.5.1.52.0 = STRING: "999" 

我希望选择ip地址(10.169.130.48)和字符串输出(999)并修剪其他所有内容,我正在使用此代码。

/.*\s=\sIpAddress:\s(\d+\.\d+\.\d+\.\d+)\sSNMPv2-SMI.*\s=\sSTRING:\s\"(\d+)\"/

但我只得到10.169.130.48而不是字符串输出。我的问题是我不能用两个()来选择我想要的东西?另一种选择是什么?

3 个答案:

答案 0 :(得分:1)

你的正则表达式很好。唯一的事情是,在Perl中你不需要转义双引号字符。由于正斜杠符号不被解释为字符串。

您可以通过$ 2

访问第二次捕获

答案 1 :(得分:1)

你的正则表达式是正确的,你只是错过了结果。 Check this out寻求解决方案!

答案 2 :(得分:0)

以下正则表达式适用于Javascript:

var s = 'SNMPv2-SMI::enterprises.6889.2.69.5.1.58.0 = IpAddress: 10.169.130.48 SNMPv2-SMI::enterprises.6889.2.69.5.1.52.0 = STRING: "999"'

var m = s.match(/\bIpAddress:\s*([^\s]+).*?\bSTRING:\s*([^\s]+)/);
// m[1] = 10.169.130.48
// m[2] = "999"