黑马程序员——27,正则表达式
2015-08-23 20:53
495 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
黑马程序员——27,正则表达式
一:正则表达式---->
有一定规则的表达式,用来操作字符串, 用一些特殊符号表示代码。可以简化代码编写,但是符号定义越多正则表达式越长阅读性差。一些正则表达式中常见的构造:
(为了方便起见我直接图片截取JDK的API)特别注意:\符号如果写在字符串中的话,因为其本身具备转义功能,所以要根据具体情况写一个还是两个反斜杠。
图1
图2
图3
二:匹配---->
String类中的boolean matches(String regex)方法,该方法把整个被操作字符串和规则做比较,符合条件返回true仿真返回false
三:切割---->
String类中的 String[] split(String regex)方法,该方法把被操作字符串按照规则切割成一组字符串数组。
四:替换---->
String类中的String replaceAll(Stringregex, String replacement) 方法,该方法把被操作字符串中的某部分按照规则替换成另外一部分,返回替换后的字符串。其中sop是打印方法。
特别的遇到叠词情况:
五:获取---->
1,调用Pattern类的静态方法compile把规则封装成Pattern对象
2,规则对象与被作用的字符串相关联,获取Matcher匹配器对象
3,调用匹配器对象的方法获取符合规则的子字符串
对邮箱验证,这种办法也可以用在网页爬虫中
六:网页爬虫---->
一般是这样的:用流来读取某个服务端的资源,然后通过上面的正则表达式的获取方法来获取实在存在的有效的邮箱。这个过程中需要用到java.io包所以要记得导相应的包。
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
黑马程序员——27,正则表达式
一:正则表达式---->
有一定规则的表达式,用来操作字符串, 用一些特殊符号表示代码。可以简化代码编写,但是符号定义越多正则表达式越长阅读性差。一些正则表达式中常见的构造:
(为了方便起见我直接图片截取JDK的API)特别注意:\符号如果写在字符串中的话,因为其本身具备转义功能,所以要根据具体情况写一个还是两个反斜杠。
图1
图2
图3
二:匹配---->
String类中的boolean matches(String regex)方法,该方法把整个被操作字符串和规则做比较,符合条件返回true仿真返回false
String s="59123846516"; String regex="[a-c2-5]\\d+"; //规则:首位只能是a到c或者2到5;后面跟着一个或者多个数字 sop(s.matches(regex));//打印方法 //规则是对整个字符串都有效的,所以考虑的时候要注意把整个字符串考虑进去
三:切割---->
String类中的 String[] split(String regex)方法,该方法把被操作字符串按照规则切割成一组字符串数组。
class Ze { public static void main(String[] args) { public static void splitDemo() { String s="火祸ee女哦平jjj我恩vvvbnya链管qwebvveO嘻嘻嘻LQSQEbv"; String regex="(.)\\1+"; //按照叠词完成切割,将规则封装到括号里就是组,出现的组都有编号,从1开始 //想要使用已有的组可以通过\n来使用,因为\在字符串中有转义含义所以\\n String[] str=s.split(regex) ; sop("str.length---"+str.length); for(String zhishi:str) { sop(zhishi); } } public static void sop(Object obj) { System.out.println(obj); } } } /* 该方法编译运行结果: str.length---6 火祸 女哦平 我恩 bnya链管qweb eO LQSQEbv */
四:替换---->
String类中的String replaceAll(Stringregex, String replacement) 方法,该方法把被操作字符串中的某部分按照规则替换成另外一部分,返回替换后的字符串。其中sop是打印方法。
// 举几个例子: String s="691dg238ghth465d16"; String regex="\\d+"; String newregex="#"; sop(s.replaceAll(regex,newregex));//把所有数字替换成#
特别的遇到叠词情况:
//把叠词替换成单字符 String s="ncaaaaaeihhhhrbvuwwgqjjivlqheeeeeeeeeeeeuv"; String regex="(.)\\1+";// 其中\\1表示在同一个字符串中获取第一组 String newregex="$1";//$1表示获取前一个规则中第一组 sop(s.replaceAll(regex,newregex));
五:获取---->
1,调用Pattern类的静态方法compile把规则封装成Pattern对象
2,规则对象与被作用的字符串相关联,获取Matcher匹配器对象
3,调用匹配器对象的方法获取符合规则的子字符串
import java.util.regex.*; import java.util.*; class Ze2 { public static void main(String[]args) { huoqu(); } public static void huoqu() { String s="wo shggfi yiii gke reqdewfqrgn,er qhyjeje wdco heOPDnyGTHou li qu. "; String reg="\\b\\w{2}\\b";//规则 \b为单词边界 //把规则封装成对象 Pattern pa=Pattern.compile(reg); //把规则对象与被作用的字符串关联起来,获取匹配器对象 Matcher ma= pa.matcher(s); //sop(ma.matches());//matches方法是把被作用的字符串整体与规则进行比较 while(ma.find())//find按照规则来在被作用的字符串中寻找符合条件的子字符串 { sop(ma.group());//group返回符合条件的子字符串 } /* 调用Matcher类对象的方法时候可以看做里面有一个指针, 如果先调用matches方法时被操作的字符串不符合规则,那么 接着调用find方法时,指针从中断的地方开始走 */ } public static void sop(Object obj) { System.out.println(obj); } } /* 该方法编译运行结果: wo er li qu */
对邮箱验证,这种办法也可以用在网页爬虫中
String s="mpsqudw1112@qq.com.cn"; String reg="\\w+@\\w+(\\.\\w+)+"; sop(s.matches(reg));
六:网页爬虫---->
一般是这样的:用流来读取某个服务端的资源,然后通过上面的正则表达式的获取方法来获取实在存在的有效的邮箱。这个过程中需要用到java.io包所以要记得导相应的包。
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
相关文章推荐
- 黑马程序员 --- OC中的类
- 华为数字芯片工程师实习生面试全过程
- 黑马程序员_java基础第一部分
- 剑指offer面试题18-树的子结构
- 黑马程序员—IOS加强视频—@description方法
- 黑马程序员—IOS加强视频—分类
- 黑马程序员----Java中的IO流学习笔记1
- 黑马程序员_关于API1.5新特性之枚举
- 剑指offer面试题17-合并两个排序的链表
- 剑指offer面试题16-反转链表
- 黑马程序员----IO流以及文件的操作
- 黑马程序员——Java基础正则表达式、反射
- 黑马程序员-----Java之你不得不知道的排序
- 黑马程序员------关于分布式
- 黑马程序员-[OC]学习之旅-block和protocol的概念及使用
- 黑马程序员------关于有效的性能调优的一些建议
- 关于内存的面试题
- 黑马程序员_反射中常用的方法笔记小结
- 一道hadoop面试题
- 黑马程序员--面向对象设计