javaseday31补充2(正则表达式 基本操作 小练习 小爬虫)
来源:互联网 发布:指派问题的匈牙利算法 编辑:程序博客网 时间:2024/06/03 20:03
/* * 正则表达式 * 正则表达式主要用于操作字符串数据 * 通过一些特定的符号来体现 * 所以我们为了掌握正则表达式 必须要学习一些符号 * 虽然简化了但是阅读性变差了 */public class RegexDemo01 { public static void main(String[] args) { String qq="54564651";// checkQQ(qq); String regex = "[1-9][0-9]{4,14}";//正则表达式大括号控制次数// boolean b = qq.matches(regex);// System.out.println(qq+":"+b); String str ="ad"; String reg = "ao?d";//a和d中间出现一次或不出现没有d也会出错 boolean b = str.matches(reg); System.out.println(str+":"+b); } /* * 定义一个功能对QQ号进行校验 * 长度是5~15 只能是数字 0不能开头 * */ private static void checkQQ(String qq) { int len = qq.length(); if(len>=5 &&len<=15) { if(!qq.startsWith("0")) { try { long l = Long.parseLong(qq); System.out.println(qq+"正确"); } catch (NumberFormatException e) { System.out.println(qq+"含有非法字符"); e.printStackTrace(); } }else { System.out.println(qq+"不能0开头"); } }else { System.out.println(qq+"长度错误"); } }}
/* * 正则表达式对字符串的常见操作 * 1、匹配 * 其实使用的就是String类中的matches()方法 * 2、切割 * 其实使用的就是String类中的split()方法 * 3、替换 * 其实使用的就是String类中的replaceAll()方法 * 4、获取 */ functionDemo04(); } /* * 获取 将正则规则进行对象的封装 * Pattern p = Pattern.compile("a*b"); * 通过正则对象的matches方法字符串相关联 获取要对字符串操作的匹配器对象matcher * Matcher m = p.matcher("aaaaab"); * 通过matcher匹配器对象的方法对字符串进行操作 * boolean b = m.matches(); */ private static void functionDemo04() { String str = "da jia hao , ni hao ming "; String regex = "\\b[a-z]{3}\\b";//\\b是单词边界词两边 //1、将正则封装成对象 Pattern p = Pattern.compile(regex); //2、通过正则对象获取匹配器对象 Matcher m = p.matcher(str); //使用Matcher对象的方法对字符串进行操作 //既然要获取3个字母组成的单词 查找 find() while(m.find()) { System.out.println(m.group());//获取匹配的子序列 System.out.println(m.start()+":"+m.end());//获取角标 } } /* * 替换 */ private static void functionDemo03() { String str = "zhangsanmmmmmmzhaoliuddddddddwangwu"; str = str.replaceAll("(.)\\1+", "$1");//用美元符号获取前一个参数的正则 获取被叠的词 System.out.println(str); String tel ="15072752341"; tel = tel.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");//保留1、2组替换中间4个 System.out.println(tel); } /* * 切割 * 组 ((A)(B(C)))从第一个括号开始数 没括号默认为第0组 即表达式 */ private static void functionDemo02() { String str = "zhangsanmmmmmmzhaoliuddddddddwangwu"; //切割叠词 String [] names = str.split("(.)\\1+");//写上小括号会自动进行编号 封装形式是组 第一组第二组...// String[] names = str.split("\\.");//一开始.是任意字符 \.取消特殊含义\\.用.来切割// String[] names = str.split(" +");//多个空格就挂了 要加+表示出现多次 for(String name:names) { System.out.println(name); } } /* * 匹配 */ private static void functionDemo01() { //匹配手机号码是否正确 String tel = "15050505932"; String regex = "1[358]\\d{9}";//用转义\把\转义成一般的\形成正则规则 boolean b = tel.matches(regex); System.out.println(tel+":"+b); }
public static void main(String[] args) { /* * 1、治疗口吃 我我我我我要...要要要....学学学学..编编程程 * 2、对ip地址排序 * 3、对邮件地址校验 */// test_01(); test_03(); } /* * 对邮件地址校验 */ private static void test_03() { String mail = "abc@qq.com"; String regex ="[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]{1,3}){1,3}"; regex = "\\w+@\\w+(\\.\\w+)+";//1@1.c也能通过校验 boolean b = mail.matches(regex); System.out.println(mail+":"+b); } /* * ip地址排序 * 192.168.1.1 127.0.0.1 3.1.1.1 51.11.1.5 */ private static void test_02() { String ip_str ="192.168.1.1 127.0.0.1 3.1.1.1 51.11.1.5"; //1、为了让ip可以按照字符串顺序比较 只要让ip的每一段的位数相同 //所以 补零 按照每一位所需最多0进行补充每一段都加2个0 ip_str = ip_str.replaceAll("(\\d+)", "00$1"); System.out.println(ip_str); //每一段保留数字3位 ip_str = ip_str.replaceAll("0*(\\d{3})", "$1"); System.out.println(ip_str); //1、将ip地址切出 String[] ips =ip_str.split(" +"); TreeSet<String> ts = new TreeSet<String>(); for(String ip :ips) { ts.add(ip); } for(String ip:ts) { System.out.println(ip.replaceAll("0*(\\d+)", "$1")); } } /* * 1、治疗口吃 * */ private static void test_01() { String str ="我我我我我要...要要要....学学学学..编编程程"; //1、将字符串中的点去掉用替换 str = str.replaceAll("\\.+", "");//replaceAll才是用正则 没有就是普通的对应替换 System.out.println(str); //2、替换叠词 str = str.replaceAll("(.)\\1+", "$1"); System.out.println(str); }
public static void main(String[] args) throws IOException { /* * 网页爬虫 其实是一个程序用于在互联网中去获取符合指定规则的数据 * 爬取邮箱地址 */ Test_02(); } private static void Test_02() throws IOException { //1、读取源文件 URL url = new URL("https://168.1.1.1/myweb/1.html"); BufferedReader br =new BufferedReader(new InputStreamReader(url.openStream())); //2、对读取的数据进行规则的匹配 从中获取符合规则的数据 String mail_regex = "\\w+@\\w+(\\.\\w+)+"; List<String> list = new ArrayList<String>(); Pattern p = Pattern.compile(mail_regex); String line = null; while((line=br.readLine())!=null) { Matcher m = p.matcher(line); while(m.find()) { list.add(m.group()); } } for(String mail :list) { System.out.println(mail); } } private static void Test_01() throws IOException { //1、读取源文件 BufferedReader br = new BufferedReader(new FileReader("mail.html")); //2、对读取的数据进行规则的匹配 从中获取符合规则的数据 String mail_regex = "\\w+@\\w+(\\.\\w+)+"; List<String> list = new ArrayList<String>(); Pattern p = Pattern.compile(mail_regex); String line = null; while((line=br.readLine())!=null) { Matcher m = p.matcher(line); while(m.find()) { list.add(m.group()); } } for(String mail :list) { System.out.println(mail); } //3、将符合规则的数据存储到集合中 }
阅读全文
0 0
- javaseday31补充2(正则表达式 基本操作 小练习 小爬虫)
- 正则表达式,模拟网络爬虫小例子
- 正则表达式运用之小爬虫
- 正则表达式及爬虫小案例
- #小练习 正则表达式匹配邮箱名称
- python正则表达式的小练习
- 正则表达式练习,网络爬虫
- Python 爬虫小程序(正则表达式的应用)
- python使用正则表达式编写网页小爬虫
- Java正则表达式—小应用—简易爬虫
- Java正则表达式—小应用—简易爬虫
- 正则分割小练习
- nodeJs爬虫小程序练习
- 正则表达式的威力4_小练习校验邮箱
- [Javascript Practice] 正则表达式 以及 其他小练习
- 【python小练习】百度图片小爬虫
- 正则表达式小谈
- 正则表达式小收集
- ASP.Net基础
- 来,让我们谈一谈 Normalize.css
- 堆排序
- 【Git】3.在Eclipse上安装Git插件
- 具有虚函数的类的大小 & VS2010命令行查看虚函数表和类内存布局
- javaseday31补充2(正则表达式 基本操作 小练习 小爬虫)
- 字符串移位 类似[LintCode]8
- 面向对象中的单例模式(PHP)
- 域服务篇 03. 组织单位 ❀ Windows Server 2016
- Java实现单向链表
- 【安卓学习笔记】JAVA基础Lesson7-继承
- 1016. 部分A+B (15)
- 排序算法之希尔排序
- ubuntu16.04配置Lamp环境(搭建linux+apache+mysql+php7环境)