0

我有这样一条线

 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 而不是输出的字符串。我的问题是我不能使用两个 () 来选择我想要的?另一种选择是什么?

4

3 回答 3

1

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

您可以通过 $2 访问第二次捕获

于 2013-10-16T18:46:35.517 回答
1

您的正则表达式是正确的,您只是错过了结果。查看此解决方案!

于 2013-10-16T18:56:15.860 回答
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"
于 2013-10-16T18:44:52.220 回答