regex - 比较两个带有 If-Statement 的正则表达式失败

标签 regex perl compare

我想在 perl 中比较两个正则表达式,但失败了:

Use of uninitialized value in numeric eq <==> at [... datafile & row]. Argument [different regex!] isn't numeric in numeric eq <==> [...]



当值不存在时,我想将正则表达式存储在数组中。
因此,我将当前的正则表达式 (tmpvar) 与数组中的所有元素进行比较。

一般有可能还是我必须使用变通方法?
$pass = new String::Random;
my $array_counter=0;

my @regex_array = ();

push(@regex_array, $pass->randregex($regex_from_file));

#print "@regex_array";
$array_counter++;

while ($array_counter != $anzahl_regex)
{

    print $array_counter;
    my $tmpvar = $pass->randregex($regex_from_file);
    my $tmpcheck = 0;
    my $tmparraylength = scalar (@regex_array);

    for ($i=0; $i<= $tmparraylength ;$i++)
    {

        if ($tmpvar == $regex_array[$i]) # ERROR
        {
            $tmpcheck =1;
        }
    }



    if ($tmpcheck == 0) # es wurde kein duplikat gefunden
    {
        push(@regex_array,$tmpvar);
        $arraycounter++;
    }

    $arraycounter++;

}

最佳答案

==用于比较数字。使用 eq比较字符串:

if ($tmpvar eq $regex_array[$i]) 

此外,您将超出 regex_array 的末尾在你的 for 循环中:
for ($i=0; $i < $tmparraylength ;$i++)
              ^ this must not be <=

最后,你做的工作太多了。使用散列,它会自动“删除重复的键”。
my %temp_hash;
while (scalar(keys %temp_hash) < number_of_things_you_want) {
  $temp_hash{$pass->randregex($regex_from_file)}++;
}
@regex_array = keys %temp_hash;

关于regex - 比较两个带有 If-Statement 的正则表达式失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7754717/

相关文章:

PHP Regex 获取 youtube 视频 ID?

regex - linux + 不规则表达式查找机制(查找命令)或 perl

perl - 将 0 作为命令行参数传递的问题

python - 比较两个不同大小的数组 - python numpy

regex - Perl RegEx 非捕获组在组内具有替代捕获

javascript - 用于在用户键入时自动格式化电话字段的正则表达式

php 使用 mysql 数据库检查和验证表单输入

java - 比较两个数组的任何相似值

python - Python 方程替换中的正则表达式

perl - 为什么将 6 天 7½ 小时添加到午夜会导致 8 :30?