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'

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • papa曾是少年,现在有点油腻。 对话不到两句,“长得好看伐”作结。 papa曾是少年,凌晨总会在线。 问他在做什...
    林有鹿啊阅读 174评论 0 0
  • 此系列更新《Python Real World Data Science》的阅读摘记,每周六更新。 全书介绍Pyt...
    四碗饭儿阅读 271评论 0 0
  • 在5月27日至6月14日,我代理了一个45人的线上学习班,期间经历,非常丰富,简单总结如下: 一班级做的感觉还可以...
    海蓝蓝_4f9e阅读 577评论 0 0