我正在尝试做一个简单的匹配,如:
if ($variable ne '*') { print "Hello"; }
我希望匹配不等于“*”字符的所有内容(无引号)
但是我不确定是否需要在*之前使用反斜杠,或者如果我应该使用正斜杠正则表达式,我会看到其他解决方案。这里最好的解决方案是什么?
以下是示例代码:
if ($var ne '*') { print "it is not a star!"; }
else
{
$var = '*';
print "made $var into a star!"
}
将变量设置为*字符是否正确?
答案 0 :(得分:2)
如果您使用正则表达式匹配,则只需要转义'*'字符,但由于您使用的是直接比较(使用ne
),因此您的代码很好。如果 使用正则表达式,那么你会说:
if ($variable !~ /^\*$/) { ... }
但是在这种情况下,使用ne
更清晰,更快,我想。
为了完整性,您还可以在正则表达式中使用\Q
来引用所有元字符,直到遇到\E
为止。所以:
if ($variable !~ /^\Q***\E$/ { ... }
如果$variable
不等于三个'*'字符,将评估为true。但同样,你会更好:
if ($variable ne '***') { ... }
答案 1 :(得分:0)
不确定您是否正在寻找正则表达式。
if ($variable !~ /\*/) { print "Hello"; }