java 检查字符串是否包含多个关键字

该内容主要用于数组和字符串,需求数组中设置关键字,判断字符串是否匹配,这里我用了正则表达式来匹配

第一种形式:是我自定义的正则表达式,这种方法是比较原始的拼接方式

public static void main(String[] args) {
         String exp = "(?=.*";
         String[] split = {"2021", "中国"};
         if (split != null && split.length > 0) {
             for (String str : split) {
                 if (split.length > 1) {
                     exp += str + ")(?=.*";
                 } else {
                     exp += str;
                 }
             }
             // 去掉最后几个连接符
             if (split.length > 1) {
                 exp = exp.substring(0, exp.length() - 6);
             }
             exp += ")^.*$";
             System.out.println(exp);
             String ret = "2021年将迎来中国*建党100周年";
             Pattern p = Pattern.compile(exp);
             Matcher m = p.matcher(ret);
             if (m.matches()) {
                 System.out.println("匹配:" + m.matches());
             } else {
                 System.out.println("不匹配" + m.matches());
             }
         }

    }

结果:java 检查字符串是否包含多个关键字

如果数组split中有一个内容是错误的,就会返回false

第二种形式:使用StringBuilder来拼接正则表达式,这里我使用错误内容来演示

public static void main(String[] args) {
        String ret = "2021年将迎来中国*建党100周年";
        String[] split = {"2020", "中国"};
        StringBuilder regexp = new StringBuilder();
        for (String str : split) {
            regexp.append("(?=.*").append(str).append(")");
        }
        System.out.println(regexp.toString());
        Pattern pattern = Pattern.compile(regexp.toString());
        System.out.println("结果:" + pattern.matcher(ret).find());

    }

java 检查字符串是否包含多个关键字

这两种形式都可以匹配关键字。这里我要说明一下,为什么不使用contains方法,因为这个方法只能匹配部分,也就是只要有一个关键字符合,那么这个句话就是true,而我需要每一条都符合,所以不能使用,这也是完全匹配和部分匹配的区别。

上一篇:正则表达式快速入门


下一篇:贝叶斯线性回归|机器学习推导系列(二十三)