700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > java 正则 空格_java 正则匹配空格字符串 正则表达式截取字符串

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

时间:2018-09-19 04:58:22

相关推荐

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 classTest {public static voidmain(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=pile(patternStr);

String[] dataArr=pattern.split(input);

Set set = new TreeSet();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 classTst {public static voidmain(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 =pile(regex);

Matcher matcher=pattern.matcher(input);

Set set = new TreeSet();while(matcher.find()){

set.add(matcher.group());

}

System.out.println(set);

}

}

11月26日 16:50:31

2月10日 23:43:45

落雨

394263788

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。