我的代码是
$wrk = OC192-1-1-1;
@temp = split (/-/, $wrk);
if ($temp1[3] =~ /101 || 102 /)
{
print "yes";
} else {
print "no";
}
输出:
yes
需要知道为什么这是打印是的。我知道OR运算符支持正则表达式|
。但需要知道为什么||
正在给予"是"作为输出
答案 0 :(得分:9)
这是因为||
将通过始终与任何内容匹配来使正则表达式匹配成功。
所以它实际上是匹配$temp1[3]
(不存在)与以下任何人
"101 "
""
" 102 "
我添加双引号只是为了解释。
答案 1 :(得分:7)
/101 || 102 /
正则表达式尝试匹配'101 '
或''
(空字符串)或' 102 '
。
由于空字符串始终可以匹配,因此在您的条件中它始终返回true。
答案 2 :(得分:3)
除了来自@anubhava的正则表达式相关答案之外,请注意:OC192-1-1-1
与0-1-1-1
相同,只是"-3"
,因此@temp
计算为{ {1}}
当然,没有( "", "3" )