import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern; class MyComparator implements Comparator<String>{ public int compare(String ip1, String ip2) {
Pattern p = Pattern.compile("\\d{1,3}");
Matcher m1 = p.matcher(ip1);
Matcher m2 = p.matcher(ip2);
while(m1.find()){
m2.find();
System.out.println(m1.group() + " " + m2.group());
int i1 = Integer.valueOf(m1.group());
int i2 = Integer.valueOf(m2.group());
if(i1 < i2) return -1;
else if(i1 > i2) return 1;
}
return 0;
} } public class RegexDemo { /**
* @param args
*/
public static void main(String[] args) {
/*
* 治疗口吃:"我我..我我....我我要要...要要..要要要要学学学...学学学学编编编...编编编编程程程..程..程程...程.程程"
* 变成“我要学编程”
* 1.替换 2.处理叠词
*/
String str="我我..我我....我我要要...要要..要要要要学学学...学学学学编编编...编编编编程程程..程..程程...程.程程";
str = str.replaceAll("\\.+", "");
str = str.replaceAll("(.)\\1+", "$1");
System.out.println(str);
/*
* ip地址的排序:
* 192.168.10.34 127.0.0.1 3.3.3。3 105.70.11.55
* 对应段的数字比较!
*
*/
//第一种方法,获取每一个字段的数字,数字之间进行比较
String[] ip = {"192.168.10.34", "127.0.0.1", "3.3.3.3", "105.70.11.55"};
Arrays.sort(ip, new MyComparator());
for(int i=0; i<ip.length; ++i)
System.out.println(ip[i]); //第二种方法,将每一个字段的长度都变成3位
String[] ip2 = {"192.168.10.34", "127.0.0.1", "3.3.3.3", "105.70.11.55"};
for(int i=0; i<ip2.length; ++i){
ip2[i] = ip2[i].replaceAll("(\\d+)", "00$1");//首先每一段都加上连个前导0
ip2[i] = ip2[i].replaceAll("0*(\\d{3})", "$1");//将每一段变成标准的3位
}
Arrays.sort(ip2);
for(int i=0; i<ip2.length; ++i){
ip2[i] = ip2[i].replaceAll("0*(\\d+)", "$1");//将每一段的数字还原!
System.out.println(ip2[i]);
}
/*
* 对邮件地址校验!
*/
String mail = "abc@sina.com.cn";
boolean bf = mail.matches("\\w+@\\w+(\\.\\w+)+");
System.out.println(mail + ":" + bf); String sr=" fsdfs.12345 ";
Pattern p = Pattern.compile("\\w+");
Matcher m = p.matcher(sr);
while(m.find()){
System.out.println(m.group());
}
/*
* 正则表达是实现ip地址的检验功能!
*/
String ip3 = null;
String ipRegex = "^(\\d|[1-9]\\d|1\\d*|2[0-4]\\d|25[0-5])(\\.\\1){3}$";
/*
* \\d|[1-9]\\d|1\\d*|2[0-4]\\d|25[0-5]
* 该段的数字只有一位的时候,两位数字的时候,三位数字的时候(1开头的和2开头的)
*/
Scanner scan = new Scanner(System.in);
while((ip3 = scan.nextLine()) != null){
if(ip3.matches(ipRegex)) System.out.println("True");
else System.out.println("false");
}
} }

java正则表达式小练习(IP地址检测、排序,叠词的处理,邮件地址的获取)的更多相关文章

  1. Java正则表达式—小应用—简易爬虫

         在上一篇中,学习了正则表达式的四个功能.即匹配.分割.替换.获取. 利用获取功能,可以实现简单的网页爬虫. 4,获取:将字符串中的符合规则的子串取出. 获取功能的操作步骤: 1,将正则表达式 ...

  2. java正则表达式获得html字符串中<img src>的src中的url地址

    /** * 得到网页中图片的地址 */ public static Set<String> getImgStr(String htmlStr) { Set<String> pi ...

  3. 海量数据处理利器之Hash——在线邮件地址过滤

    标题用了了海量数据(Massive datasets)而不用大数据(Big data).感觉大数据还是略微有点虚,来点实际的. 一.需求 现在我们需要设计一个在线过滤垃圾邮件地址的方案,我们的数据库里 ...

  4. java正则表达式提取地址中的ip和端口号

    由于我需要用到java正则表达式提取地址中的ip和端口号,所以我就写了一个demo,测试一下,下面是demo public class Test0810_1 { public static void ...

  5. Java 正则表达式学习总结和一些小例子

    从Java1.4起,Java核心API就引入了java.util.regex程序包,它是一种有价值的基础工具,可以用于很多类型的文本处理, 如匹配,搜索,提取和分析结构化内容. java.util.r ...

  6. Java 正则表达式的总结和一些小例子

    字符串处理是许多程序中非常重要的一部分,它们可以用于文本显示,数据表示,查找键和很多目的.在Unix下,用户可以使用正则表达式的强健功能实现这些 目的,从Java1.4起,Java核心API就引入了j ...

  7. JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用

    JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例, ...

  8. 通过java解析域名获得IP地址

    IP地址是Internet主机的作为路由寻址用的数字型标识,人不容易记忆.因而产生了域名(domain name)这一种字符型标识. DNS即为域名解析服务.在这里我们如果想通过java程序来解析域名 ...

  9. java代理ip有效检测

    java实现代理ip有效检测,依赖Apache的HttpClient   正式版:       /**        * 批量代理IP有效检测        *        * @param pro ...

随机推荐

  1. solr课程学习系列-solr服务器配置(2)

    本文是solr课程学习系列的第2个课程,对solr基础知识不是很了解的请查看solr课程学习系列-solr的概念与结构(1) 本文以windows的solr6服务器搭建为例. 一.solr的工作环境: ...

  2. 小白学数据分析----->付费用户生命周期研究

    付费用户其实存在一个付费周期转化的问题,直接指标可能就是付费渗透率的问题,然而在此背后其实还有更深入的问题.我们经常遇到的是推广渠道获得的新用户,且这批用户进入游戏的状态.其实在付费用户问题研究方面, ...

  3. c# 压缩文件

    递归实现压缩文件夹和子文件夹. using System; using System.Collections.Generic; using System.Linq; using System.Text ...

  4. Delphi 2 Unleashed (一) 介绍

    原书作者是作者是 Charles Calvert,国内翻译为<Delphi 2 程序设计大全>,由横空翻译组翻译,机械工业出版社1997年12月出版,看网上评论和介绍,该书是系统学习 De ...

  5. 分享一本Swift好书

    http://yuedu.baidu.com/ebook/6f6c3b1ef01dc281e43af000?pn=1&rf=http%3A%2F%2Fyuedu.baidu.com%2Febo ...

  6. Windows KB2984972安装后堵住了一个windows 7 桌面可以多个用户远程访问桌面的漏洞。

    之前网络上有方法可以实现2个用户同时使用一个windows 7,一个在终端,一个通过远程桌面. 安装了这个kb后,就无法同时登陆了,同一时间只有一个用户可以登陆windows 7

  7. 使用tcpcopy拷贝线上流量压测测试环境

    tcpcopy项目地址:https://github.com/session-replay-tools/tcpcopy 作者地址:http://blog.csdn.net/wangbin579 1:环 ...

  8. Linux下GCC和Makefile实例(从GCC的编译到Makefile的引入) 转

    http://www.crazyant.net/2011/10/29/linux%E4%B8%8Bgcc%E5%92%8Cmakefile%E5%AE%9E%E4%BE%8B%EF%BC%88%E4% ...

  9. 超棒的 15 款 Bootstrap UI 编辑器

    自从 2011 年 Mark Otto 和 Jacob Thornton 开发了  Bootstrap,我们第一次接触并熟知了 Bootstrap .这些都归功于  Twitter!从那以后,它就非常 ...

  10. 解决Visual Studio 调试时候不能直接访问.json后缀文件的问题

    Web.config中作如下配置: <system.webServer> <staticContent> <mimeMap fileExtension=".js ...