java 正则简单使用

查找是否包含字串 查询是否包含 #{name} 片段 这里有包含所以返回true

String context = "select * from t_user where (name = #{name} or username = #{name}) and age > #{age}";
String regex = ".*#\\{name\\}.*";
boolean is = Pattern.matches(regex,context);

匹配所有    #{任何内容}

String context = "select * from t_user where (name = #{name} or username = #{name}) and age > #{age}";
//String regex = "\\{([^}]*)\\}";
String regex = "#\\{(.*?)\\}";
//创建 Pattern 对象
Pattern r = Pattern.compile(regex);
//创建 Matcher 对象
Matcher m = r.matcher(context);
while (m.find()){
     System.out.println(m.group() + "=" + m.group(1));
}

输出内容为

#{name}=name
#{name}=name
#{age}=age

 

匹配和替换

Map<String,Object> param = new HashMap<>();
        param.put("name","张三");
        param.put("age",28);
        String context = "select * from t_user where (name = #{name} or username = #{name}) and age > #{age}";
        //String regex = "\\{([^}]*)\\}";
        String regex = "#\\{(.*?)\\}";
        System.out.println(regex);
        //创建 Pattern 对象
        Pattern r = Pattern.compile(regex);
        //创建 Matcher 对象
        Matcher m = r.matcher(context);
        StringBuffer sb = new StringBuffer();
        int i = 0;
        Map<Integer,Object> params = new HashMap<>();
        while (m.find()){
            i++;
            System.out.println(m.group() + "=" + m.group(1));
            m.appendReplacement(sb,"?");
            params.put(i,param.get(m.group(1)));
        }
        m.appendTail(sb);
        System.out.println(sb);//select * from t_user where (name = ? or username = ?) and age > ?
        System.out.println(params);//{1=张三, 2=张三, 3=28}

 

转载于:https://www.cnblogs.com/rchao/p/11011528.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值