Java:基于正则表达式搜索HashMap键吗?

我正在使用HashMap构建同义词库来存储同义词。

我正在尝试根据正则表达式搜索单词:该方法将必须将字符串作为参数并返回结果数组。这是我的第一个方法:

public ArrayList<String> searchDefinition(String regex) {

ArrayList<String> results = new ArrayList<String>();

Pattern p = Pattern.compile(regex);

Set<String> keys = thesaurus.keySet();

Iterator<String> ite = keys.iterator();

while (ite.hasNext()) {

String candidate = ite.next();

Matcher m = p.matcher(candidate);

System.out.println("Attempting to match: " + candidate + " to " + regex);

if (m.matches()) {

System.out.println("it matches");

results.add(candidate);

}

}

if (results.isEmpty()) {

return null;

}

else {

return results;

}

}

现在,这不符合我的预期(或者我使用的正则表达式不正确)。如果我在哈希图中具有以下键:

cat, car, chopper

然后打电话searchDefinition("c")searchDefinition("c*")我得到null

  1. 我如何使这项工作按预期进行?
  2. 是否有比HashMap更好的数据结构来保留graph同义词库所需的类似数据?(仅出于好奇,对于此任务,我们被要求使用Java Collection Map)。
  3. 我在上面的代码中不适当地做了什么?

谢谢,丹

编辑:我已更正示例。即使我使用正确的大小写也不起作用。

回答:

您需要指定不区分大小写的Pattern.compile

(

"c",Pattern.CASE_INSENSITIVE

)。要查找其中包含a的单词,c您需要使用matcher.find()。Matcher.matches()尝试匹配整个字符串。

以上是 Java:基于正则表达式搜索HashMap键吗? 的全部内容, 来源链接: utcz.com/qa/414418.html

回到顶部