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. vlan交换机的端口模式有哪几种

    一 端口类型1 ,Access用户模式2 ,Trunk链路模式3 ,Hybrid模式(跟Trunk很类似但比trunk高级)二 端口介绍2.1 ,Access类型端口:只允许默认vlan的以太网帧,也 ...

  2. Python单元测试框架之pytest 1 ---如何执行测试用例

    From: https://www.cnblogs.com/fnng/p/4765112.html 介绍   pytest是一个成熟的全功能的Python测试工具,可以帮助你写出更好的程序. 适合从简 ...

  3. 【java】之正则表达式摘要

    构造 匹配 字符 x 字符 x \\ 反斜线字符 \0n 带有八进制值 0 的字符 n (0 <= n <= 7) \0nn 带有八进制值 0 的字符 nn (0 <= n < ...

  4. 【转】non-blocking REST services with Spring MVC

    堵塞Controller Controller为单例: 非线程安全: 堵塞方式: 1个request对应1个处理Thread: @RestController public class Process ...

  5. elastic-job 新手指南&官网指南

    elastic-job 新手指南 Elastic-Job——分布式定时任务框架 官网帮助文档

  6. Hadoop+Hbas完全分布式安装部署

    Hadoop安装部署基本步骤: 1.安装jdk,配置环境变量. jdk可以去网上自行下载,环境变量如下: 编辑  vim  /etc/profile 文件,添加如下内容: export JAVA_HO ...

  7. win server 2008 R2 支持

    安装Microsoft Visual C++ 2010 可再发行组件包 (x64) vcredist_x64.exe 安装Microsoft .NET Framework 4 dotNetFx40_F ...

  8. java打印一下九九乘法表

    public class Multiplication { public static void main(String[] args) { printTable(); } // 打印九九乘法表 pu ...

  9. [UE4]寻找敌人

  10. (转)查询或修改iPhone的短信服务中心号码(iOS通用)

    有些时候会有提示你自己的iPhone无法发送短信,原因是没有设置短信中心号码,下面就介绍一下如何设置iPhone的短信中心号码和iPhone查看短信中心号码的方法.(iOS通用) iPhone的设置短 ...