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. INSERT INTO .. ON DUPLICATE KEY更新多行记录

    现在问题来了,如果INSERT多行记录, ON DUPLICATE KEY UPDATE后面字段的值怎么指定?要知道一条INSERT语句中只能有一个ON DUPLICATE KEY UPDATE,到底 ...

  2. 解决中64位Win7系统上PLSQL无法连接ORACLE的方法(PLSQL无法识别ORACLE_HOME的配置)

    最近新安装了64位的Win7系统,工作中需要用oracle数据库,而数据库是公司IT的DBA进行管理和维护的. 我们只需要连接上去进行使用就可以了,于是我就在自己的机器上安装了oracle clien ...

  3. reader

    http://git.oschina.net/jayqqaa12/abase-reader https://github.com/JustWayward/BookReader https://gith ...

  4. 【转】IT 圈里有哪些经常被读错的词?

    以下内容转至知乎,原文:http://www.zhihu.com/question/19739907?__nids__=5363833,5358751,5355121,5365018,5363846, ...

  5. mac上使用终端生成RSA公钥和密钥

    首先确保你的电脑上安装了openssl,一般mac系统安装后都会自动安装!怎么安装??.....请百度...... 安装命令如下: sudo apt-get install openssl 在你的任何 ...

  6. PS脚本获取网络适配器状态

    1. Get-WmiObject -Class Win32_NetworkAdapterConfiguration ` -filter "IPEnabled = $true" 2. ...

  7. H608B无线路由破解方法

    家里的无线路由送人了,准备重新买,今日一看,竟然自带的猫(ZTE H608B)有wifi天线和4个LAN口,想着是支持路由功能的,那必然就是从软件上做了手脚.搜索该型号发现没人刷openwrt或者to ...

  8. 怎么在阿里云服务器部署多个tomcat

    部署前准备: 1.到阿里云官网购买一台服务器 2.给阿里云服务器挂盘,阿里云有教程这里不讲解,自己看. Linux 系统挂载数据盘 视频:Linux服务器挂载数据盘 3.下载tomcat  http: ...

  9. Android使用的设计模式2——策略模式

    今天讲解一下策略模式,策略模式也是很常用的设计模式,对多种算法或者数据结构选择使用的情况下,经常会使用策略模式来管理这些算法.下面会简单讲解一下策略模式的概念和基本实现.然后结合Android里面的实 ...

  10. myeclipse9或myeclipse10安装svn的方法

    下载最新的SVN包   site-1.6.5.zip 从中解压出features与plugins文件夹,复制到C:\toBeInstalledSVN 里面,其它的*.xml文件不要 复制下列java代 ...