【问题标题】:Check if pattern exists in a keys of hash [duplicate]检查哈希键中是否存在模式[重复]
【发布时间】:2015-10-13 20:03:29
【问题描述】:

我有以下模式的哈希

my %hash_table(
     23                => someintegertype,
     type              => somestringtype,
     12_someidentifier => someveryproblematictype
);

如何检查12_someidentifier 键遵循的模式是否存在于哈希中?如果是这样,我需要知道truefalse形式的值。

::更新:: 我想检查诸如{[\d]_[\w+]} 之类的正则表达式或模式是否存在?

【问题讨论】:

  • 您缺少= 符号。

标签: regex perl perl-hash


【解决方案1】:

exists 告诉您密钥是否存在。 $hash{$key} 为您提供价值,因此您可以对其进行测试。

如果您希望针对正则表达式测试多个值(例如它们的哈希键),那么该工作的工具是 grep;

my @matches = grep { /\d+_\w+/ } keys %hash_table;
print @matches;

虽然我们正在这样做 - 打开 use strict;use warnings;。从长远来看,它会有所帮助。

【讨论】:

  • 我已经更新了我的问题。
  • 好的。您正在寻找您的密钥中的匹配项 - 该工作的工具是 grep
【解决方案2】:

你可以这样检查:

if (exists $hash_table{$12_someidentifier})
{
        print $12_someidentifier, "\n";
}

【讨论】:

  • 我已经更新了我的问题。
  • 你的模式是关键,在上面的 Perl 中是检查 key 是否存在于哈希中的方法。
  • 以上解决方法会引起活体化。可能无关紧要,但在处理哈希时通常不是一个好主意。
猜你喜欢
  • 1970-01-01
  • 2012-04-05
  • 1970-01-01
  • 2018-03-31
  • 2011-05-19
  • 2011-12-28
  • 2011-05-30
  • 1970-01-01
相关资源
最近更新 更多