Regex Perl匹配特殊字符
我试着做一个简单的匹配,比如:Regex Perl匹配特殊字符,regex,perl,special-characters,Regex,Perl,Special Characters,我试着做一个简单的匹配,比如: if ($variable ne '*') { print "Hello"; } 我想匹配所有不等于“*”字符的字符(无引号) 但是我不确定我是否需要在*之前使用反斜杠,或者我是否应该在其他解决方案中使用正斜杠正则表达式表示法。这里最好的解决方案是什么 下面是一个示例代码: if ($var ne '*') { print "it is not a star!"; } else { $var = '*'; print "made $var i
if ($variable ne '*') { print "Hello"; }
我想匹配所有不等于“*”字符的字符(无引号)
但是我不确定我是否需要在*之前使用反斜杠,或者我是否应该在其他解决方案中使用正斜杠正则表达式表示法。这里最好的解决方案是什么
下面是一个示例代码:
if ($var ne '*') { print "it is not a star!"; }
else
{
$var = '*';
print "made $var into a star!"
}
将变量设置为*字符是否正确?如果使用正则表达式匹配,则只需转义“*”字符,但由于使用的是直接比较(使用
ne
),因此代码很好。如果您使用的是正则表达式,那么您会说:
if ($variable !~ /^\*$/) { ... }
但在这种情况下,我认为使用ne
更清晰、更快
为完整起见,您还可以在正则表达式中使用\Q
引用所有元字符,直到遇到\E
。因此:
if ($variable !~ /^\Q***\E$/ { ... }
如果$variable
不等于三个“*”字符,则将计算为true。但是,你最好还是:
if ($variable ne '***') { ... }
不确定您是否正在寻找正则表达式
if ($variable !~ /\*/) { print "Hello"; }
您的意思是如果*不包含在$variable中?如果你没有,那么你所拥有的就可以了。这不是你可以很容易地为自己检查的东西吗<代码>perl-le'$var=“foo”;如果$var ne“*”,请打印“yes”,如果$var ne“*”,请尝试打印“Hello”,您可以尝试运行代码。如果有点模糊,您可能还需要阅读perl和perl运算符中的引号代码>为什么要麻烦检查?这只是一个巨大的过度简化,在这种情况下没有任何意义你是正确的。对不起,我想继续评论,我的代码如下所示: