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

文章插图
提取所有数字:
day50-正则表达式01

文章插图
提取ip地址:
day50-正则表达式01

文章插图
正则表达式是处理文本的利器
  • 再提出几个问题
    • 在程序中如何验证用户输入的邮件信息是否符合电子邮件的格式?
    • 如何验证输入的电话号码是符合手机号格式?
为了解决上述问题 , java提供了正则表达式技术(regular expression / regexp),专门用于处理类似的文本问题 。简单地说,正则表达式是对字符串执行 模式匹配 的技术 。
5.2基本介绍
  • 介绍
  1. 一个正则表达式 , 就是用某种模式去匹配字符串的一个公式 。
    它们看上去奇怪而复杂,但经过练习后,你就会发现这些复杂的表达式写起来还是相当简单的 。而且,一旦弄懂它们,就能将数小时辛苦而且容易出错的文本处理工作缩短在几分钟甚至几秒内完成 。

    推荐阅读