wjbk

导航

mongo模糊查询,带有特殊字符需要转义

/**
* 转义正则特殊字符 ($()*+.[]?\^{},|)
*
* @param keyword
* @return
*/
public static String escapeExprSpecialWord(String keyword) {
  String[] fbsArr = { "\\", "$", "(", ")", "*", "+", ".", "[", "]", "?", "^", "{", "}", "|" };
  for (String key : fbsArr) {
    if (keyword.contains(key)) {
      keyword = keyword.replace(key, "\\" + key);
    }
  }
  return keyword;
}



  Criteria criteria = new Criteria();

  //项目名称
  if (!ObjectUtils.isEmpty(mixingStationProductionRequesJson.getFgcmc())) {
    // criteria.and("fgcmc").regex(".*?" + mixingStationProductionRequesJson.getFgcmc() + ".*?");
    //项目名称中带(),造成检测不出来 将括号用反斜杠"\"进行转义 \(
    String name=escapeExprSpecialWord(mixingStationProductionRequesJson.getFgcmc());
    criteria.and("fgcmc").regex("^.*"+name+".*$");
  }
  Query query = Query.query(criteria);
  List<MixingStationRealDataVo> list = mongoTemplate.find(query,MixingStationRealDataVo.class);

 

 

posted on 2022-11-29 10:58  wjbk  阅读(284)  评论(0)    收藏  举报