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}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
2015-06-12 springmvc @PathVariable("b") double b 丢失精度问题