添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
java代码如下:
            Pattern pattern = Pattern.compile("^.*" + detectRecordRequest.getAddr() + ".*$", Pattern.CASE_INSENSITIVE);
            Criteria c5 = Criteria.where("addr").regex(pattern);
            query.addCriteria(c5);

此段代码如果根据“学院路37号院-211号楼”,“(学院路校区)”等是可以查询到结果,但如果根据全地址查询结果为空,这不符合要求。

原因在哪里呢?

答案是因为此段字符串中包含特殊字符“()”,需要特殊处理。

代码如下:
    //regex对输入特殊字符转义
    private String escapeSpecialWord(String keyword) {
        if (StringUtils.isNotBlank(keyword)) {
            String[] fbsArr = { "\\", "$", "(", ")", "*", "+", ".", "[", "]", "?", "^", "{", "}", "|" };
            for (String key : fbsArr) {
                if (keyword.contains(key)) {
                    keyword = keyword.replace(key, "\\" + key);
        return keyword;
查询代码如下:
            Pattern pattern = Pattern.compile(".*?" + escapeExprSpecialWord(detectRecordRequest.getAddr()) + ".*");
            Criteria c5 = Criteria.where("addr").regex(pattern);
            query.addCriteria(c5);

再次查询 结果符合预期。