java 正则 贪婪匹配 匹配sql语句中的引号内容
public class Demo {
public static void main(String[] args) {
String sql1 = "use test;select * from default.abc where dt='abc;faf;fff' and ct=\"2012;43\" ; ";
sql1 = "select * from aaa where dt= '20 ;12; 34;3' AND name='fafae; fa ; a'";
//配置“” 或 ‘’ 里的内容
Pattern p1 = Pattern.compile("'.*'|\".*\"");//贪婪匹配
Matcher m1 = p1.matcher(sql1);
String replace1 = null;
while (m1.find()) {
// 贪婪匹配 group= '20 ;12; 34;3' AND name='fafae; fa ; a'
String group = m1.group();
if (group.contains(";")) {
replace1 = sql1.replace(group, "'PLACEHOLDER'");
sql1 = replace1;
}
}
System.out.println("贪婪匹配" + sql1);
String sql2 = "select * from aaa where dt= '20 ;12; 34;3' AND name='fafae; fa ; a'";
//配置“” 或 ‘’ 里的内容
Pattern p2 = Pattern.compile("'.*?'|\".*?\"");//非贪婪匹配
Matcher m2 = p2.matcher(sql2);
String replace2 = null;
while (m2.find()) {
// 第一次匹配 group '20 ;12; 34;3'
// 第二次匹配 group 'fafae; fa ; a'
String group = m2.group();
if (group.contains(";")) {
replace2 = sql2.replace(group, "'PLACEHOLDER'");
sql2 = replace2;
}
}
System.out.println("非贪婪匹配" + sql2);
}
}
结果:
贪婪匹配 select * from aaa where dt= 'PLACEHOLDER'
非贪婪匹配select * from aaa where dt= 'PLACEHOLDER' AND name='PLACEHOLDER'
java 正则 贪婪匹配 匹配sql语句中的引号内容的更多相关文章
- COMMENT方法 用于在生成的SQL语句中添加注释内容,
COMMENT方法 用于在生成的SQL语句中添加注释内容,例如: $this->comment('查询考试前十名分数') ->field('username,score') ->li ...
- sql语句中包含引号处理方法
1. 背景 在使用Python脚本向数据库导入日志文件时候,突然报错. 2. 解决思路 查看messages文件,发现有一条语句里包含单引号. 查看sql语句,是使用单引号标注str类型. 3. 得出 ...
- sql语句中charindex的用法 可用于截取字符串
使用CHARINDEX和PATINDEX函数来搜索文字列和字符串.这两个函数是如何运转的,解释他们的区别.同时提供一些例子,通过这些例子,你可以可以考虑使用这两个函数来解决很多不同的字符搜索的问题. ...
- SQL点滴35—SQL语句中的exists
原文:SQL点滴35-SQL语句中的exists 比如在Northwind数据库中有一个查询为 SELECT c.CustomerId,CompanyName FROM Customers c WHE ...
- SQL语句中过滤条件放在on和where子句中的区别和联系
摘要: 介绍在多表关联SQL语句中,过滤条件放在on和where子句中的区别--inner join中没区别,外连接就不一样. 综述 蚂蚁金服的一道SQL面试题如下:SQL语句中,过滤条件放在on ...
- SQL语句中过滤条件放在on、where、having的区别和联系
摘要:SQL语句中,过滤条件放在不同筛选器on.where和having的区别和联系. 综述 在<SQL语句中过滤条件放在on和where子句中的区别和联系>中,介绍了多表关联SQL语 ...
- oracle sql语句中使用if逻辑
l在 SQL 语句中使用IF-THEN-ELSE 逻辑 l l使用两种方法: •CASE 表达式:SQL99的语法,类似Basic,比较繁琐 •DECODE 函数:Oracle自己的语法,类似Java ...
- SQL语句中的单引号处理以及模糊查询
为了防止程序SQL语句错误以及SQL注入,单引号必须经过处理.有2种办法: 1.使用参数,比如SELECT * FROM yourTable WHERE name = @name; 在C#中使用Sql ...
- Mybatis中动态SQL语句中的parameterType不同数据类型的用法
Mybatis中动态SQL语句中的parameterType不同数据类型的用法1. 简单数据类型, 此时#{id,jdbcType=INTEGER}中id可以取任意名字如#{a,jdbcType ...
随机推荐
- 关闭AutoCAD 2019快速访问工具栏的web和moblie保存文件功能
解决方法如下:1.先关闭CAD,再打开注册表编辑器:开始--运行--输入 regedit2.定位到 [HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R23. ...
- Zuul Read Time out 错误
只改application.yml文件即可: eureka: client: serviceUrl: defaultZone: http://localhost:7087/eureka/ server ...
- Javascript中的this(七)
一.为什么要用this 通过this可以在不同的上下文对象中重复使用函数 二.this是什么 this就是我们说的执行上下文(包含调用栈(哪里被调用).函数的调用方式.传入的参数等 ...
- 面试总结之Google
准备Google面试的总结 - 知乎 https://zhuanlan.zhihu.com/p/40866467 [不周山之算法与数据结构]壹 总览 | 小土刀 https://wdxtub.com/ ...
- tar -zxvf中的z是个什么鬼
习惯了tar -czvf和tar -zxvf.今天在本地用压缩软件7z打了一个tar包,在docker容器中用tar -zxvf怎么都解压不了,报错gzip: stdin: not in gzip f ...
- golang 常量的用法
1.Golang常量的用法 //常量的用法 var num int num =9 //1.常量声明的时候必须赋值 const tax int = 0 //2.常量值是无法修改的 //tax = 10 ...
- 结合源码分析 bubble 使用注意事项
使用dubbo时候要尽量了解源码,不然会很容易入坑. 一.服务消费端ReferenceConfig需要自行缓存 ReferenceConfig实例是个很重的实例,每个ReferenceConfig实例 ...
- vue属性
1. 图片地址: data:{ url:"https://www.baidu.com/img/bd_logo1.png"}, <img v-bind:src="ur ...
- easyUI的combotree的树的懒加载。
var tree=[{ "id":1, "text":"My Documents", "children&quo ...
- C#多线程学习笔记之(abort与join配合使用)
今天刚开始学多线程,尽管以前用过一点点,但是只是照着网上代码抄,没有真正理解,现在回过头来想研究研究,慢慢弄懂,下面就是我在网上所找资料的例子,相信大家都看过,做了小点改动 View Code nam ...