过滤匹配正则表达式($)
的地图的方法:
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结果。我认为我的正则表达式不正确?
答案 0 :(得分:2)
$
和()
在正则表达式中具有特殊含义,应该转义以匹配其原始字符:
\\(\\$.*?\\)