黑马程序员——Java基础-15--正则表达式
来源:互联网 发布:数据规范化方法 编辑:程序博客网 时间:2024/05/21 06:27
---------------------- android培训 、 java培训 、 期待与您交流! ----------------------
1、正则表达式: 单纯技术,很多语言使用这个技术。
就是用来操作 字符串数据的规则表达式。
规则:就是用一些符号组成,每个符号代表着特有的含义。
其实这些符号相当于对应着底层一段代码。
对外提供了符号是简化了操作。
弊端: 必须先学习这些符号。符号多了,阅读性会较差。
2、正则表达式常见的操作:
1、匹配
使用的是String类中的matchers方法
2.切割
使用String类中的split方法。
3、替换
使用的还是String中的replaceAll方法。
4、获取
将匹配的规则的内容获取出来
使用到正则表达式对象。Pattern
使用步骤:
1、先将正则表达式编译成Pattern对象
2、通过Pattern对象的matcher方法获取Matcher匹配器对象
3、通过匹配器对象的方法,将正则规则作用到字符串上以便操作。
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();
正则有字符串组成,正则表达式编译(功能)-正则对象
package cn.itcast.reg.p1.demo;import java.util.regex.Matcher;import java.util.regex.Pattern;public class RegDemo2 {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stub/** Pattern p = Pattern.compile("a*b");Matcher m = p.matcher("aaaaab");boolean b = m.matches();**/// checkPhone();// splitDemo();// replaceAllDemo();// getString();}********************************// 4. 演示获取public static void getString(){String str = "da jia zhu yi la ,ming tian fang jia la!";System.out.println(str);//1,定义规则。String reg = "\\b[a-z]{3}\\b";// 边界\\b//2,将规则编译成正则对象。Pattern p = Pattern.compile(reg);//3,通过正则对象获取匹配器对象,并和被操作的字符串相关联。Matcher m = p.matcher(str);// 要获取的结果不止一个,不能用matchers//4, 通过匹配器对象的方法对字符串进行规则的匹配。// boolean b = m.find(); //必须先找// System.out.println(b);// System.out.println(m.group());while(m.find()){System.out.println(m.start()+"..."+m.group()+"...."+m.end());} // 3...jia...6}****************************************// 3. 演示 替换public static void replaceAllDemo(){String str = "wer####tyuio***fgh";str = str.replaceAll("(.)\\1+", "@"); // wer@tyuio@fghstr = str.replaceAll("(.)\\1+", "$1");//wer#tyuio*fgh 第二个参数使用正则,后一个参数可以通过$数字引用前一个参数中的组,// str = "asdfghj345678905678kl;ertyuio";// 过滤手机信息,// str = str.replaceAll("\\d{5,}", "***");str = "15812345678";str = str.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");// 158****5678System.out.println(str);}******************************************// 2、 演示切割。。。。public static void splitDemo(){String str = "zhangsan.lisi.wangwu";String reg = "\\.";// .是正则表达的特殊符号,str="23 19 -1 9 56";reg=" +";//一次或多次str = "wer####tyuio***fgh";reg = "(.)\\1+"; // 处理叠词-- 复用先封装,复用第一组//正则封装-名字是组(含编号默认从1开始),String[] arr = str.split(reg);for(String s : arr){System.out.println(s);}}****************************/** 1、匹配演示 对手机号码进行校验。*/public static void checkPhone(){String tel = "18600001111";String reg = "1[358]\\d{9}";boolean b = tel.matches(reg);System.out.println(tel+":"+b);}}
3、 // 演示 网络爬虫
// 是一段小程序,专门负责获取指定规则的数据。
需求: 获取指定文件的特定信息,比如邮箱地址
1 读取文件
2 获取文件中的每一行字符串
3 对该行字符串中的特定信息进行规则的匹配,将符合规则都获取出来,并进行存。
package cn.itcast.reg.p2.test;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.URL;import java.net.URLConnection;import java.util.regex.Matcher;import java.util.regex.Pattern;public class NetBug {public static void main(String[] args) throws IOException {// TODO Auto-generated method stubreadMail();}public static void readMail() throws IOException {URL url = new URL("http://192.168.1.20:8080/index.jsp");// 爬服务器的邮箱URLConnection conn = url.openConnection();BufferedReader bufIn = new BufferedReader(new InputStreamReader(conn.getInputStream()));//如果不需要操作消息头,,不需要获取openConnection(); url.openStream();// BufferedReader bufr = new BufferedReader(new FileReader("c:\\mail.htm"));String line = null;//定义规则。mail规则。String reg = "[a-zA-Z0-9_-]+@\\w+(\\.\\w+)+";//外国的邮箱有-.@;域名支持-减号,不支持下划线。Pattern p = Pattern.compile(reg);while((line=bufIn.readLine())!=null){//匹配器通过流读的Matcher m = p.matcher(line);while(m.find()){System.out.println(m.group());// 不应该打印,存到集合里,在存到数据库}}bufIn.close();}}
---------------------- android培训 、 java培训 、 期待与您交流! ----------------------
---------------------- android培训 、 java培训 、 期待与您交流! ----------------------
1、正则表达式: 单纯技术,很多语言使用这个技术。
就是用来操作 字符串数据的规则表达式。
规则:就是用一些符号组成,每个符号代表着特有的含义。
其实这些符号相当于对应着底层一段代码。
对外提供了符号是简化了操作。
弊端: 必须先学习这些符号。符号多了,阅读性会较差。
2、正则表达式常见的操作:
1、匹配
使用的是String类中的matchers方法
2.切割
使用String类中的split方法。
3、替换
使用的还是String中的replaceAll方法。
4、获取
将匹配的规则的内容获取出来
使用到正则表达式对象。Pattern
使用步骤:
1、先将正则表达式编译成Pattern对象
2、通过Pattern对象的matcher方法获取Matcher匹配器对象
3、通过匹配器对象的方法,将正则规则作用到字符串上以便操作。
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();
正则有字符串组成,正则表达式编译(功能)-正则对象
package cn.itcast.reg.p1.demo;import java.util.regex.Matcher;import java.util.regex.Pattern;public class RegDemo2 {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stub/** Pattern p = Pattern.compile("a*b");Matcher m = p.matcher("aaaaab");boolean b = m.matches();**/// checkPhone();// splitDemo();// replaceAllDemo();// getString();}********************************// 4. 演示获取public static void getString(){String str = "da jia zhu yi la ,ming tian fang jia la!";System.out.println(str);//1,定义规则。String reg = "\\b[a-z]{3}\\b";// 边界\\b//2,将规则编译成正则对象。Pattern p = Pattern.compile(reg);//3,通过正则对象获取匹配器对象,并和被操作的字符串相关联。Matcher m = p.matcher(str);// 要获取的结果不止一个,不能用matchers//4, 通过匹配器对象的方法对字符串进行规则的匹配。// boolean b = m.find(); //必须先找// System.out.println(b);// System.out.println(m.group());while(m.find()){System.out.println(m.start()+"..."+m.group()+"...."+m.end());} // 3...jia...6}****************************************// 3. 演示 替换public static void replaceAllDemo(){String str = "wer####tyuio***fgh";str = str.replaceAll("(.)\\1+", "@"); // wer@tyuio@fghstr = str.replaceAll("(.)\\1+", "$1");//wer#tyuio*fgh 第二个参数使用正则,后一个参数可以通过$数字引用前一个参数中的组,// str = "asdfghj345678905678kl;ertyuio";// 过滤手机信息,// str = str.replaceAll("\\d{5,}", "***");str = "15812345678";str = str.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");// 158****5678System.out.println(str);}******************************************// 2、 演示切割。。。。public static void splitDemo(){String str = "zhangsan.lisi.wangwu";String reg = "\\.";// .是正则表达的特殊符号,str="23 19 -1 9 56";reg=" +";//一次或多次str = "wer####tyuio***fgh";reg = "(.)\\1+"; // 处理叠词-- 复用先封装,复用第一组//正则封装-名字是组(含编号默认从1开始),String[] arr = str.split(reg);for(String s : arr){System.out.println(s);}}****************************/** 1、匹配演示 对手机号码进行校验。*/public static void checkPhone(){String tel = "18600001111";String reg = "1[358]\\d{9}";boolean b = tel.matches(reg);System.out.println(tel+":"+b);}}
3、 // 演示 网络爬虫
// 是一段小程序,专门负责获取指定规则的数据。
需求: 获取指定文件的特定信息,比如邮箱地址
1 读取文件
2 获取文件中的每一行字符串
3 对该行字符串中的特定信息进行规则的匹配,将符合规则都获取出来,并进行存。
package cn.itcast.reg.p2.test;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.URL;import java.net.URLConnection;import java.util.regex.Matcher;import java.util.regex.Pattern;public class NetBug {public static void main(String[] args) throws IOException {// TODO Auto-generated method stubreadMail();}public static void readMail() throws IOException {URL url = new URL("http://192.168.1.20:8080/index.jsp");// 爬服务器的邮箱URLConnection conn = url.openConnection();BufferedReader bufIn = new BufferedReader(new InputStreamReader(conn.getInputStream()));//如果不需要操作消息头,,不需要获取openConnection(); url.openStream();// BufferedReader bufr = new BufferedReader(new FileReader("c:\\mail.htm"));String line = null;//定义规则。mail规则。String reg = "[a-zA-Z0-9_-]+@\\w+(\\.\\w+)+";//外国的邮箱有-.@;域名支持-减号,不支持下划线。Pattern p = Pattern.compile(reg);while((line=bufIn.readLine())!=null){//匹配器通过流读的Matcher m = p.matcher(line);while(m.find()){System.out.println(m.group());// 不应该打印,存到集合里,在存到数据库}}bufIn.close();}}
---------------------- android培训 、 java培训 、 期待与您交流! ----------------------
0 0
- 黑马程序员——Java基础-15--正则表达式
- 黑马程序员——java基础——正则表达式
- 黑马程序员——java基础——正则表达式
- 黑马程序员——java基础——正则表达式
- 黑马程序员——java基础——正则表达式
- 黑马程序员——java基础——正则表达式
- 黑马程序员——Java基础—正则表达式
- 黑马程序员——Java基础---正则表达式
- 黑马程序员-Java基础总结14——正则表达式
- 黑马程序员——Java基础---正则表达式
- 黑马程序员——java基础:正则表达式
- 黑马程序员——Java基础---正则表达式
- 黑马程序员——java基础--正则表达式
- 黑马程序员——Java基础-----正则表达式
- 黑马程序员——Java基础->正则表达式
- 黑马程序员——Java基础---正则表达式
- 黑马程序员——java基础之正则表达式
- 黑马程序员——Java基础-----正则表达式
- 函数
- URLStream测试
- apache启用rewrite重写模块配置伪静态
- libvirt之virsh代码分析
- Swift 教程入门(中文版)
- 黑马程序员——Java基础-15--正则表达式
- greenDAO
- WiFi共享精灵=免费wifi+……
- 赵雅智_使用SQLiteDatabase提供的增删改查方法及事务
- DataGridView ——管理员对用户的那点操作
- Swift之 ? 和 !
- 解决Android4.4 Widget之AppWidgetHost.allocateAppWidgetId()返回-1
- storm中几个小技巧
- 命令式编程和声明式编程