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. Hello.class所在路径下, 输入命令:java Hello.class,会出现什么结果,为什么?

    所在路径下, 输入命令:java Hello.class: 因为DOS没有规定路径,所有么有在默认路径下找到Hello.class文件,导致提示 错误: 找不到或无法加载主类 Hello.class.

  2. Inno setup 安装*.inf文件_示例

    nno setup 调用*.Inf文件的条目区段名称_示例 首先自己编写一个INF文件来供 Inno setup 进行测试: ;复制以下代码到记事本然后另存为123.inf .然后把123.inf文件 ...

  3. git stash恢复

    今天下午在使用Git命令进行代码管理时,因为自己一时疏忽直接把自己一天的劳动成果给弄丢了,这还了得,吓死宝宝了.真的,相信有代码丢失的朋友肯定能体会我当时的心情,不能体会我心情的那就祝你们也丢次代码, ...

  4. WPA-PSK无线网络破解原理及过程(转)

    本文将主要讲讲WPA-PSK类型的无线网络安全问题,首先我们看下802.11协议相关的基础知识. 802.11常见的几种认证方式: 1.不启用安全‍‍ ‍‍2.WEP‍‍ ‍‍3.WPA/WPA2-P ...

  5. Apache Solr查询语法(转)

    查询参数 常用: q - 查询字符串,必须的. fl - 指定返回那些字段内容,用逗号或空格分隔多个. start - 返回第一条记录在完整找到结果中的偏移位置,0开始,一般分页用. rows - 指 ...

  6. (转)TRANSFORM_TEX详解

    原创文章如需转载请注明:转载自风宇冲Unity3D教程学院 特别讲:常见问题回答   本讲会陆续补充一些问题的解答. 问: (1) TRANSFORM_TEX是做什么的 (2)float4 _Main ...

  7. android 平台搭建

    直接到官网下载 http://developer.android.com/sdk/index.html?utm_source=weibolife

  8. java代码实现如何获取当前经纬度?(安卓的话可以用GPS取)

    import android.app.Activity; import android.os.Bundle; import android.location.*; import android.con ...

  9. WindowsPhone-GameBoy模拟器开发六--[转]指令系统实现必读:补码

    网上有同行写了些好文章,在此就不现丑了,贴上连接,放在这里为了补充系列的完整性 计算机为什么选用二进制补码 为什么补码重要?因为计算机中内存.寄存器里面存的数都是用补码表示的!

  10. 《STL系列》之vector原理及实现

    最近忙得蛋疼,但还是想写点属于自己的东西.也不知道写点啥,最后决定试着自己实现STL中常用的几个集合,一来加深自己对STL的理解,二来看看自己是否有这个能力实现.实现目标就是:1能和STL兼容:2最大 ...