1

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

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

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

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

这是一个示例代码:

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

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

4

2 回答 2

2

如果您使用正则表达式匹配,您只需要转义“*”字符,但由于您使用的是直接比较(与ne),那么您的代码就可以了。如果您使用的正则表达式,那么您会说:

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

但在这种情况下ne,我想使用起来会更清晰、更快捷。

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

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

如果$variable不等于三个 '*' 字符,则计算结果为 true。但同样,你会更好:

if ($variable ne '***') { ... }
于 2012-05-15T22:24:31.463 回答
0

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

if ($variable !~ /\*/) { print "Hello"; } 
于 2012-05-15T22:26:23.407 回答