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语句中的引号内容的更多相关文章

  1. COMMENT方法 用于在生成的SQL语句中添加注释内容,

    COMMENT方法 用于在生成的SQL语句中添加注释内容,例如: $this->comment('查询考试前十名分数') ->field('username,score') ->li ...

  2. sql语句中包含引号处理方法

    1. 背景 在使用Python脚本向数据库导入日志文件时候,突然报错. 2. 解决思路 查看messages文件,发现有一条语句里包含单引号. 查看sql语句,是使用单引号标注str类型. 3. 得出 ...

  3. sql语句中charindex的用法 可用于截取字符串

    使用CHARINDEX和PATINDEX函数来搜索文字列和字符串.这两个函数是如何运转的,解释他们的区别.同时提供一些例子,通过这些例子,你可以可以考虑使用这两个函数来解决很多不同的字符搜索的问题. ...

  4. SQL点滴35—SQL语句中的exists

    原文:SQL点滴35-SQL语句中的exists 比如在Northwind数据库中有一个查询为 SELECT c.CustomerId,CompanyName FROM Customers c WHE ...

  5. SQL语句中过滤条件放在on和where子句中的区别和联系

    摘要: 介绍在多表关联SQL语句中,过滤条件放在on和where子句中的区别--inner join中没区别,外连接就不一样. 综述   蚂蚁金服的一道SQL面试题如下:SQL语句中,过滤条件放在on ...

  6. SQL语句中过滤条件放在on、where、having的区别和联系

    摘要:SQL语句中,过滤条件放在不同筛选器on.where和having的区别和联系. 综述   在<SQL语句中过滤条件放在on和where子句中的区别和联系>中,介绍了多表关联SQL语 ...

  7. oracle sql语句中使用if逻辑

    l在 SQL 语句中使用IF-THEN-ELSE 逻辑 l l使用两种方法: •CASE 表达式:SQL99的语法,类似Basic,比较繁琐 •DECODE 函数:Oracle自己的语法,类似Java ...

  8. SQL语句中的单引号处理以及模糊查询

    为了防止程序SQL语句错误以及SQL注入,单引号必须经过处理.有2种办法: 1.使用参数,比如SELECT * FROM yourTable WHERE name = @name; 在C#中使用Sql ...

  9. Mybatis中动态SQL语句中的parameterType不同数据类型的用法

    Mybatis中动态SQL语句中的parameterType不同数据类型的用法1. 简单数据类型,    此时#{id,jdbcType=INTEGER}中id可以取任意名字如#{a,jdbcType ...

随机推荐

  1. 关闭AutoCAD 2019快速访问工具栏的web和moblie保存文件功能

    解决方法如下:1.先关闭CAD,再打开注册表编辑器:开始--运行--输入 regedit2.定位到 [HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R23. ...

  2. Zuul Read Time out 错误

    只改application.yml文件即可: eureka: client: serviceUrl: defaultZone: http://localhost:7087/eureka/ server ...

  3. Javascript中的this(七)

    一.为什么要用this      通过this可以在不同的上下文对象中重复使用函数 二.this是什么      this就是我们说的执行上下文(包含调用栈(哪里被调用).函数的调用方式.传入的参数等 ...

  4. 面试总结之Google

    准备Google面试的总结 - 知乎 https://zhuanlan.zhihu.com/p/40866467 [不周山之算法与数据结构]壹 总览 | 小土刀 https://wdxtub.com/ ...

  5. tar -zxvf中的z是个什么鬼

    习惯了tar -czvf和tar -zxvf.今天在本地用压缩软件7z打了一个tar包,在docker容器中用tar -zxvf怎么都解压不了,报错gzip: stdin: not in gzip f ...

  6. golang 常量的用法

    1.Golang常量的用法 //常量的用法 var num int num =9 //1.常量声明的时候必须赋值 const tax int = 0 //2.常量值是无法修改的 //tax = 10 ...

  7. 结合源码分析 bubble 使用注意事项

    使用dubbo时候要尽量了解源码,不然会很容易入坑. 一.服务消费端ReferenceConfig需要自行缓存 ReferenceConfig实例是个很重的实例,每个ReferenceConfig实例 ...

  8. vue属性

    1. 图片地址: data:{ url:"https://www.baidu.com/img/bd_logo1.png"}, <img v-bind:src="ur ...

  9. easyUI的combotree的树的懒加载。

    var tree=[{    "id":1,    "text":"My Documents",    "children&quo ...

  10. C#多线程学习笔记之(abort与join配合使用)

    今天刚开始学多线程,尽管以前用过一点点,但是只是照着网上代码抄,没有真正理解,现在回过头来想研究研究,慢慢弄懂,下面就是我在网上所找资料的例子,相信大家都看过,做了小点改动 View Code nam ...