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}
复制代码

 

posted @   荣超  阅读(299)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
历史上的今天:
2015-06-12 springmvc @PathVariable("b") double b 丢失精度问题
点击右上角即可分享
微信分享提示