匹配的正则表达式可能包含($)

时间:2016-03-16 15:00:26

标签: java regex

过滤匹配正则表达式($)的地图的方法:

public Map getVariables(Map<String , String> nvp){

        Map map = nvp.entrySet().parallelStream()
                .filter(e -> e.getKey().matches("(($.*?))"))
                .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));

        return map;

    }

设置包含键/值“($ test)”,“测试值”的地图:

private Map<String , String> nvp = new HashMap<String , String>();
public void setup(){
    nvp.put("($test)", "test value");
}

添加一个方法来测试“($ test)”包含在返回的地图中:

public void testGetVariables(){

    OpDocVariableInsert o = new OpDocVariableInsert();
    System.out.println(o.getVariables(nvp).size());
}

但返回0结果。我认为我的正则表达式不正确?

1 个答案:

答案 0 :(得分:2)

$()在正则表达式中具有特殊含义,应该转义以匹配其原始字符:

\\(\\$.*?\\)