我正在尝试在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非常不好并试图让它工作,所以我可以剖析我的查询结果。
答案 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";
}