一、正则表达式(一)规则 用于操作字符串数据 [abc] 包含a、b、c [^abc] 非包含a、b、c [a-zA-Z]字母大小写 [a-d[m-p]]a-d或m-p \d 数字 \D 非数字 \s 空白 \S 非空白 \w 单词字符 \W 非单词字符 + 1次或多次 * 0次或多次 (.)\\1+ 组的使用,叠词 String类的方法 matches(String reg); 匹配 split(String reg); 切割 replaceAll(String reg, String);替换 (二)替换电话号码//替换电话号码 public static void phoneNumber(){ String tel = "18310100822"; tel = tel.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2"); System.out.println(tel); } (三)匹配//匹配 public static void cMatcher(){ String str = "abc bb bcd ade bcrr"; //Pattern 正则类 Pattern p = Pattern.compile("\\b[a-z]{3}\\b"); // \b单词边界 Matcher m = p.matcher(str); while(m.find()){ String s = m.group(); System.out.println(s); } } (四)治口吃//治口吃 public static void kouchi(){ String str = "我我我要要要学知识识识识,能能帮助我我我我学习吗吗吗?"; str = str.replaceAll("(.)\\1+", "$1"); System.out.println(str); } (五)Ip地址排序//IP地址排序 public static void ipSort(){ String ip_str = "192.168.1.130 127.0.0.1 105.70.11.55 3.3.3.3"; //1. 补0 ip_str = ip_str.replaceAll("(\\d+)", "00$1"); //2. 每段保留3位 ip_str = ip_str.replaceAll("0*(\\d{3})", "$1"); //3. 切割 String[] ips = ip_str.split(" +"); //4. 比较 TreeSet<String> ts = new TreeSet<String>(); for(String ip: ips){ ts.add(ip); } //5. 去除每段前的0 String str = ""; for(String ip: ts){ str += ip.replaceAll("0*(\\d+)", "$1")+" "; } //5. 打印 System.out.println(str); } (六)校验Email//校验email public static void regEmail(){ String email = "zhoujian@sina.com"; boolean b = email.matches("\\w+@\\w+(\\.\\w+){1,3}"); System.out.println(b); //true } (七)网页爬虫//网页爬虫 public static void inteCrawler() throws IOException{ //网页爬虫:是在互联网上查找需要信息的程序,例如:爬邮箱 //1. 读取的信息 URL url = new URL("http://www.sina.com.cn"); BufferedReader bfr = new BufferedReader(new InputStreamReader(url.openStream())); //2. 对读取的信息进行匹配,从中获取需要的信息 String reg = "\\w+@\\w+(\\.\\w+)+"; Pattern p = Pattern.compile(reg); //3. 将符合条件的信息集中存储 List<String> list = new ArrayList<String>(); String line = null; while((line = bfr.readLine())!=null){ Matcher m = p.matcher(line); while(m.find()){ list.add(m.group()); } } System.out.println(list); }
|