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. Liferay7 BPM门户开发之32: 实现自定义认证登陆(定制Authentication Hook)

    第一步:修改liferay-hook.xml <?xml version="1.0"?> <!DOCTYPE hook PUBLIC "-//Lifer ...

  2. PowerManager和WakeLock的操作步骤

    ①  PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);通过 Context.getSystemServ ...

  3. 我用了13行代碼開發出来的PHP框架

    我只用13行代碼開發的PHP框架,如果您對框架不理解,不知道框架究竟幫您做了什麽事,可以下載此框架看一下, 另外如果您想開發自己的框架也可以由這個框架的思路進行擴展. 源碼下載地址:http://do ...

  4. 求二叉树的深度和宽度[Java]

    这个是常见的对二叉树的操作.总结一下: 设节点的数据结构,如下: class TreeNode { char val; TreeNode left = null; TreeNode right = n ...

  5. Python 之range 和 xrange

    我目前使用的版本是2.7.6 >>> help (range)Help on built-in function range in module __builtin__: range ...

  6. wordpress图片水印插件DX-Watermark

    DX-Watermark是一款功能齐全的wordpress图片水印插件,可以自动给上传的图片添加文本或者图片水印. 后台截图: 文本水印: 图片水印: 选项说明: 类型:可选择文本或图片水印两种类型, ...

  7. Mac 上面使用SVN的攻略

    参考网站: http://blog.csdn.net/q199109106q/article/details/8655204 SVN命令集: http://www.blogjava.net/jasmi ...

  8. navicat 链接linux 服务器上的数据库

  9. GitHub上排名前100的iOS开源库介绍(来自github)

    主要对当前 GitHub 排名前 100 的项目做一个简单的简介,方便初学者快速了解到当前 Objective-C 在 GitHub 的情况. 若有任何疑问可通过微博@李锦发联系我 项目名称 项目信息 ...

  10. Hadoop - Kylin On OLAP

    1.概述 Apache Kylin是一个开源的分布式分析引擎,提供SQL接口并且用于OLAP业务于Hadoop的大数据集上,该项目由eBay贡献于Apache. 2.What is Kylin 在使用 ...