@Test
    public void matchSpec() {
        final String uriPath = "/a/b/c/**";
        final String uriPath1 = "/a/*/c/**";
        final String uriPath2 = "/a/*/*/{d}";
        final String uriPath3 = "/a/*/{c}/{d}";
        ConditionData conditionData = new ConditionData();
        conditionData.setParamType(ParamTypeEnum.URI.getName());
        conditionData.setOperator(OperatorEnum.MATCH.getAlias());
        conditionData.setParamName("/");
        conditionData.setParamValue(uriPath);
        
        ConditionData conditionData1 = new ConditionData();
        conditionData1.setParamType(ParamTypeEnum.URI.getName());
        conditionData1.setOperator(OperatorEnum.MATCH.getAlias());
        conditionData1.setParamName("/");
        conditionData1.setParamValue(uriPath1);

        ConditionData conditionData2 = new ConditionData();
        conditionData2.setParamType(ParamTypeEnum.URI.getName());
        conditionData2.setOperator(OperatorEnum.MATCH.getAlias());
        conditionData2.setParamName("/");
        conditionData2.setParamValue(uriPath2);

        ConditionData conditionData3 = new ConditionData();
        conditionData3.setParamType(ParamTypeEnum.URI.getName());
        conditionData3.setOperator(OperatorEnum.MATCH.getAlias());
        conditionData3.setParamName("/");
        conditionData3.setParamValue(uriPath3);

        RuleData ruleData = RuleData.builder()
                .id("1")
                .pluginName("test")
                .selectorId("1")
                .name("test-plugin-rule")
                .enabled(true)
                .conditionDataList(Arrays.asList(conditionData, conditionData1, conditionData2, conditionData3))
                .build();
        shenyuAntPathTrie.putNode(Arrays.asList(uriPath, uriPath1, uriPath2, uriPath3), ruleData, TrieCacheTypeEnum.RULE);
        
        Assertions.assertEquals(shenyuAntPathTrie.match("/a/b/c/d/e/f", "1").getFullPath(), uriPath);
        Assertions.assertEquals(shenyuAntPathTrie.match("/a/g/c/e/ef/hi", "1").getFullPath(), uriPath1);
        Assertions.assertEquals(shenyuAntPathTrie.match("/a/g/hi/def", "1").getFullPath(), uriPath2);
        Assertions.assertEquals(shenyuAntPathTrie.match("/a/gh/ij/klm", "1").getFullPath(), uriPath2);
        Assertions.assertNotEquals(shenyuAntPathTrie.match("/a/egh/fij/klm", "1").getFullPath(), uriPath3);
    }
", ruleData, TrieCacheTypeEnum.RULE);
        Assertions.assertNotNull(shenyuAntPathTrie.match("/a/b/c/d/e/f", "1"));

        shenyuAntPathTrie.putNode("/a/b/*
shenyu-plugin/shenyu-plugin-base/src/test/java/org/apache/shenyu/plugin/base/trie/ShenyuRuleTrieTest.java