正则表达式 传智播客学习

有了一点点小小成就,五子棋游戏的基本功能已经实现的差不多了,还需要进行部分代码优化,期待明天的到来,因为明天我就可以实现我一个梦想,那就是晚上自己开发的游戏,呵呵!学在其中,乐在其中!下午实在有些腰酸背痛,决定就近去爬山,经过商议决定去百望山森林公园,真的是好久没锻炼了,才两百多米的山爬完回来累的不行,不过也算是感受了一下大自然的风情,站在山顶的感觉真的很不错,看着山下风景,突然感觉自己好渺小,这座城市如此之大,何时何处才是我安身之处?努力,我相信在不远的未来,我相信我的选择。吃过晚饭,看着张孝祥老师的Servlet的视频,对Servlet进行了基础的预习。下面对今天的学习成果和大家分享。
1.什么是正则表达式
一个正则表达式,就是用某种模式去匹配一类字符串的一个公式。个人觉得就是一个字符构成的串,它定义了一个用来搜索匹配字符串的模式。
2.正则表达式在字符串中的应用
备注:由于基本规则比较简单,而且API中以及网络上都有就不详解了,下面主要总结下在字符串中的应用
正则表达式主要作用于字符串,功能有匹配,搜索,切割,替换
1) 匹配
这里主要通过String类的mathes方法实现,只要将定义好的正则表达式作为参数传入即可。
例:匹配字符串"123456789012345"是否是QQ号码
String qq = "123456789012345";
String qqreg = "[1-9]\\d{4,14}";
System.out.print(qq.matches(qqreg ));
2) 搜索
建立正则规则,将规则封装成对象(Pattern的compile),作用于字符串(Matcher),返回匹配器,利用匹配器作用字符串,找出需要的字符串)
例:取出字符串"ming tian wu zi qi jiu kai fa wan le !"两个字母的单词
String text = "ming tian wu zi qi jiu kai fa wan le !!";
String textreg = "\\b[a-z]{2}\\b";//取出两个字母组成的单词;
Pattern p = Pattern.compile(textreg);//将正则规则封装成对象。
Matcher m = p.matcher(text);//通过正则对象获取匹配器。意为:让规则作用到字符串上。while(m.find())
System.out.println(m.group());
3) 切割
通过split方法实现
例:将字符串


代码如下:

String str = "sazzdkqqqqlfooojsz";
String strreg = "(.)\\1+";//"\\.";

String[] arr = str.split(strreg);

for(String s : arr)
{
System.out.println("s="+s);
}

4) 替换
通过字符串的repalceAll方法实现
例:将"10.10.10.10 192.168.105.22 1.1.1.1 2.2.2.2 211.68.43.254"按网段存放
String ip = "10.10.10.10 192.168.105.22 1.1.1.1 2.2.2.2 211.68.43.254";
ip = ip.replaceAll("(\\d+)","00$1");//在每一段的前面补两个0.
ip = ip.replaceAll("0+(\\d{3})","$1"); //只保留每一段的最后三位。
String[] ipArr = ip.split(" ");
TreeSet<String> ts = new TreeSet<String>();//因为ip地址很多,需要使用容器存放,而且需要排序,TreeSet
for(String i : ipArr){ts.add(i);}
for(String i : ts){System.out.println(i.replaceAll("0*(\\d+)","$1"));}

3.常用正则表达式
1) 匹配空白行的正则表达式:\n\s*\r
2) 匹配首尾空白字符的正则表达式:^\s* ¦\s*$
3) 匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
4) 匹配网址URL的正则表达式:[a-zA-z]+://[^\s]*
5) 匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA- Z0-9_]{4,15}$
6) 匹配中国邮政编码:[1-9]\d{5}(?!\d)
7) 匹配身份证:\d{15} ¦\d{18}
匹配中文字符的正则表达式: [\u4e00-\u9fa5]

(0)

相关推荐

  • 正则表达式 传智播客学习

    有了一点点小小成就,五子棋游戏的基本功能已经实现的差不多了,还需要进行部分代码优化,期待明天的到来,因为明天我就可以实现我一个梦想,那就是晚上自己开发的游戏,呵呵!学在其中,乐在其中!下午实在有些腰酸背痛,决定就近去爬山,经过商议决定去百望山森林公园,真的是好久没锻炼了,才两百多米的山爬完回来累的不行,不过也算是感受了一下大自然的风情,站在山顶的感觉真的很不错,看着山下风景,突然感觉自己好渺小,这座城市如此之大,何时何处才是我安身之处?努力,我相信在不远的未来,我相信我的选择.吃过晚饭,看着张孝

  • 传智播客学习之JavaScript基础篇

    一.JavaScript与java的区别 1.JavaScript是Netscape公司的产品,Java是Sun公司的产品. 2.JavaScript是基于对象,Java是面向对象. 3.JavaScript只需解释就可以执行,Java需要先编译成字节码文件,再执行. 4.JavaScript是弱类型,Java是强类型. 小结:其实java与JavaScript除了名字上有些像以外,然后JavaScript借用了部分java思想外,其余别的几乎没有什么关系. 二.如何将JavaScript与Ht

  • 传智播客学习之java 反射

    此外,毕老师为我们讲解了反射机制,虽然以后我们在开发过程中,不一定会涉及反射,但是反射确实java一种强大的工具,它使我们能够创建灵活的代码,这些代码可以在运行时装配,无需在组件之间进行源代表链接.例如在Tomcat类加载器这种机制被很多框架所使用. 一.什么是反射 反射的概念是由Smith在1982年首次提出,主要是指程序可以访问.检测和修改本身状态行为的一种能力.反射是java程序开发语言的特征之一,它也允许运行中的 Java 程序对自身进行检查,或者说"自审",并能直接操作程序的

  • 传智播客java web 过滤器

    根本不利于使用,Servlet应该本是为简化工作而创造的啊!我当时觉得是我的设计框架产生了问题.第二天我便问方老师,确实是使用上有些问题.比如,显示访问计数,我把它单独写成了一个Servlet,什么地方需要它时,便由那个Servlet.include引用计数的Servlet.但这样总会产生一些问题和使用上的不便.比如include的Servlet必须使用相同的流,如果使用forward后任何输出都无效了. 方老师当时建议,把有些功能写到一起.但最后提到了过滤器,那时我便对过滤器产生了兴趣,今日也

  • javascript DOM编程实例(智播客学习)

    并给我们讲解了很多关于如何去学习DOM的方法,觉得真的是受益匪浅啊.下面就几个我觉得比较好的例子和大家分享一下. 1.二级连动下拉菜单(一级是省份,二级是城市,要求一级选中省份,二级城市对应出现) 步骤:1)基本框架(HTML):两个复选框,而第二个复选框里面开始应该是没有选项的,注意第一个下拉框会作为事件源,通过 onchange方法激发JavaScript中的功能实现部分. 复制代码 代码如下: <xmp> <select id="province" onchan

  • jqurey 学习笔记 传智博客佟老师附详细注释

    1 .写 js 的时候用 aptana ( IDE ),有 jquery 的代码提示.  把 code assist 里面的 jqurey1.3 选上就可以了. 2 .为一个元素增加事件的时候不要在 html 里加,在 js 中加. 不要写 <input type="button" onclick="xxx" id="id"> 要写成: document.getElementById("id").onclick =

  • jquery 学习笔记 传智博客佟老师附详细注释

    1 .写 js 的时候用 aptana ( IDE ),有 jquery 的代码提示.   把 code assist 里面的 jqurey1.3 选上就可以了. 2 .为一个元素增加事件的时候不要在 html 里加,在 js 中加. 不要写 <input type="button" onclick="xxx" id="id"> 要写成: document.getElementById("id").onclick

  • Python 爬虫实现增加播客访问量的方法实现

    一.序言: 世界 1024 程序猿节日不加班,闲着没事儿...随手写了个播客访问量爬虫玩玩,访问量过万不是事儿!!!每个步骤注释都很清晰,代码仅供学习参考! ---- Nick.Peng 二.所需环境: Python3.x 相关模块: requests.json.lxml.urllib.bs4.fake_useragent 三.增加Blog访问量代码如下: #!/usr/bin/env python # -*- coding: utf-8 -*- # @Author: Nick # @Date:

  • 利用正则表达式抓取博客园列表数据

    鉴于我在要完成的asp.net MVC 3 仿照博客园企业系统要用到测试数据,我自己输入太累,所以我就抓取了博客园的部分列表数据,还请dudu不要见怪. 在抓取博客园数据的时候采用了正则表达式,所以有不熟悉正则表达式的朋友可以参考相关资料,其实很容易掌握,就是在具体的实例中会花些时间. 现在我就来把我抓取博客园数据的过程叙述一下,如果有朋友有更好的意见,欢迎提出来. 要使用正则表达式抓取数据,首先就要创建一个正则表达式进行匹配,我推荐使用regulator,这个正则表达式工具,我们可以先使用这个

  • js实现图片轮播效果学习笔记

    本文实例为大家分享了js实现图片轮播效果的具体代码,供大家参考,具体内容如下 具体思路: 一.页面加载.获取整个容器.所有放数字索引的li及放图片列表的ul.定义放定时器的变量.存放当前索引的变量index 二.添加定时器,每隔2秒钟index递增一次.调用一次切换图片函数 提示: 1. index不能一直无限制的递增下去,需做判断 2.调用切换图片函数时需将递增之后的index作为参数传过去 三.定义图片切换函数 提示: 1.遍历所有放数字索引的li,将每个li上的类去掉.   2.根据传递过

随机推荐