Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Perl匹配特殊字符_Regex_Perl_Special Characters - Fatal编程技术网

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运算符中的引号为什么要麻烦检查?这只是一个巨大的过度简化,在这种情况下没有任何意义你是正确的。对不起,我想继续评论,我的代码如下所示: