Regex 我在这个Perl搜索字符串中缺少了什么来匹配它?

Regex 我在这个Perl搜索字符串中缺少了什么来匹配它?,regex,perl,Regex,Perl,我有一个很大的文件,里面充满了我想从中解析出特定数据的文本行。我想要的数据样本行是: results: IF-MIB::ifInOctets.9 = Counter32: 23212027 其中计数器32的值更改,if*.Octets.\d更改。如果需要,我不介意需要多个“if”语句来获取数据,但我无法确定我缺少了什么。我已经检查了perl参考文档和regex帮助文档,但看不到缺少什么 以下是我所拥有的示例(其基本形式适用于我正在从事的其他项目): 我尝试在if($line=~“”)位置

我有一个很大的文件,里面充满了我想从中解析出特定数据的文本行。我想要的数据样本行是:

results:    IF-MIB::ifInOctets.9 = Counter32: 23212027
其中计数器32的值更改,if*.Octets.\d更改。如果需要,我不介意需要多个“if”语句来获取数据,但我无法确定我缺少了什么。我已经检查了perl参考文档和regex帮助文档,但看不到缺少什么

以下是我所拥有的示例(其基本形式适用于我正在从事的其他项目):

我尝试在if($line=~“”)位置中使用以下行,我确信我遗漏了一些简单的内容,但找不到它是什么:

/result(.*)ifOut(.*) = counter32/i
/result.*ifOut.* = counter32: (\d*)/i
/result.*IF-MIB::ifOut.*(\d*) = counter32: (\d*)/i
我这里有一个用于通过grep进行测试的Mac,它使用以下表单成功返回结果:

grep -i "result.*ifOutOctets.* = counter32" fileName

在Perl中,不引用正则表达式。更正代码为:

my $line = $_;
if ($line =~ /result.*ifOutOctets\.6.* = counter32/i)
{
    # do whatever
}

我认为@Andrew有,但我注意到您的示例包含
IFinocts
,并且您的模式包含
ifOutOctets
。这是一个剪切粘贴错误吗?另外,输入中的后缀是.9,搜索表达式中的后缀是.6。我相信这是您所需要的,但为了扩展它以获得所需内容,我相信您需要:
if($line=~/^result.*.ifOutOctets\(\d+)=counter32:(\d+)/I
谢谢,安德鲁!成功了;对不起,我的支票上没看到。Justin Morgan和beny23,感谢您在我的示例数据中发现我的打字错误。我将尝试在我的原始帖子中解决这个问题(如果不是的话,是的,这是一个复制/粘贴/从错误的位置读取的错误,我认为我已经检查了以确保不在那里)。
my $line = $_;
if ($line =~ /result.*ifOutOctets\.6.* = counter32/i)
{
    # do whatever
}