day50-正则表达式01

正则表达式015.1正则表达式的作用

正则表达式的便利
在一篇文章中,想要提取相应的字符,比如提取文章中的所有英文单词,提取文章中的所有数字等 。
  1. 传统方法是:使用遍历的方式,对文本中的每一个字符进行ASCII码的对比,如果ASCII码处于英文字符的范围,就将其截取下来,再看后面是否有连续的字符,将连续的字符拼接成一个单词 。这种方式代码量大,且效率不高 。
  2. 使用正则表达式
package li.regexp;import java.util.regex.Matcher;import java.util.regex.Pattern;//体验正则表达式的便利public class Regexp_ {public static void main(String[] args) {//假设有如下文本String content = "1995年,互联网的蓬勃发展给了Oak机会 。业界为了使死板、单调的静态网页能够“灵活”起来," +"急需一种软件技术来开发一种程序,这种程序可以通过网络传播并且能够跨平台运行 。于是,世界各大IT企" +"业为此纷纷投入了大量的人力、物力和财力 。这个时候,Sun公司想起了那个被搁置起来很久的Oak,并且" +"重新审视了那个用软件编写的试验平台,由于它是按照嵌入式系统硬件平台体系结构进行编写的,所以非常" +"小,特别适用于网络上的传输系统,而Oak也是一种精简的语言,程序非常小,适合在网络上传输 。Sun公" +"司首先推出了可以嵌入网页并且可以随同网页在网络上传输的Applet(Applet是一种将小程序嵌入到网" +"页中进行执行的技术),并将Oak更名为Java 。5月23日,Sun公司在Sun world会议上正式发布Java和" +"HotJava浏览器 。IBM、Apple、DEC、Adobe、HP、Oracle、Netscape和微软等各大公司都纷纷停止" +"了自己的相关开发项目,竞相购买了Java使用许可证,并为自己的产品开发了相应的Java平台 。";String content2 = "无类域间路由(CIDR,Classless Inter-Domain Routing)地址根据网络拓扑来分配,可以" +"将连续的一组网络地址分配给一家公司,并使整组地址作为一个网络地址(比如使用超网技术),在外部路由表上" +"只有一个路由表项 。这样既解决了地址匮乏问题,又解决了路由表膨胀的问题 。另外,CIDR还将整个世界分为四" +"个地区,给每个地区分配了一段连续的C类地址,分别是:欧洲(194.0.0.0~195.255.255.255)、北美(19" +"8.0.0.0~199.255.255.255)、中南美(200.0.0.0~201.255.255.255)和亚太(202.0.0.0~203.2" +"55.255.255) 。这样,当一个亚太地区以外的路由器收到前8位为202或203的数据报时,它只需要将其放到通向亚" +"太地区的路由即可,而对后24位的路由则可以在数据报到达亚太地区后再进行处理,这样就大大缓解了路由表膨胀的问题";//正则表达式来完成// (1)先创建一个Pattern对象,模式对象,可以理解成就是一个正则表达式对象//Pattern pattern = Pattern.compile("[a-zA-Z]+");//提取文章中的所有英文单词//Pattern pattern = Pattern.compile("[0-9]+");//提取文章中的所有数字//Pattern pattern = Pattern.compile("([0-9]+)|([a-zA-Z]+)");//提取文章中的所有的英文单词和数字Pattern pattern = Pattern.compile("\\d+\\.\\d+\\.\\d+\\.\\d+");//提取文章中的ip地址// (2)创建一个匹配器对象// 理解:就是 matcher 匹配器按照pattern(模式/样式),到content文本中去匹配// 找到就返回true,否则就返回false(如果返回false就不再匹配了)Matcher matcher = pattern.matcher(content2);// (3)可以开始循环匹配while (matcher.find()) {//匹配到的内容和文本,放到 m.group(0)System.out.println("找到:" + matcher.group(0));}}}提取所有英文单词:
day50-正则表达式01

文章插图

day50-正则表达式01

文章插图

经验总结扩展阅读