使用Regex替换Perl中唯一的字符串

时间:2012-09-12 18:06:23

标签: regex perl

我正在尝试在Perl中编写此脚本,以从我的查询结果中检查变量$ summary中的唯一字符串。有这样的多个类似条目,但它们中的一部分是唯一的(db1node1web1可以是不同的节点,但结果类型相同)。这只是代码的一小部分,用于检查我是否正确使用了Reg Ex(当前不是真的)。​​

我包含以下代码:

$summary = "NFW - CRITICAL CPU_Load_db1node1web1 CRITICAL - load average: 114.49, 48.55, 29.17 Sept 01 00:10:16 PDT 2012";
if ( $summary =~ "NFW - CRITICAL CPU_Load_[a-z]* CRITICAL - load average: 114.49, 48.55, 29.17 Sept 01 00:10:16 PDT 2012") {
    print "True\n";
}else {
    print "False\n";
}

我对Perl非常不好并试图让它工作,所以我可以剖析我的查询结果。

4 个答案:

答案 0 :(得分:3)

如果您只需匹配子字符串,则只指定,例如

$summary =~ /NFW - CRITICAL CPU_Load_/

答案 1 :(得分:2)

我用perl编写了几年,但是IIRC,你不必指定它是匹配还是替换?而且你需要包含数字

我相信你的代码应该是:

$summary = "NFW - CRITICAL CPU_Load_db1node1web1 CRITICAL - load average: 114.49, 48.55, 29.17 Sept 01 00:10:16 PDT 2012";
if ( $summary =~ m/NFW - CRITICAL CPU_Load_[a-z0-9]* CRITICAL - load average: 114.49, 48.55, 29.17 Sept 01 00:10:16 PDT 2012/) {
    print "True\n";
}else {
    print "False\n";
}

参考:http://www.troubleshooters.com/codecorn/littperl/perlreg.htm

答案 2 :(得分:0)

[a-z]不包含数字。您的示例字符串包含多个1。将课程调整为

[a-z0-9]

答案 3 :(得分:0)

您需要使用斜杠来引用正则表达式而不是双引号。此外,您的输入db1node1web1包含数字和字符:

if ( $summary =~ /NFW - CRITICAL CPU_Load_[a-z0-9]* CRITICAL - load average: 114.49, 48.55, 29.17 Sept 01 00:10:16 PDT 2012/) {

  print "True\n";

}else {

  print "False\n";

}