regex 如何检查单个字符是否与预定字符之一匹配?

pkln4tw6  于 2023-03-04  发布在  其他
关注(0)|答案(1)|浏览(126)

我正在尝试做一个计算器(细节在这个例子中不重要)。我需要检查一个字符是否用于操作匹配预定义的操作之一(+,-,/和 *)和单独的操作(neg,abs)。我不是很擅长正则表达式,但这里是我尝试:

if($operation =~ /[+\-*\/]/){
    ...
}elsif($operation =~ m/(neg|abs)/){
    ...
}

程序只是在理论上应该做操作的时候跳过这些。提前感谢!

js81xvg6

js81xvg61#

我可能会把这些放在一个hash中,然后用exists检查,如果hash值是你想要的操作,那就更好了:

my $things = (
    '+' => sub ($n, $m) { $n + $m },
    ...
    'neg' => sub ($n) { -$n },
    'abs' => sub ($n) { abs($n) },
    };

if( exists $operations{$op} ) {
    $operations{$op}->(@operands);
    }
else { ... }

相关问题