diff --git a/metafacture-commons/src/main/java/org/metafacture/commons/tries/SimpleRegexTrie.java b/metafacture-commons/src/main/java/org/metafacture/commons/tries/SimpleRegexTrie.java index 7cd49a7b5..2284eeb87 100644 --- a/metafacture-commons/src/main/java/org/metafacture/commons/tries/SimpleRegexTrie.java +++ b/metafacture-commons/src/main/java/org/metafacture/commons/tries/SimpleRegexTrie.java @@ -28,8 +28,11 @@ */ public class SimpleRegexTrie

{ + // Non-empty character class, containing non-[] characters, e.g. + // matches: `lit-[A]`, `lit-[AB]`, does not match: `a[].1`, `a[].1.b[].1` + public static final String SIMPLE_CHARACTER_CLASS = ".*\\[[^\\[\\]]+\\].*"; + private final WildcardTrie

trie; - public static final String SIMPLE_CHARACTER_CLASS = "\\[.+\\]"; public SimpleRegexTrie() { trie = new WildcardTrie

(); @@ -43,7 +46,7 @@ public SimpleRegexTrie() { * @param value value to associate with the key pattern */ public void put(final String keys, final P value) { - if (keys.matches(".*" + SIMPLE_CHARACTER_CLASS + ".*")) { + if (keys.matches(SIMPLE_CHARACTER_CLASS)) { int charClassStart = keys.indexOf('[', 0); final int charClassEnd = keys.indexOf(']', 1); String begin = keys.substring(0, charClassStart); diff --git a/metafacture-commons/src/test/java/org/metafacture/commons/tries/SimpleRegexTrieTest.java b/metafacture-commons/src/test/java/org/metafacture/commons/tries/SimpleRegexTrieTest.java index 6c501c76f..65e771ca4 100644 --- a/metafacture-commons/src/test/java/org/metafacture/commons/tries/SimpleRegexTrieTest.java +++ b/metafacture-commons/src/test/java/org/metafacture/commons/tries/SimpleRegexTrieTest.java @@ -41,7 +41,8 @@ public void testWithSimpleCharacterClass() { public void testWithEmptyCharacterClass() { final SimpleRegexTrie trie = new SimpleRegexTrie(); // Should not be treated as character class (used for JSON arrays): - trie.put("a[].1", "value"); - assertTrue("Expecting to find: a[].1", trie.get("a[].1").size() == 1); + final String key = "a[].1.b[].1"; + trie.put(key, "value"); + assertTrue("Expecting to find: " + key, trie.get(key).size() == 1); } }