zoukankan      html  css  js  c++  java
  • java 正则匹配空格字符串 正则表达式截取字符串

    java 正则匹配空格字符串 正则表达式截取字符串

    需求:从一堆sql中取出某些特定字符串:

    比如配置的sql语句为:"company_code = @cc and project_id = @pid ; update t set a = @aa,b=@bb,c=@cd,ttt=@ttt;update t2 set d=@bb";

    我要拿出所有的以@开头的作为变量,并且去重,则如下玩:

    ps:其中正则匹配空格是 “s+”

    public class Test {
        public static void main(String[] args) {
            //String input = "update t set a = @aa,b=@bb,c=@cd,ttt=@ttt;update t2 set d=@bb";
            String input = "company_code = @cc and project_id = @pid ; update t set a = @aa,b=@bb,c=@cd,ttt=@ttt;update t2 set d=@bb";
              
            String patternStr = "(\s*=\s*)|(\s*,\s*)|(\s*;\s*)|(\s+)";
            Pattern pattern = Pattern.compile(patternStr);
            String[] dataArr = pattern.split(input);
            Set<String> set = new TreeSet<String>();
            for (String str : dataArr) {
                System.out.println(str);
                if (str.startsWith("@")) {
                    str = str.replaceAll("@", "");
                    set.add(str);
                }
            }
            System.out.println(set);
        }

    [aa, bb, cc, cd, pid, ttt]输出如下:

    截图如下:

    后来又优化了一下,既然是找出以@开头的,那么再换一个正则:

    public class Tst {
         public static void main(String[] args) {
                //String input = "update t set a = @aa,b=@bb,c=@cd,ttt=@ttt;update t2 set d=@bb";
                String input = "company_code = $csc223@cc and project_id = @pid ; update t set a = @aa,b=@cd,c=@cd,ttt=@ttt;update t2 set d=@bb";
                  
                String regex = "@\w+\s?";
                //regex = "(\s*=\s*)|(\s*,\s*)|(\s*;\s*)|(\s+)";
                Pattern pattern = Pattern.compile(regex); 
                Matcher matcher = pattern.matcher(input); 
                Set<String> set = new TreeSet<String>();
                 
                while(matcher.find()){ 
                    set.add(matcher.group());
                } 
                System.out.println(set);
            }
    }

    2014年11月26日 16:50:31

    2015年 2月10日  23:43:45

    落雨

    394263788

  • 相关阅读:
    JavaScript 数组
    Function类型
    javascript面向对象(一)
    javascript变量的作用域
    登陆验证
    注册验证
    php类
    二叉搜索树的 查询最小值
    二叉 搜索树查找最大值
    二叉搜索树 中查找是否存在该值
  • 原文地址:https://www.cnblogs.com/ae6623/p/4416264.html
Copyright © 2011-2022 走看看