Perl匹配特殊字符

时间:2012-05-15 22:13:29

标签: regex perl special-characters

我正在尝试做一个简单的匹配,如:

if ($variable ne '*') { print "Hello"; }

我希望匹配不等于“*”字符的所有内容(无引号)

但是我不确定是否需要在*之前使用反斜杠,或者如果我应该使用正斜杠正则表达式,我会看到其他解决方案。这里最好的解决方案是什么?

以下是示例代码:

if ($var ne '*') { print "it is not a star!"; }
else 
{ 
    $var = '*';
    print "made $var into a star!"
}

将变量设置为*字符是否正确?

2 个答案:

答案 0 :(得分:2)

如果您使用正则表达式匹配,则只需要转义'*'字符,但由于您使用的是直接比较(使用ne),因此您的代码很好。如果 使用正则表达式,那么你会说:

if ($variable !~ /^\*$/) { ... }

但是在这种情况下,使用ne更清晰,更快,我想。

为了完整性,您还可以在正则表达式中使用\Q来引用所有元字符,直到遇到\E为止。所以:

if ($variable !~ /^\Q***\E$/ { ... }
如果$variable不等于三个'*'字符,

将评估为true。但同样,你会更好:

if ($variable ne '***') { ... }

答案 1 :(得分:0)

不确定您是否正在寻找正则表达式。

if ($variable !~ /\*/) { print "Hello"; }